@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,144 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: N-para-601-knowledge-streams
|
|
3
|
+
title: Knowledge Streams
|
|
4
|
+
type: note
|
|
5
|
+
author: paradigm
|
|
6
|
+
created: '2026-04-22'
|
|
7
|
+
updated: '2026-04-22'
|
|
8
|
+
tags:
|
|
9
|
+
- course
|
|
10
|
+
- para-601
|
|
11
|
+
- three-knowledge-streams
|
|
12
|
+
- work-log-paradigmwork-logdate
|
|
13
|
+
- learning-journal-paradigmagentsidjournal
|
|
14
|
+
symbols: []
|
|
15
|
+
difficulty: beginner
|
|
16
|
+
estimatedMinutes: 6
|
|
17
|
+
prerequisites: []
|
|
18
|
+
category: paradigm-core
|
|
19
|
+
origin: imported
|
|
20
|
+
source: courses/para-601.json
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## The Lore Split
|
|
24
|
+
|
|
25
|
+
Paradigm's original lore system stored everything — sessions, decisions, incidents, milestones — in a single stream of date-partitioned YAML entries. This worked well for small projects, but as projects grew, the single stream created problems. A standup bot pulling "what got done this week" had to filter through architectural decisions and incident postmortems. An agent looking for "what did I learn about JWT handling" had to parse session summaries. A new team member searching for "why did we choose Redis" had to wade through hundreds of entries.
|
|
26
|
+
|
|
27
|
+
v5.0 splits lore into three knowledge streams, each with a distinct audience, lifecycle, and storage location.
|
|
28
|
+
|
|
29
|
+
## Stream 1: Work Log — "What Got Done"
|
|
30
|
+
|
|
31
|
+
The work log is the team-facing record of completed work. It answers the question every standup asks: what did you do, what is left, what is blocking you?
|
|
32
|
+
|
|
33
|
+
**Storage:** `.paradigm/work-log/{date}/` — project-scoped, date-partitioned YAML files, one entry per work unit.
|
|
34
|
+
|
|
35
|
+
**Audience:** The team. Standup bots, sprint boards, and project managers consume work log entries.
|
|
36
|
+
|
|
37
|
+
**Lifecycle:** Ephemeral. Work log entries are relevant for days to weeks. After a sprint ends, they are historical context rather than active reference.
|
|
38
|
+
|
|
39
|
+
**Entry structure (`WorkLogEntry`):**
|
|
40
|
+
|
|
41
|
+
| Field | Required | Description |
|
|
42
|
+
|---|---|---|
|
|
43
|
+
| `id` | yes | Unique ID (e.g., `WL-security-001`) |
|
|
44
|
+
| `agent` | yes | Agent that performed the work |
|
|
45
|
+
| `timestamp` | yes | ISO 8601 timestamp |
|
|
46
|
+
| `summary` | yes | What was done |
|
|
47
|
+
| `outcome` | yes | pass, fail, partial, or blocked |
|
|
48
|
+
| `task_ref` | no | Ticket or issue reference (e.g., `ENG-142`) |
|
|
49
|
+
| `files_modified` | no | List of modified files |
|
|
50
|
+
| `symbols_touched` | no | Paradigm symbols touched |
|
|
51
|
+
| `next_steps` | no | What remains to be done |
|
|
52
|
+
| `blockers` | no | What is blocking progress |
|
|
53
|
+
| `duration_minutes` | no | How long the work took |
|
|
54
|
+
| `commit` | no | Git commit hash |
|
|
55
|
+
|
|
56
|
+
**MCP Tools:**
|
|
57
|
+
- `paradigm_work_log_record` — Record a work log entry. Requires `agent`, `summary`, and `outcome`. Supports optional `task_ref`, `files_modified`, `symbols_touched`, `next_steps`, `blockers`, `duration_minutes`, and `commit`.
|
|
58
|
+
- `paradigm_work_log_search` — Search work log entries by `agent`, `outcome`, `task_ref`, `symbol`, `dateFrom`, `dateTo`. Pass `summary: true` to get an aggregate summary instead of individual entries.
|
|
59
|
+
|
|
60
|
+
## Stream 2: Learning Journal — "What I Learned"
|
|
61
|
+
|
|
62
|
+
The learning journal is the agent-private record of insights, corrections, and patterns discovered during work. It answers the question: what should I remember for next time?
|
|
63
|
+
|
|
64
|
+
**Storage:** `~/.paradigm/agents/{id}/journal/` — user-scoped, agent-specific. The journal travels with the agent across projects because learning is not project-specific.
|
|
65
|
+
|
|
66
|
+
**Audience:** The agent itself (and optionally other agents if the insight is marked `transferable`).
|
|
67
|
+
|
|
68
|
+
**Lifecycle:** Durable. A pattern discovered today about JWT ordering is relevant months from now. Journal entries persist until explicitly archived.
|
|
69
|
+
|
|
70
|
+
**Entry structure (`JournalEntry`):**
|
|
71
|
+
|
|
72
|
+
| Field | Required | Description |
|
|
73
|
+
|---|---|---|
|
|
74
|
+
| `id` | yes | Unique ID (e.g., `LJ-2026-03-20-001`) |
|
|
75
|
+
| `agent` | yes | Agent who learned this |
|
|
76
|
+
| `timestamp` | yes | ISO 8601 timestamp |
|
|
77
|
+
| `trigger` | yes | What prompted the learning (7 trigger types) |
|
|
78
|
+
| `insight` | yes | The insight itself |
|
|
79
|
+
| `project` | yes | Project where this happened |
|
|
80
|
+
| `transferable` | yes | Whether this applies to other projects |
|
|
81
|
+
| `confidence_before` | no | Agent's confidence before (0.0-1.0) |
|
|
82
|
+
| `confidence_after` | no | Adjusted confidence after (0.0-1.0) |
|
|
83
|
+
| `pattern` | no | Extracted `LearningPattern` (id, applies_when, correct_approach) |
|
|
84
|
+
| `linked_work_log` | no | Work log entry that prompted this learning |
|
|
85
|
+
| `tags` | no | Tags for categorization |
|
|
86
|
+
|
|
87
|
+
Seven journal triggers capture distinct learning moments: `correction_received` (human corrected the approach), `confidence_miss` (agent was confident but wrong), `pattern_discovered` (new reusable pattern found), `debate_loss` (another agent's approach was chosen), `failure_analysis` (something broke and was analyzed), `human_feedback` (direct human assessment), and `self_reflection` (agent proactively recorded an insight).
|
|
88
|
+
|
|
89
|
+
**MCP Tools:**
|
|
90
|
+
- `paradigm_journal_record` — Record a journal entry. Requires `agent`, `trigger`, `insight`, `project`, and `transferable`. Supports optional `confidence_before`, `confidence_after`, `pattern`, `linked_work_log`, and `tags`.
|
|
91
|
+
- `paradigm_journal_search` — Search journal entries by `agent`, `trigger`, `project`, `transferable`, `tag`, `dateFrom`, `dateTo`. Pass `stats: true` (with `agent`) to get aggregate statistics.
|
|
92
|
+
|
|
93
|
+
## Stream 3: Team Decisions — "What We Decided"
|
|
94
|
+
|
|
95
|
+
Team decisions are the institutional record of choices made, rationale given, and alternatives rejected. They answer the question: why did we do it this way?
|
|
96
|
+
|
|
97
|
+
**Storage:** `.paradigm/decisions/` — project-scoped, not date-partitioned (decisions are referenced by topic, not by when they were made).
|
|
98
|
+
|
|
99
|
+
**Audience:** The entire team — current and future. New team members benefit most from decision records.
|
|
100
|
+
|
|
101
|
+
**Lifecycle:** Institutional. Decisions persist until explicitly superseded or deprecated. A decision made in month one remains authoritative until a newer decision replaces it.
|
|
102
|
+
|
|
103
|
+
**Entry structure (`TeamDecision`):**
|
|
104
|
+
|
|
105
|
+
| Field | Required | Description |
|
|
106
|
+
|---|---|---|
|
|
107
|
+
| `id` | yes | Unique ID (e.g., `TD-2026-03-20-001`) |
|
|
108
|
+
| `title` | yes | Decision title |
|
|
109
|
+
| `timestamp` | yes | ISO 8601 timestamp |
|
|
110
|
+
| `participants` | yes | Who participated (id, role, stance) |
|
|
111
|
+
| `decision` | yes | The decision itself |
|
|
112
|
+
| `rationale` | yes | Why this was chosen |
|
|
113
|
+
| `alternatives_considered` | no | What else was considered and why it was rejected |
|
|
114
|
+
| `symbols_affected` | no | Paradigm symbols affected |
|
|
115
|
+
| `status` | yes | active, proposed, superseded, deprecated, rejected |
|
|
116
|
+
| `tags` | no | Tags for categorization |
|
|
117
|
+
|
|
118
|
+
Participant stances capture the human dynamics: `proposed`, `supported`, `dissented`, `abstained`, `neutral`. Recording dissent is especially important — when a decision is revisited later, knowing who dissented and why saves time.
|
|
119
|
+
|
|
120
|
+
**MCP Tools:**
|
|
121
|
+
- `paradigm_decision_record` — Record a decision. Requires `title`, `decision`, `rationale`, and `participants`. Supports optional `alternatives_considered`, `symbols_affected`, `status`, and `tags`.
|
|
122
|
+
- `paradigm_decision_search` — Search decisions by `status`, `participant`, `symbol`, `tag`, `dateFrom`, `dateTo`. Pass `summary: true` for an aggregate view.
|
|
123
|
+
|
|
124
|
+
## Auto-Classification and the Companion-Lore Pattern
|
|
125
|
+
|
|
126
|
+
When recording via `paradigm_lore_record`, the `stream` parameter routes the entry to the correct knowledge stream. Setting `stream: 'auto'` triggers auto-classification based on the entry type. The `LORE_TYPE_TO_STREAM` mapping (defined in `packages/paradigm-mcp/src/types/knowledge-streams.ts`) defines how lore types map to streams:
|
|
127
|
+
|
|
128
|
+
- `agent-session` splits into work-log (what was done) and journal (what was learned)
|
|
129
|
+
- `incident` splits across work-log (what happened), journal (what we learned), and decisions (prevention strategy)
|
|
130
|
+
- `review` splits into work-log and journal
|
|
131
|
+
- `human-note` routes to the decisions stream (institutional context)
|
|
132
|
+
- `retro` and `insight` route to journal and decisions (learnings worth preserving)
|
|
133
|
+
- `milestone` routes to the decisions stream
|
|
134
|
+
|
|
135
|
+
Note that the `decision` lore *type* was removed in v6.0 — see PARA 501 — but the `decision` *stream* persists. The stream is fed by `paradigm_decision_record`, not by typed lore entries. The `LORE_TYPE_TO_STREAM` table still contains a residual `'decision': ['decision']` mapping for backward-compat with v1/v2 entries that get migrated to type `insight` on read; new writes never reach that branch.
|
|
136
|
+
|
|
137
|
+
### The Companion-Lore Pattern (v6.0)
|
|
138
|
+
|
|
139
|
+
When you call `paradigm_decision_record`, two things happen:
|
|
140
|
+
|
|
141
|
+
1. The canonical decision is written to `.paradigm/decisions/TD-*.yaml` (decisions stream).
|
|
142
|
+
2. A companion lore entry of type `insight` is auto-written to the lore timeline (journal stream), with a back-reference (`references.decision_id`) to the TD- ID.
|
|
143
|
+
|
|
144
|
+
This split lets the decision stay topic-addressable (search by symbol, status, participant) while the timeline still shows the moment it was made. Project newcomers can follow the timeline forward and see the major calls; researchers can query the decisions stream directly. The companion write is best-effort — a failure to write the companion lore never blocks the decision record.
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: N-para-601-learning-loop
|
|
3
|
+
title: The Learning Loop
|
|
4
|
+
type: note
|
|
5
|
+
author: paradigm
|
|
6
|
+
created: '2026-04-22'
|
|
7
|
+
updated: '2026-04-22'
|
|
8
|
+
tags:
|
|
9
|
+
- course
|
|
10
|
+
- para-601
|
|
11
|
+
- six-phase-learning-loop
|
|
12
|
+
- observation-without-adaptation
|
|
13
|
+
- v50-closes-the
|
|
14
|
+
symbols: []
|
|
15
|
+
difficulty: beginner
|
|
16
|
+
estimatedMinutes: 4
|
|
17
|
+
prerequisites: []
|
|
18
|
+
category: paradigm-core
|
|
19
|
+
origin: imported
|
|
20
|
+
source: courses/para-601.json
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Why Observation Without Adaptation Is Waste
|
|
24
|
+
|
|
25
|
+
Most development tools observe extensively but adapt almost never. Your linter sees thousands of issues. Your CI runs hundreds of tests. Your APM collects millions of metrics. All of this observation generates data — but data without a feedback loop is just noise with a storage bill.
|
|
26
|
+
|
|
27
|
+
Consider what happens in a typical AI-assisted session today. An agent modifies 8 files, creates a new service, adds routes to portal.yaml, and records a lore entry. The session ends. A week later, a different agent picks up related work and makes the same architectural mistake the first agent corrected mid-session. Why? Because the correction was never captured in a form that feeds back into future sessions. The observation happened (the lore entry recorded what was done), but the adaptation never occurred (the learning was not injected into the next agent's context).
|
|
28
|
+
|
|
29
|
+
This is the gap that Paradigm v5.0 closes.
|
|
30
|
+
|
|
31
|
+
## The DO-RECORD-ASSESS-LEARN-ADAPT-DO Cycle
|
|
32
|
+
|
|
33
|
+
The ambient coordination system implements a six-phase loop:
|
|
34
|
+
|
|
35
|
+
**DO** — An agent performs work: modifying files, calling tools, making decisions. Every action produces events in the event stream.
|
|
36
|
+
|
|
37
|
+
**RECORD** — The work is captured in three knowledge streams, each with a different audience and lifecycle. The work log records what got done (for the team). The learning journal records what the agent learned (for itself). Team decisions record what was decided and why (for the institution).
|
|
38
|
+
|
|
39
|
+
**ASSESS** — Events flow through attention filters. Each agent scores every event against its attention patterns — symbol matches, path matches, concept matches, signal matches. Events that exceed an agent's threshold trigger the next phase.
|
|
40
|
+
|
|
41
|
+
**LEARN** — Agents self-nominate contributions based on relevant events. A security agent notices a new route without a gate. A reviewer spots a pattern they have seen fail before. A tester sees a new component without test coverage. These nominations capture agent-specific insights triggered by project activity.
|
|
42
|
+
|
|
43
|
+
**ADAPT** — Learnings feed back into context. Journal insights from past sessions appear in the next session's prompt enrichment. Recent team decisions are surfaced to agents working on related symbols. Pending nominations are included in the active agent's context. The `paradigm_context_compose` tool assembles all of this into a coherent context section.
|
|
44
|
+
|
|
45
|
+
**DO** — The cycle repeats, but now the agent starts with richer context. It knows what was tried before, what the team decided, what the security agent flagged, and what patterns to avoid. Each iteration produces better outcomes because the loop is closed.
|
|
46
|
+
|
|
47
|
+
## What v5.0 Adds to Close the Loop
|
|
48
|
+
|
|
49
|
+
Before v5.0, Paradigm had the DO and RECORD phases (lore entries, .purpose files, portal.yaml). It had partial ASSESS capability through ripple analysis. But the LEARN and ADAPT phases were manual — a human had to read lore entries and tell the next agent what to watch out for.
|
|
50
|
+
|
|
51
|
+
v5.0 adds four capabilities that close the loop automatically:
|
|
52
|
+
|
|
53
|
+
1. **Knowledge Streams** — Lore is split into three streams with distinct storage, lifecycles, and audiences, enabling targeted adaptation.
|
|
54
|
+
2. **Event Stream** — Every tool call and file edit produces a structured event that flows through attention filters, enabling real-time assessment.
|
|
55
|
+
3. **Attention Scoring & Nominations** — Agents evaluate events against their attention patterns and self-nominate contributions, enabling machine-driven learning.
|
|
56
|
+
4. **Context Composition** — Journal insights, team decisions, and pending nominations are composed into the next session's context, enabling automatic adaptation.
|
|
57
|
+
|
|
58
|
+
## Context Engineering: Slim CLAUDE.md + On-Demand Guidance
|
|
59
|
+
|
|
60
|
+
The learning loop requires efficient context management. A 900-line CLAUDE.md that loads every time wastes tokens on content that may not be relevant to the current task. v5.0 implements a context engineering approach:
|
|
61
|
+
|
|
62
|
+
**Slim CLAUDE.md** — The base CLAUDE.md was reduced from ~856 lines to ~150 lines. It contains only the orientation information needed for every session: project overview, symbol system, conventions, commit format, and pointers to on-demand resources.
|
|
63
|
+
|
|
64
|
+
**On-Demand Guidance** — Twelve guidance resources are available via `paradigm://guidance/{topic}`. Topics include logging, portal protocol, MCP workflow, flows, orchestration, workspaces, university, calibration, checkpoints, navigation, component types, and troubleshooting. An agent loads only the guidance it needs for the current task.
|
|
65
|
+
|
|
66
|
+
**Agent Contributions** — Active agents inject their own context sections via `AgentContext.contributions`. A security agent might contribute a section listing recently added gates. A reviewer might contribute a section listing code smells found in the current PR. These contributions compose dynamically based on which agents are active.
|
|
67
|
+
|
|
68
|
+
The result is a context window that contains high-signal, task-relevant content rather than a static wall of instructions. The learning loop feeds relevant history into this context, making each session incrementally smarter than the last.
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: N-para-601-maestro-team-collab
|
|
3
|
+
title: 'Maestro: Visible Team Orchestration'
|
|
4
|
+
type: note
|
|
5
|
+
author: paradigm
|
|
6
|
+
created: '2026-04-22'
|
|
7
|
+
updated: '2026-04-22'
|
|
8
|
+
tags:
|
|
9
|
+
- course
|
|
10
|
+
- para-601
|
|
11
|
+
- maestro-is-a
|
|
12
|
+
- attributed-responses-nickname
|
|
13
|
+
- agent-profiles-carry
|
|
14
|
+
symbols: []
|
|
15
|
+
difficulty: beginner
|
|
16
|
+
estimatedMinutes: 6
|
|
17
|
+
prerequisites: []
|
|
18
|
+
category: paradigm-core
|
|
19
|
+
origin: imported
|
|
20
|
+
source: courses/para-601.json
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## From Synthesized Summaries to Attributed Conversations
|
|
24
|
+
|
|
25
|
+
Traditional multi-agent orchestration has a visibility problem. An orchestrator spawns three agents, waits for their responses, synthesizes a summary, and presents it to the human. The human sees one voice — the orchestrator's — and loses all nuance from individual agent perspectives. If the architect disagreed with the security agent, you would never know. If the builder had a novel approach, it gets flattened into a consensus view.
|
|
26
|
+
|
|
27
|
+
The Maestro model inverts this pattern. Every agent speaks for itself.
|
|
28
|
+
|
|
29
|
+
## The Maestro Model
|
|
30
|
+
|
|
31
|
+
Maestro is not a separate system — it is a behavior pattern for the active Claude Code session. When you ask a complex question that benefits from multiple perspectives, Maestro:
|
|
32
|
+
|
|
33
|
+
1. **Evaluates expertise** — Which agents have the highest confidence scores on the relevant symbols?
|
|
34
|
+
2. **Loads ambient context** — Recent team decisions, journal insights, pending nominations are injected into each agent's prompt via `buildProfileEnrichment()`.
|
|
35
|
+
3. **Spawns subagents** — Each agent receives its full profile: personality, expertise history, transferable patterns, notebook entries, and the ambient context.
|
|
36
|
+
4. **Presents attributed responses** — Each agent's response appears with a `[role]` or `[nickname (role)]` prefix. You see exactly who said what.
|
|
37
|
+
5. **Records to Symphony** — Each contribution is written as a Symphony message, creating a persistent team thread visible in Conductor and the Platform dashboard.
|
|
38
|
+
6. **Learns from feedback** — At session end, `paradigm_ambient_learn` adjusts each agent's attention threshold based on acceptance/dismissal rates.
|
|
39
|
+
|
|
40
|
+
## Agent Profiles and Nicknames
|
|
41
|
+
|
|
42
|
+
Each agent has an `.agent` YAML file in `~/.paradigm/agents/` with:
|
|
43
|
+
|
|
44
|
+
- **personality** — style (deliberate/rapid/exploratory/methodical), risk tolerance, verbosity
|
|
45
|
+
- **expertise** — per-symbol confidence scores, exponential moving average from lore
|
|
46
|
+
- **attention** — threshold, symbol/path/concept/signal subscriptions
|
|
47
|
+
- **collaboration** — default stance toward other agents, debate behavior
|
|
48
|
+
- **nomination** — urgency patterns, communication style
|
|
49
|
+
- **nickname** — optional display name (e.g., "George" for the architect)
|
|
50
|
+
- **benched** — if true, Maestro skips this agent entirely
|
|
51
|
+
|
|
52
|
+
The `nickname` field makes agents feel like team members. Terminal output shows `[George (architect)]` instead of the generic `[architect]`.
|
|
53
|
+
|
|
54
|
+
## Bench and Activate
|
|
55
|
+
|
|
56
|
+
Not every agent should speak on every task. The bench system lets you silence noisy agents:
|
|
57
|
+
|
|
58
|
+
- `paradigm agent bench security` — security agent stops nominating and is excluded from orchestration
|
|
59
|
+
- `paradigm agent activate security` — restore to active status
|
|
60
|
+
- `paradigm agent roster` — see who is active vs benched with stats
|
|
61
|
+
|
|
62
|
+
Benched agents are skipped in both `paradigm_orchestrate_inline` and the nomination engine's `processEvent`. Their profiles remain intact — bench is a pause, not a delete.
|
|
63
|
+
|
|
64
|
+
## Symphony Team Threads
|
|
65
|
+
|
|
66
|
+
Every orchestration creates a thread prefixed `thr-orch-`. Maestro writes each agent contribution as a Symphony message from the agent's identity (`{project}/{role}`). This creates:
|
|
67
|
+
|
|
68
|
+
- **Persistent record** — The team conversation survives session restarts
|
|
69
|
+
- **Conductor visibility** — The TeamThreadView shows messages with colored role prefixes
|
|
70
|
+
- **Platform dashboard** — The Team section displays the same thread in a browser
|
|
71
|
+
- **Recovery context** — Next session's handoff includes which agents contributed and what they said
|
|
72
|
+
|
|
73
|
+
## The Neverland Test
|
|
74
|
+
|
|
75
|
+
Named after the validation criteria in the spec, the Neverland test tracks whether agent learning actually works across sessions:
|
|
76
|
+
|
|
77
|
+
- **Sessions 1-3**: Agents accumulate — touching symbols, recording lore, discovering patterns
|
|
78
|
+
- **Sessions 4-5**: Maestro routes based on learned confidence scores
|
|
79
|
+
- **Sessions 6-10**: Accepted suggestions lower threshold (agent speaks more). Dismissed suggestions raise it (agent speaks less).
|
|
80
|
+
|
|
81
|
+
Measurable targets:
|
|
82
|
+
- By session 10, Maestro routes to the right agent >80% of the time
|
|
83
|
+
- Agent acceptance rate improves from ~50% (cold start) to >70%
|
|
84
|
+
|
|
85
|
+
Track progress with `paradigm_ambient_health` — returns per-agent stats and overall health status (cold-start → accumulating → calibrating → mature).
|
|
86
|
+
|
|
87
|
+
## Postflight Learning Loop
|
|
88
|
+
|
|
89
|
+
The postflight skill closes the feedback loop after every task:
|
|
90
|
+
|
|
91
|
+
1. **Step 8b** runs `paradigm_ambient_learn` for each contributing agent — adjusts attention thresholds based on accept/dismiss rates
|
|
92
|
+
2. Runs `paradigm_ambient_promote` — auto-promotes high-confidence journal patterns to the agent's notebook
|
|
93
|
+
3. Records contributions via Symphony if not already done during execution
|
|
94
|
+
|
|
95
|
+
This ensures every session makes agents incrementally smarter. The handoff skill captures agent performance summaries so the next session inherits this knowledge.
|
|
96
|
+
|
|
97
|
+
## The Teacher Model
|
|
98
|
+
|
|
99
|
+
The learning loop has a quality problem: the nomination engine only sees file paths, never content. Briefs like "review for consistency" get dismissed, which raises the agent's threshold, which silences the agent. The system learns to be *silent* instead of *better*.
|
|
100
|
+
|
|
101
|
+
The Teacher Model fixes this. Maestro (the active session) acts as a teacher who observes the full session and writes targeted feedback.
|
|
102
|
+
|
|
103
|
+
### Session Work Log
|
|
104
|
+
|
|
105
|
+
During each session, a running JSONL log at `.paradigm/events/session-log.jsonl` captures:
|
|
106
|
+
- **Agent contributions**: what each agent was asked to do (from orchestration)
|
|
107
|
+
- **User verdicts**: accepted / dismissed / revised, with the reason why
|
|
108
|
+
|
|
109
|
+
This is the data Maestro reads at postflight to write meaningful learning feedback.
|
|
110
|
+
|
|
111
|
+
### Postflight Learning Pass
|
|
112
|
+
|
|
113
|
+
At session end, Step 8b reads the session work log and writes journal entries per agent:
|
|
114
|
+
|
|
115
|
+
- **Accepted** → `human_feedback` trigger, confidence 0.85, extract the pattern that was confirmed correct
|
|
116
|
+
- **Dismissed** → `correction_received` trigger, confidence 0.4, explain what was wrong and what to do differently
|
|
117
|
+
- **Revised** → `correction_received` trigger, confidence 0.65, include the delta between proposal and actual
|
|
118
|
+
|
|
119
|
+
These journal entries include `pattern.applies_when` and `pattern.correct_approach` fields — the exact knowledge that gets promoted to notebooks.
|
|
120
|
+
|
|
121
|
+
### Training New Behaviors
|
|
122
|
+
|
|
123
|
+
The journal → notebook → `buildProfileEnrichment` pipeline is also how you teach agents new skills. If you say "documentor, also update CHANGELOG from now on," Maestro writes a journal entry. It promotes to a notebook entry. Next session, that knowledge is in the agent's context. No configuration needed.
|
|
124
|
+
|
|
125
|
+
## The Documentor Agent
|
|
126
|
+
|
|
127
|
+
The 6th core agent. Its sole job: maintain Paradigm metadata files after other agents finish their work.
|
|
128
|
+
|
|
129
|
+
- Always runs as the **final orchestration stage**
|
|
130
|
+
- Reviews what changed (git diff, session work log)
|
|
131
|
+
- Updates .purpose files, portal.yaml, symbol registrations
|
|
132
|
+
- Uses ONLY `paradigm_purpose_*`, `paradigm_portal_*`, and `paradigm_reindex` MCP tools
|
|
133
|
+
- Never modifies source code
|
|
134
|
+
- Relieves all other agents of Paradigm compliance
|
|
135
|
+
|
|
136
|
+
This separation of concerns means architect, builder, security, and reviewer can focus purely on their domain. The documentor handles the bookkeeping.
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: N-para-601-nominations-debates
|
|
3
|
+
title: Nominations & Debates
|
|
4
|
+
type: note
|
|
5
|
+
author: paradigm
|
|
6
|
+
created: '2026-04-22'
|
|
7
|
+
updated: '2026-04-22'
|
|
8
|
+
tags:
|
|
9
|
+
- course
|
|
10
|
+
- para-601
|
|
11
|
+
- nominations-are-structured
|
|
12
|
+
- four-urgency-levels
|
|
13
|
+
- five-nomination-types
|
|
14
|
+
symbols: []
|
|
15
|
+
difficulty: beginner
|
|
16
|
+
estimatedMinutes: 5
|
|
17
|
+
prerequisites: []
|
|
18
|
+
category: paradigm-core
|
|
19
|
+
origin: imported
|
|
20
|
+
source: courses/para-601.json
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Agents Self-Nominate Contributions
|
|
24
|
+
|
|
25
|
+
In the ambient model, agents do not push messages at each other. Instead, when an event exceeds an agent's attention threshold, the agent creates a **nomination** — a structured contribution that may or may not be surfaced to the human. Nominations are the bridge between passive observation and active participation.
|
|
26
|
+
|
|
27
|
+
The key insight is that not every observation deserves immediate attention. A nomination captures the agent's contribution in a structured format, and surfacing rules determine when and how to present it. This prevents the "every agent shouts at once" problem that plagues naive multi-agent systems.
|
|
28
|
+
|
|
29
|
+
## Nomination Anatomy
|
|
30
|
+
|
|
31
|
+
A nomination has 13 fields:
|
|
32
|
+
|
|
33
|
+
```typescript
|
|
34
|
+
interface Nomination {
|
|
35
|
+
id: string; // Unique ID
|
|
36
|
+
agent: string; // Nominating agent
|
|
37
|
+
relevance: number; // Attention score (0.0-1.0)
|
|
38
|
+
urgency: NominationUrgencyLevel; // critical, high, medium, low
|
|
39
|
+
type: NominationType; // warning, suggestion, question, offer, observation
|
|
40
|
+
brief: string; // 1-line summary
|
|
41
|
+
detail?: string; // Full contribution (shown on engage)
|
|
42
|
+
action_offered?: string; // Action the agent offers to take
|
|
43
|
+
evidence?: NominationEvidence[]; // Supporting evidence
|
|
44
|
+
triggered_by: string[]; // Event ID(s) that triggered this
|
|
45
|
+
timestamp: string; // ISO 8601
|
|
46
|
+
surfaced: boolean; // Whether shown to human
|
|
47
|
+
engaged?: boolean; // Whether human interacted
|
|
48
|
+
response?: string; // accepted, dismissed, deferred
|
|
49
|
+
}
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
The `brief` field is critical — it is the first (and possibly only) thing the human sees. A good brief is actionable and specific: "New POST /api/payments route lacks ^payment-authorized gate" rather than "Security concern detected."
|
|
53
|
+
|
|
54
|
+
The `detail` field expands on the brief with full reasoning, code references, and recommendations. It is shown only if the human engages with the nomination, saving context window space when the human dismisses or defers.
|
|
55
|
+
|
|
56
|
+
## Urgency Levels
|
|
57
|
+
|
|
58
|
+
Four urgency levels determine how aggressively a nomination is surfaced:
|
|
59
|
+
|
|
60
|
+
| Level | Meaning | Surfacing Rule |
|
|
61
|
+
|---|---|---|
|
|
62
|
+
| `critical` | Immediate action required — security vulnerability, data loss risk | Always surfaced immediately, interrupts if necessary |
|
|
63
|
+
| `high` | Should be addressed before session ends — missing gate, broken flow | Surfaced in the current batch, highlighted |
|
|
64
|
+
| `medium` | Worth knowing but not blocking — code smell, missing test | Surfaced if the human has not dismissed similar nominations recently |
|
|
65
|
+
| `low` | FYI — style suggestion, minor optimization opportunity | Batched and shown only if the human asks or at session end |
|
|
66
|
+
|
|
67
|
+
The surfacing rules are configurable via `SurfacingConfig`. A user who finds security nominations too frequent can set the security agent's `min_urgency` to `high`, silencing `medium` and `low` nominations from that agent.
|
|
68
|
+
|
|
69
|
+
## Nomination Types
|
|
70
|
+
|
|
71
|
+
Five types classify the nature of the contribution:
|
|
72
|
+
|
|
73
|
+
- **warning** — Something is wrong or risky (e.g., "Route without gate", "Aspect anchor drift detected")
|
|
74
|
+
- **suggestion** — An improvement opportunity (e.g., "Consider extracting this into a shared utility")
|
|
75
|
+
- **question** — The agent needs clarification (e.g., "Should this endpoint be public or require authentication?")
|
|
76
|
+
- **offer** — The agent volunteers to do something (e.g., "I can write the test suite for this component")
|
|
77
|
+
- **observation** — A neutral factual note (e.g., "This is the third time this pattern has been refactored")
|
|
78
|
+
|
|
79
|
+
The `action_offered` field is used with `offer` type nominations. When the human accepts an offer, the agent can proceed to take the offered action.
|
|
80
|
+
|
|
81
|
+
## Evidence
|
|
82
|
+
|
|
83
|
+
Nominations can include evidence to support their claims. Each `NominationEvidence` item can reference a file, a symbol, a pattern from the agent's notebook, specific line numbers, or a textual description.
|
|
84
|
+
|
|
85
|
+
Evidence transforms a nomination from opinion to argument. "This route needs a gate" is a suggestion. "This route needs a gate — see portal.yaml line 42 where all /api/payments routes require ^payment-authorized, and `#payment-service` has a documented aspect ~pci-compliance-required" is a compelling argument backed by project facts.
|
|
86
|
+
|
|
87
|
+
## Storage
|
|
88
|
+
|
|
89
|
+
Nominations and debates are stored as JSONL files alongside the event stream:
|
|
90
|
+
|
|
91
|
+
- `.paradigm/events/nominations.jsonl` — All nominations, append-only
|
|
92
|
+
- `.paradigm/events/debates.jsonl` — Detected debates (conflicting/complementary nomination groups)
|
|
93
|
+
|
|
94
|
+
## Debate Detection
|
|
95
|
+
|
|
96
|
+
When multiple agents nominate on the same event or overlapping symbols, a **debate** may form. Paradigm detects debates by checking for overlapping `triggered_by` event IDs or overlapping symbols across nominations within a time window.
|
|
97
|
+
|
|
98
|
+
A `Debate` has two types:
|
|
99
|
+
- **conflicting** — The nominations disagree (e.g., architect says "use SQL" while builder says "use NoSQL")
|
|
100
|
+
- **complementary** — The nominations agree but add different perspectives (e.g., security says "add gate" and tester says "add test for gate")
|
|
101
|
+
|
|
102
|
+
Debates are surfaced as a group rather than individual nominations, so the human sees the full picture. A debate includes:
|
|
103
|
+
- `topic` — What the debate is about (derived from overlapping symbols/events)
|
|
104
|
+
- `nominations` — IDs of the participating nominations
|
|
105
|
+
- `overlap_symbols` — Symbols that triggered grouping
|
|
106
|
+
- `overlap_events` — Events that triggered grouping
|
|
107
|
+
- `resolution` — How it was resolved (chosen nomination, reason, resolved by human or consensus)
|
|
108
|
+
|
|
109
|
+
## MCP Tools
|
|
110
|
+
|
|
111
|
+
**`paradigm_ambient_nominations`** — View pending nominations. Supports filtering by agent, urgency, type, and whether nominations have been surfaced. Returns nominations sorted by urgency (critical first) then by relevance score.
|
|
112
|
+
|
|
113
|
+
**`paradigm_ambient_engage`** — Engage with a nomination. Pass the nomination ID and a response (`accepted`, `dismissed`, `deferred`). If accepted, the nomination's `detail` and `evidence` are returned for the agent to act on. If dismissed, the nomination is marked as seen but not acted upon. If deferred, it is re-queued for later surfacing.
|
|
114
|
+
|
|
115
|
+
The engage tool creates a feedback signal — over time, the pattern of accepted vs dismissed nominations helps calibrate attention thresholds. An agent whose nominations are consistently dismissed may need a higher threshold.
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: N-para-701-agent-notebooks
|
|
3
|
+
title: 'Lesson 3: Agent Notebooks'
|
|
4
|
+
type: note
|
|
5
|
+
author: paradigm
|
|
6
|
+
created: '2026-04-22'
|
|
7
|
+
updated: '2026-04-22'
|
|
8
|
+
tags:
|
|
9
|
+
- course
|
|
10
|
+
- para-701
|
|
11
|
+
- notebook-entries-contain
|
|
12
|
+
- notebookentry-schema-id
|
|
13
|
+
- global-notebooks-paradigmnotebooks
|
|
14
|
+
symbols: []
|
|
15
|
+
difficulty: beginner
|
|
16
|
+
estimatedMinutes: 6
|
|
17
|
+
prerequisites: []
|
|
18
|
+
category: paradigm-core
|
|
19
|
+
origin: imported
|
|
20
|
+
source: courses/para-701.json
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## What Notebooks Are
|
|
24
|
+
|
|
25
|
+
Agent notebooks are curated snippet libraries distilled from experience. Where expertise scores track *how well* an agent knows a symbol, and transferable patterns track *general principles* the agent has learned, notebooks contain *specific, reusable knowledge* — code patterns, configuration snippets, troubleshooting procedures, and domain-specific techniques.
|
|
26
|
+
|
|
27
|
+
A notebook entry for the security agent might contain a specific JWT validation middleware pattern for Express v5. A notebook entry for Mika (designer) might contain a font pairing recommendation with rationale. A notebook entry for Atlas (devops) might contain a zero-downtime migration pattern for Supabase.
|
|
28
|
+
|
|
29
|
+
Notebooks bridge the gap between abstract principles ("always validate JWTs") and concrete implementation ("here is the exact middleware code that handles edge cases in Express v5").
|
|
30
|
+
|
|
31
|
+
## The NotebookEntry Schema
|
|
32
|
+
|
|
33
|
+
Every notebook entry follows the `NotebookEntry` interface:
|
|
34
|
+
|
|
35
|
+
```typescript
|
|
36
|
+
interface NotebookEntry {
|
|
37
|
+
id: string; // e.g., "nb-auth-pattern-001"
|
|
38
|
+
context: string; // When to apply this snippet
|
|
39
|
+
snippet: string; // The reusable code/knowledge
|
|
40
|
+
provenance: { // Where this came from
|
|
41
|
+
source: 'lore' | 'manual' | 'transfer';
|
|
42
|
+
loreEntryId?: string; // If promoted from lore
|
|
43
|
+
originProject?: string;
|
|
44
|
+
createdBy?: string;
|
|
45
|
+
};
|
|
46
|
+
appliedCount: number; // Times applied in orchestration
|
|
47
|
+
confidence: number; // 0.0-1.0
|
|
48
|
+
concepts: string[]; // Concept tags for retrieval
|
|
49
|
+
tags: string[]; // Classification tags
|
|
50
|
+
created: string; // ISO date
|
|
51
|
+
updated: string; // ISO date
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
The `context` field describes *when* to apply the snippet — not what the snippet is, but the situation that calls for it. For example: "When setting up JWT validation middleware in an Express v5 application with async route handlers." This context is what the retrieval system matches against.
|
|
56
|
+
|
|
57
|
+
The `snippet` field contains the actual knowledge — code, configuration, a procedure, or a detailed explanation. It should be directly usable, not abstract guidance.
|
|
58
|
+
|
|
59
|
+
The `provenance` field tracks where the entry came from: `lore` (promoted from a lore entry), `manual` (written directly by a human or agent), or `transfer` (copied from another agent's notebook). This matters for trust: a lore-promoted entry with a link to the original session has higher credibility than a manually created one.
|
|
60
|
+
|
|
61
|
+
The `appliedCount` tracks how often this entry has been used in orchestration. Entries are sorted by `appliedCount` descending — frequently-applied entries surface first.
|
|
62
|
+
|
|
63
|
+
## Storage: Global vs Project
|
|
64
|
+
|
|
65
|
+
Notebooks live in two locations:
|
|
66
|
+
|
|
67
|
+
**Global notebooks** at `~/.paradigm/notebooks/{agent-id}/` travel with the agent across all projects. An entry about JWT validation patterns is useful regardless of which project the security agent joins. Global notebooks are stored in the user's home directory (ring 2), so they persist even if a project is deleted.
|
|
68
|
+
|
|
69
|
+
**Project notebooks** at `.paradigm/notebooks/{agent-id}/` contain knowledge specific to one project. An entry about the specific authentication architecture of project X should not bleed into project Y. Project notebooks are committed to the repository so they are shared with the team.
|
|
70
|
+
|
|
71
|
+
When loading entries, the system reads global first, then project. If the same entry ID exists in both locations, the **project version wins** (override pattern). This allows a project to customize an agent's global knowledge for its specific needs.
|
|
72
|
+
|
|
73
|
+
Each entry is stored as an individual YAML file named `nb-{concept}.yaml` (or more precisely, `{entry-id}.yaml`). The `nb-` prefix and `.yaml` extension are enforced by the `NOTEBOOK_PREFIX` and `NOTEBOOK_EXT` constants in the notebook loader.
|
|
74
|
+
|
|
75
|
+
## Bootstrapping: Canonical Sources vs Learning Loop
|
|
76
|
+
|
|
77
|
+
Notebook entries come from two pipelines:
|
|
78
|
+
|
|
79
|
+
**Canonical bootstrapping** — When an agent is first created, Loid (forge) or a human seeds its notebook with foundational entries. The security agent might be bootstrapped with entries for OWASP Top 10 patterns, JWT best practices, and RLS policy templates. This gives the agent useful knowledge on day one without needing to learn from experience.
|
|
80
|
+
|
|
81
|
+
**Learning loop promotion** — Over time, journal entries and lore entries that prove valuable are promoted into notebook entries. The `promoteFromLore()` function takes a lore entry ID, extracts the symbols and content, and creates a notebook entry with `provenance.source: 'lore'` and a link to the original entry. Sensei (trainer) drives this promotion — reviewing agent performance, identifying high-value learnings, and curating them into notebook entries.
|
|
82
|
+
|
|
83
|
+
The learning loop pipeline is more valuable over time because it captures *project-specific* and *team-specific* patterns that canonical sources cannot predict. A canonical JWT entry is generic. A learning-loop entry that captures "In this project, JWT refresh tokens use the sliding window pattern with 15-minute windows because the mobile app has intermittent connectivity" is specific and actionable.
|
|
84
|
+
|
|
85
|
+
## How buildProfileEnrichment() Uses Notebooks
|
|
86
|
+
|
|
87
|
+
During orchestration, `buildProfileEnrichment()` accepts an optional array of notebook entries. The orchestrator matches entries by concept against the task's relevant symbols and injects the **top 5 entries by concept match** into the agent's prompt:
|
|
88
|
+
|
|
89
|
+
```typescript
|
|
90
|
+
function buildProfileEnrichment(
|
|
91
|
+
profile: AgentProfile,
|
|
92
|
+
relevantSymbols: string[],
|
|
93
|
+
notebookEntries?: Array<{ context: string; snippet: string; concepts: string[] }>,
|
|
94
|
+
// ...
|
|
95
|
+
): string {
|
|
96
|
+
// ...
|
|
97
|
+
if (notebookEntries && notebookEntries.length > 0) {
|
|
98
|
+
parts.push('## Relevant Notebook Entries');
|
|
99
|
+
for (const nb of notebookEntries.slice(0, 5)) {
|
|
100
|
+
parts.push(`### ${nb.context}`);
|
|
101
|
+
parts.push(`Concepts: ${nb.concepts.join(', ')}`);
|
|
102
|
+
parts.push('```');
|
|
103
|
+
const snippet = nb.snippet.length > 300
|
|
104
|
+
? nb.snippet.slice(0, 300) + '...' : nb.snippet;
|
|
105
|
+
parts.push(snippet);
|
|
106
|
+
parts.push('```');
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
Notice the `slice(0, 5)` — only the top 5 entries are injected. This is a deliberate budget constraint. Notebook entries consume prompt tokens. Injecting 50 entries would blow the context budget. The top 5 are selected by relevance (concept match) and sorted by `appliedCount` (most-used first).
|
|
113
|
+
|
|
114
|
+
Snippets longer than 300 characters are truncated with `...`. This prevents a single large entry from consuming the entire notebook budget. If an entry's full snippet is needed, the agent can use `paradigm_notebook_search` to retrieve it.
|
|
115
|
+
|
|
116
|
+
## 10 High-Signal Entries > 100 Low-Signal Ones
|
|
117
|
+
|
|
118
|
+
The quality bar for notebook entries matters enormously. Consider the token economics: each entry consumes ~100-300 tokens in the prompt. Five entries consume ~500-1,500 tokens. If those entries are high-signal (directly relevant, battle-tested, frequently applied), they provide immense value — the agent starts the task with proven patterns instead of reinventing them.
|
|
119
|
+
|
|
120
|
+
If those entries are low-signal (vague, generic, rarely applied), they waste 500-1,500 tokens on noise that might actually mislead the agent. Worse, low-quality entries can actively degrade performance by injecting irrelevant patterns that the LLM tries to apply inappropriately.
|
|
121
|
+
|
|
122
|
+
The `appliedCount` sorting is the primary quality signal. An entry that has been applied 15 times across 8 sessions is empirically useful. An entry that was created once and never applied is speculative. The `confidence` score provides a secondary signal, especially for new entries that have not yet accumulated an applied count.
|
|
123
|
+
|
|
124
|
+
Sensei's role as curator is critical: reviewing entries, pruning low-value ones, merging duplicates, and updating stale patterns. A well-maintained notebook with 10 entries is vastly more valuable than an unmaintained one with 100.
|
|
125
|
+
|
|
126
|
+
## MCP Tools for Notebooks
|
|
127
|
+
|
|
128
|
+
- `paradigm_notebook_add` — Add a new entry. Requires `agentId`, `context`, `snippet`, `concepts`, and `scope` (global or project).
|
|
129
|
+
- `paradigm_notebook_search` — Search entries by query string across context, snippet, and concepts.
|
|
130
|
+
- `paradigm_notebook_list` — List all entries for an agent, optionally filtered by concepts or tags.
|
|
131
|
+
- `paradigm_notebook_promote` — Promote a lore entry into a notebook entry via `promoteFromLore()`.
|