@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,198 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: N-para-701-per-project-rosters
|
|
3
|
+
title: 'Lesson 5: Per-Project Rosters'
|
|
4
|
+
type: note
|
|
5
|
+
author: paradigm
|
|
6
|
+
created: '2026-04-22'
|
|
7
|
+
updated: '2026-04-22'
|
|
8
|
+
tags:
|
|
9
|
+
- course
|
|
10
|
+
- para-701
|
|
11
|
+
- rosteryaml-at-paradigmrosteryaml
|
|
12
|
+
- no-rosteryaml-
|
|
13
|
+
- project-type-detection
|
|
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
|
+
## The Problem: 54 Agents Everywhere
|
|
24
|
+
|
|
25
|
+
Without project-level rosters, all 54 global agents are available to every project. This creates three problems:
|
|
26
|
+
|
|
27
|
+
1. **Noise** — The orchestrator considers 54 agents when planning, even though a backend API project does not need a designer, copywriter, or SEO agent. More candidates means more evaluation time and potentially irrelevant agents being included in plans.
|
|
28
|
+
|
|
29
|
+
2. **Irrelevance** — Agents that have no domain expertise for the project (gamedev on a SaaS app, legal on an open-source tool) waste attention by scoring events and producing nominations that will never be acted on.
|
|
30
|
+
|
|
31
|
+
3. **Global benching is broken** — Before rosters, benching an agent (setting `benched: true` on the `.agent` file) was a global operation. Benching the gamedev agent for your SaaS project also benched it for your game project. There was no per-project control.
|
|
32
|
+
|
|
33
|
+
## The Solution: roster.yaml
|
|
34
|
+
|
|
35
|
+
The `roster.yaml` file at `.paradigm/roster.yaml` lists exactly which agents are active on this project:
|
|
36
|
+
|
|
37
|
+
```yaml
|
|
38
|
+
# .paradigm/roster.yaml
|
|
39
|
+
version: "1.0"
|
|
40
|
+
project: dealoracle
|
|
41
|
+
type: saas-web-app
|
|
42
|
+
|
|
43
|
+
active:
|
|
44
|
+
- architect
|
|
45
|
+
- builder
|
|
46
|
+
- reviewer
|
|
47
|
+
- tester
|
|
48
|
+
- security
|
|
49
|
+
- documentor
|
|
50
|
+
- designer # Mika
|
|
51
|
+
- copywriter # Wren
|
|
52
|
+
- performance # Bolt
|
|
53
|
+
- devops # Atlas
|
|
54
|
+
- dba # Vault
|
|
55
|
+
- e2e # Ghost
|
|
56
|
+
- dx # Helix
|
|
57
|
+
- seo # Beacon
|
|
58
|
+
- pm # Yuki
|
|
59
|
+
- product # North
|
|
60
|
+
- advocate # Jinx
|
|
61
|
+
- debugger # Trace
|
|
62
|
+
- release # Ship
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Agents not listed are not active on this project. They still exist globally at `~/.paradigm/agents/` but the orchestrator will not consider them when planning work for this project.
|
|
66
|
+
|
|
67
|
+
## Backward Compatibility
|
|
68
|
+
|
|
69
|
+
The key design decision: **no roster.yaml = all agents available**. Existing projects that never created a roster continue working exactly as before. The `isAgentActive()` function implements this:
|
|
70
|
+
|
|
71
|
+
```typescript
|
|
72
|
+
function isAgentActive(agentId: string, rootDir: string): boolean {
|
|
73
|
+
const roster = loadProjectRoster(rootDir);
|
|
74
|
+
if (!roster) return true; // No roster = all active
|
|
75
|
+
return roster.includes(agentId);
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
This ensures zero breaking changes. You opt into roster filtering by creating the file. Until then, the system behaves as it always has.
|
|
80
|
+
|
|
81
|
+
## Project Type Detection
|
|
82
|
+
|
|
83
|
+
When running `paradigm shift` (the project initialization command), the system auto-detects the project type from filesystem signals:
|
|
84
|
+
|
|
85
|
+
```typescript
|
|
86
|
+
function detectProjectType(cwd: string): ProjectType {
|
|
87
|
+
const signals = {
|
|
88
|
+
hasPackageJson: exists('package.json'),
|
|
89
|
+
hasSupabase: exists('supabase/'),
|
|
90
|
+
hasNextConfig: exists('next.config.*'),
|
|
91
|
+
hasSwiftPackage: exists('Package.swift'),
|
|
92
|
+
hasGodotProject: exists('project.godot'),
|
|
93
|
+
hasCargoToml: exists('Cargo.toml'),
|
|
94
|
+
hasPubspecYaml: exists('pubspec.yaml'),
|
|
95
|
+
hasPrisma: exists('prisma/'),
|
|
96
|
+
hasDockerfile: exists('Dockerfile'),
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
if (signals.hasGodotProject) return 'game';
|
|
100
|
+
if (signals.hasSwiftPackage) return 'ios-app';
|
|
101
|
+
if (signals.hasPubspecYaml) return 'flutter-app';
|
|
102
|
+
if (signals.hasSupabase && signals.hasNextConfig) return 'saas-web-app';
|
|
103
|
+
if (signals.hasNextConfig) return 'web-app';
|
|
104
|
+
if (signals.hasCargoToml) return 'rust-project';
|
|
105
|
+
if (signals.hasPrisma || signals.hasDockerfile) return 'backend-api';
|
|
106
|
+
return 'generic';
|
|
107
|
+
}
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Detected types include `saas-web-app`, `web-app`, `backend-api`, `ios-app`, `flutter-app`, `game`, `rust-project`, and `generic`. Each type maps to a suggested roster.
|
|
111
|
+
|
|
112
|
+
## Suggested Rosters by Type
|
|
113
|
+
|
|
114
|
+
Each project type has a pre-defined suggested roster. These are starting points, not mandatory configurations:
|
|
115
|
+
|
|
116
|
+
| Project Type | Typical Size | Notable Inclusions | Notable Exclusions |
|
|
117
|
+
|---|---|---|---|
|
|
118
|
+
| saas-web-app | ~24 agents | Full stack: designer, dba, seo, sales, legal | gamedev, 3d, audio, streaming |
|
|
119
|
+
| web-app | ~15 agents | Frontend-focused: designer, seo, a11y | dba, sales, legal |
|
|
120
|
+
| backend-api | ~13 agents | Backend-focused: dba, dx, performance | designer, copywriter, seo |
|
|
121
|
+
| ios-app | ~12 agents | Mobile: mobile (Swift), a11y, performance | dba, seo, devops |
|
|
122
|
+
| game | ~11 agents | Game-specific: gamedev, 3d, audio | seo, legal, sales, dba |
|
|
123
|
+
| flutter-app | ~11 agents | Cross-platform: mobile, a11y | dba, seo, devops |
|
|
124
|
+
| generic | ~8 agents | Core only: architect through documentor + debugger + qa | All specialists |
|
|
125
|
+
|
|
126
|
+
The `generic` roster is intentionally minimal: architect, builder, reviewer, tester, security, documentor, debugger, and qa. These 8 agents provide the baseline quality coverage (design, build, review, test, secure, document, debug, validate) that every project needs.
|
|
127
|
+
|
|
128
|
+
## CLI Commands for Roster Management
|
|
129
|
+
|
|
130
|
+
Roster management is done through the CLI:
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
# Interactive roster setup (suggests based on project type)
|
|
134
|
+
paradigm agents roster
|
|
135
|
+
|
|
136
|
+
# Activate specific agents
|
|
137
|
+
paradigm agents activate designer copywriter security devops dba
|
|
138
|
+
|
|
139
|
+
# Deactivate agents
|
|
140
|
+
paradigm agents deactivate gamedev 3d audio streaming
|
|
141
|
+
|
|
142
|
+
# List active agents for this project
|
|
143
|
+
paradigm agents list # Shows only active roster
|
|
144
|
+
paradigm agents list --all # Shows all global + active status
|
|
145
|
+
|
|
146
|
+
# Activate a pod (all agents in the pod)
|
|
147
|
+
paradigm agents activate --pod ship-pod
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
Activate and deactivate modify the `roster.yaml` file — they never modify global `.agent` files. This is the key architectural decision: the roster is a project-level filter over global agents. Agents are not "installed" or "removed" per project; they are "active" or "inactive" based on whether they appear in the roster.
|
|
151
|
+
|
|
152
|
+
## Orchestrator Integration
|
|
153
|
+
|
|
154
|
+
The orchestrator's planning phase reads the roster before selecting agents:
|
|
155
|
+
|
|
156
|
+
```typescript
|
|
157
|
+
function getActiveAgents(rootDir: string): string[] {
|
|
158
|
+
const rosterPath = path.join(rootDir, '.paradigm', 'roster.yaml');
|
|
159
|
+
if (fs.existsSync(rosterPath)) {
|
|
160
|
+
const roster = yaml.load(fs.readFileSync(rosterPath, 'utf8'));
|
|
161
|
+
return roster.active || [];
|
|
162
|
+
}
|
|
163
|
+
// Fallback: all global agents (backward compat)
|
|
164
|
+
return getAllGlobalAgents().map(a => a.id);
|
|
165
|
+
}
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
The returned list gates which agents are considered during orchestration planning. If the security agent is not in the roster, it will not be included in orchestration plans, will not receive event notifications, and will not self-nominate contributions. It is effectively invisible on this project.
|
|
169
|
+
|
|
170
|
+
## paradigm shift Integration
|
|
171
|
+
|
|
172
|
+
During `paradigm shift` (first-time project setup), the roster step runs after team initialization:
|
|
173
|
+
|
|
174
|
+
```
|
|
175
|
+
Step 2b/6: Agent roster setup...
|
|
176
|
+
|
|
177
|
+
Detected project type: SaaS web app (React + Supabase + Vercel)
|
|
178
|
+
|
|
179
|
+
Suggested roster (20 agents):
|
|
180
|
+
Core: architect, builder, reviewer, tester, security, documentor
|
|
181
|
+
Design: designer (Mika), copywriter (Wren), a11y (Aria)
|
|
182
|
+
Data: dba (Vault), performance (Bolt), analyst (Sage)
|
|
183
|
+
Infra: devops (Atlas), seo (Beacon), release (Ship)
|
|
184
|
+
Product: pm (Yuki), product (North)
|
|
185
|
+
Quality: e2e (Ghost), qa (Shield), advocate (Jinx)
|
|
186
|
+
|
|
187
|
+
Accept suggested roster? [Y/n]
|
|
188
|
+
|
|
189
|
+
Roster saved to .paradigm/roster.yaml (20 agents active)
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
The human can accept the suggestion, modify it, or skip (which creates no roster file, keeping all agents active). On existing projects, running `paradigm shift` again offers to create a roster based on the detected type.
|
|
193
|
+
|
|
194
|
+
## Why Rosters Are Not Agent Behavior
|
|
195
|
+
|
|
196
|
+
Rosters are a filtering mechanism, not a behavior modifier. An agent's `.agent` file defines who it is (personality, expertise, behaviors, attention). The roster defines whether it is active on this project. If the designer is not in the roster, it does not mean the designer "knows" it is inactive — it simply is not invoked.
|
|
197
|
+
|
|
198
|
+
This separation is important: when you activate the designer on a project, it arrives with its full personality, expertise, notebooks, and transferable patterns intact. Nothing about the agent changed. The roster just opened the door.
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: N-para-701-symphony-visibility
|
|
3
|
+
title: 'Lesson 8: Live Visibility via Symphony'
|
|
4
|
+
type: note
|
|
5
|
+
author: paradigm
|
|
6
|
+
created: '2026-04-22'
|
|
7
|
+
updated: '2026-04-22'
|
|
8
|
+
tags:
|
|
9
|
+
- course
|
|
10
|
+
- para-701
|
|
11
|
+
- orchestrator-auto-emits-thr-orch-id
|
|
12
|
+
- noterelay-polls-paradigmscorethreads
|
|
13
|
+
- symphonythreadwatcher-filters-orchestration
|
|
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
|
+
## The Visibility Gap
|
|
24
|
+
|
|
25
|
+
Orchestration runs inside an MCP tool call. The human sees: "Calling paradigm_orchestrate_inline..." followed by a wall of text when it completes. There is no live visibility into what is happening during orchestration — which agents are active, what they are producing, whether they agree or disagree, how far along the plan is.
|
|
26
|
+
|
|
27
|
+
Symphony closes this gap by providing a real-time communication channel between the orchestrator, agents, and the Conductor UI. The orchestrator emits progress into Symphony threads. The Conductor watches these threads and renders live updates.
|
|
28
|
+
|
|
29
|
+
## How Orchestration Emits to Symphony
|
|
30
|
+
|
|
31
|
+
When `paradigm_orchestrate_inline` runs in execute mode, it auto-emits a Symphony thread with a `thr-orch-` prefix:
|
|
32
|
+
|
|
33
|
+
```typescript
|
|
34
|
+
const orchestrationThread = `thr-orch-${orchestrationId}`;
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
The orchestrator creates this thread via the Symphony loader and posts an initial note from the "maestro" identity:
|
|
38
|
+
|
|
39
|
+
```typescript
|
|
40
|
+
const maestroId = `${projectName}/maestro`;
|
|
41
|
+
symphony.createNote(orchestrationThread, {
|
|
42
|
+
from: maestroId,
|
|
43
|
+
content: `Orchestration started: ${taskDescription}`,
|
|
44
|
+
type: 'agent',
|
|
45
|
+
project: projectName,
|
|
46
|
+
role: 'orchestrator',
|
|
47
|
+
});
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
As each agent completes its work, the orchestrator posts their contributions to the thread. If security finds a gate coverage issue, that appears as a note from the security agent. If the builder completes implementation, that appears as a note from the builder. The thread becomes a chronological record of the orchestration.
|
|
51
|
+
|
|
52
|
+
The `thr-orch-` prefix is critical — it is the identifier that allows the Conductor to distinguish orchestration threads from regular Symphony threads (like team chat or general discussion).
|
|
53
|
+
|
|
54
|
+
## NoteRelay: The Polling Bridge
|
|
55
|
+
|
|
56
|
+
Symphony threads are stored as JSON files in `~/.paradigm/score/threads/`. The Conductor is a native macOS application that cannot directly watch the filesystem for MCP-created files (different process, different sandbox). NoteRelay bridges this gap.
|
|
57
|
+
|
|
58
|
+
NoteRelay is a Conductor service that polls the Symphony thread directory on a 5-second interval:
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
~/.paradigm/score/threads/*.json → NoteRelay (5s poll) → Conductor state
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Every 5 seconds, NoteRelay scans for new or modified thread files. When it finds changes, it parses the JSON, extracts the notes, and updates the Conductor's in-memory state. This creates a near-real-time bridge between the MCP server (which writes threads) and the Conductor UI (which displays them).
|
|
65
|
+
|
|
66
|
+
The 5-second poll interval is a deliberate balance. A 1-second poll would provide faster updates but consume more CPU on the macOS overlay app. A 30-second poll would be too slow for live orchestration visibility. Five seconds means the Conductor is at most 5 seconds behind the actual orchestration state.
|
|
67
|
+
|
|
68
|
+
## SymphonyThreadWatcher: Filtering Orchestration Threads
|
|
69
|
+
|
|
70
|
+
NoteRelay delivers all Symphony threads to the Conductor. But the Team view in Conductor only wants orchestration threads — not general discussion or personal notes. SymphonyThreadWatcher handles this filtering.
|
|
71
|
+
|
|
72
|
+
SymphonyThreadWatcher polls at a 3-second interval (faster than NoteRelay's 5-second scan) and filters threads by the `thr-orch-` prefix:
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
All Symphony threads → SymphonyThreadWatcher (3s poll) →
|
|
76
|
+
Filter: thr-orch-* → TeamThreadView
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
The watcher also tracks thread state: is the orchestration in progress, completed, or failed? It determines this by checking the latest note in the thread — a "completed" or "failed" status note indicates the orchestration has finished.
|
|
80
|
+
|
|
81
|
+
## TeamThreadView: Rendering in Conductor
|
|
82
|
+
|
|
83
|
+
TeamThreadView is the SwiftUI view that renders orchestration threads in the Conductor overlay. Each note in the thread is displayed with:
|
|
84
|
+
|
|
85
|
+
1. **Colored role badge** — Each agent role has a distinct color. The architect gets one color, the security agent another, the builder another. This makes it immediately visible who said what without reading names.
|
|
86
|
+
|
|
87
|
+
2. **Intent indicator** — The orchestration plan specifies an intent for each agent (e.g., "review gate coverage", "implement webhook handler"). The intent appears next to the agent's badge, providing context for why the agent was included.
|
|
88
|
+
|
|
89
|
+
3. **Agent nickname** — If the agent has a nickname (Mika, Atlas, Jinx), it is displayed alongside the role. This makes attributed responses feel like team communication rather than tool output.
|
|
90
|
+
|
|
91
|
+
4. **Note content** — The actual contribution from the agent. This could be a review finding, a code suggestion, a security flag, or a completion confirmation.
|
|
92
|
+
|
|
93
|
+
The visual layout mimics a team chat interface: chronological notes from identified agents, each with their role badge and intent. The human can watch the orchestration unfold in real time rather than waiting for a monolithic output.
|
|
94
|
+
|
|
95
|
+
## Agent-Side Emission
|
|
96
|
+
|
|
97
|
+
Agents are instructed (via their orchestration prompts) to emit progress and completion notes to Symphony during execution. The orchestrator includes this instruction:
|
|
98
|
+
|
|
99
|
+
```markdown
|
|
100
|
+
## Symphony Communication
|
|
101
|
+
During your work, emit progress notes to the active Symphony thread.
|
|
102
|
+
Use these note types:
|
|
103
|
+
- progress: "Reviewing file X of Y..."
|
|
104
|
+
- finding: "Found gate coverage gap on POST /api/payments"
|
|
105
|
+
- completion: "Review complete. 2 findings, 0 blockers."
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Not all agents emit notes equally. The architect tends to emit planning updates. The security agent emits findings. The builder emits completion summaries. The documentor emits what it updated. This diversity creates a natural team-communication feel in the thread.
|
|
109
|
+
|
|
110
|
+
## The Full Pipeline
|
|
111
|
+
|
|
112
|
+
Putting it all together, the live visibility pipeline is:
|
|
113
|
+
|
|
114
|
+
```
|
|
115
|
+
pardigm_orchestrate_inline execute
|
|
116
|
+
↓
|
|
117
|
+
Orchestrator creates thr-orch-{id} thread
|
|
118
|
+
↓
|
|
119
|
+
Each agent contributes → notes posted to thread
|
|
120
|
+
↓
|
|
121
|
+
Thread file written to ~/.paradigm/score/threads/
|
|
122
|
+
↓
|
|
123
|
+
NoteRelay polls (5s) → detects new/changed thread
|
|
124
|
+
↓
|
|
125
|
+
SymphonyThreadWatcher filters (3s) → thr-orch-* threads
|
|
126
|
+
↓
|
|
127
|
+
TeamThreadView renders with colored badges and intents
|
|
128
|
+
↓
|
|
129
|
+
Human sees live orchestration progress in Conductor overlay
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
The latency from agent contribution to visual display is at most ~8 seconds (5s NoteRelay + 3s ThreadWatcher in the worst case). In practice, it is usually 3-5 seconds because the polls are offset.
|
|
133
|
+
|
|
134
|
+
## Why This Architecture
|
|
135
|
+
|
|
136
|
+
The polling-based architecture was chosen over alternatives for pragmatic reasons:
|
|
137
|
+
|
|
138
|
+
- **Filesystem watching** (FSEvents on macOS) is brittle across sandboxed processes and does not work reliably when the MCP server writes files from a different process tree.
|
|
139
|
+
- **WebSocket/TCP connection** between MCP server and Conductor would require connection management, reconnection logic, and port conflicts. Polling a directory is simpler.
|
|
140
|
+
- **Shared memory** would require both processes to link against the same framework, creating tight coupling.
|
|
141
|
+
|
|
142
|
+
Polling JSON files from a well-known directory is the simplest architecture that provides near-real-time visibility without process-coupling complexity. The tradeoff is a 3-8 second display latency, which is acceptable for human observation of orchestration progress.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
id: LP-para-001
|
|
2
|
+
title: 'PARA 001: Quick Start'
|
|
3
|
+
description: Get productive with Paradigm in 15 minutes. Initialize a project, meet your agent team, and build your first feature with orchestration. Hands-on from the first minute — theory comes later.
|
|
4
|
+
author: paradigm
|
|
5
|
+
created: '2026-04-22'
|
|
6
|
+
updated: '2026-04-22'
|
|
7
|
+
tags:
|
|
8
|
+
- course
|
|
9
|
+
- para-001
|
|
10
|
+
ordered: true
|
|
11
|
+
category: paradigm-core
|
|
12
|
+
origin: imported
|
|
13
|
+
source: courses/para-001.json
|
|
14
|
+
steps:
|
|
15
|
+
- content: N-para-001-shift-setup
|
|
16
|
+
required: true
|
|
17
|
+
- content: Q-para-001-shift-setup
|
|
18
|
+
required: true
|
|
19
|
+
passRequired: true
|
|
20
|
+
- content: N-para-001-meet-the-team
|
|
21
|
+
required: true
|
|
22
|
+
- content: Q-para-001-meet-the-team
|
|
23
|
+
required: true
|
|
24
|
+
passRequired: true
|
|
25
|
+
- content: N-para-001-build-something
|
|
26
|
+
required: true
|
|
27
|
+
- content: Q-para-001-build-something
|
|
28
|
+
required: true
|
|
29
|
+
passRequired: true
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
id: LP-para-101
|
|
2
|
+
title: 'PARA 101: Foundations'
|
|
3
|
+
description: Master the fundamentals of Paradigm — the meta-framework that gives AI agents structured context to navigate and understand your codebase. Learn the five symbols, purpose files, tags, logging, project structure, and gates.
|
|
4
|
+
author: paradigm
|
|
5
|
+
created: '2026-04-22'
|
|
6
|
+
updated: '2026-04-22'
|
|
7
|
+
tags:
|
|
8
|
+
- course
|
|
9
|
+
- para-101
|
|
10
|
+
ordered: true
|
|
11
|
+
category: paradigm-core
|
|
12
|
+
origin: imported
|
|
13
|
+
source: courses/para-101.json
|
|
14
|
+
steps:
|
|
15
|
+
- content: N-para-101-welcome
|
|
16
|
+
required: true
|
|
17
|
+
- content: Q-para-101-welcome
|
|
18
|
+
required: true
|
|
19
|
+
passRequired: true
|
|
20
|
+
- content: N-para-101-first-steps
|
|
21
|
+
required: true
|
|
22
|
+
- content: Q-para-101-first-steps
|
|
23
|
+
required: true
|
|
24
|
+
passRequired: true
|
|
25
|
+
- content: N-para-101-five-symbols
|
|
26
|
+
required: true
|
|
27
|
+
- content: Q-para-101-five-symbols
|
|
28
|
+
required: true
|
|
29
|
+
passRequired: true
|
|
30
|
+
- content: N-para-101-purpose-files
|
|
31
|
+
required: true
|
|
32
|
+
- content: Q-para-101-purpose-files
|
|
33
|
+
required: true
|
|
34
|
+
passRequired: true
|
|
35
|
+
- content: N-para-101-tags-and-classification
|
|
36
|
+
required: true
|
|
37
|
+
- content: Q-para-101-tags-and-classification
|
|
38
|
+
required: true
|
|
39
|
+
passRequired: true
|
|
40
|
+
- content: N-para-101-paradigm-logger
|
|
41
|
+
required: true
|
|
42
|
+
- content: Q-para-101-paradigm-logger
|
|
43
|
+
required: true
|
|
44
|
+
passRequired: true
|
|
45
|
+
- content: N-para-101-project-structure
|
|
46
|
+
required: true
|
|
47
|
+
- content: Q-para-101-project-structure
|
|
48
|
+
required: true
|
|
49
|
+
passRequired: true
|
|
50
|
+
- content: N-para-101-portal-yaml
|
|
51
|
+
required: true
|
|
52
|
+
- content: Q-para-101-portal-yaml
|
|
53
|
+
required: true
|
|
54
|
+
passRequired: true
|
|
55
|
+
- content: N-para-101-component-types
|
|
56
|
+
required: true
|
|
57
|
+
- content: Q-para-101-component-types
|
|
58
|
+
required: true
|
|
59
|
+
passRequired: true
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
id: LP-para-201
|
|
2
|
+
title: 'PARA 201: Architecture'
|
|
3
|
+
description: Deepen your Paradigm expertise with advanced patterns for flows, gates, aspects, disciplines, naming conventions, and architectural design. Learn to build complete features end-to-end using the full symbol system.
|
|
4
|
+
author: paradigm
|
|
5
|
+
created: '2026-04-22'
|
|
6
|
+
updated: '2026-04-22'
|
|
7
|
+
tags:
|
|
8
|
+
- course
|
|
9
|
+
- para-201
|
|
10
|
+
ordered: true
|
|
11
|
+
category: paradigm-core
|
|
12
|
+
origin: imported
|
|
13
|
+
source: courses/para-201.json
|
|
14
|
+
steps:
|
|
15
|
+
- content: N-para-201-flows-deep-dive
|
|
16
|
+
required: true
|
|
17
|
+
- content: Q-para-201-flows-deep-dive
|
|
18
|
+
required: true
|
|
19
|
+
passRequired: true
|
|
20
|
+
- content: N-para-201-gates-deep-dive
|
|
21
|
+
required: true
|
|
22
|
+
- content: Q-para-201-gates-deep-dive
|
|
23
|
+
required: true
|
|
24
|
+
passRequired: true
|
|
25
|
+
- content: N-para-201-aspects-and-anchors
|
|
26
|
+
required: true
|
|
27
|
+
- content: Q-para-201-aspects-and-anchors
|
|
28
|
+
required: true
|
|
29
|
+
passRequired: true
|
|
30
|
+
- content: N-para-201-aspect-graph
|
|
31
|
+
required: true
|
|
32
|
+
- content: Q-para-201-aspect-graph
|
|
33
|
+
required: true
|
|
34
|
+
passRequired: true
|
|
35
|
+
- content: N-para-201-portal-protocol
|
|
36
|
+
required: true
|
|
37
|
+
- content: Q-para-201-portal-protocol
|
|
38
|
+
required: true
|
|
39
|
+
passRequired: true
|
|
40
|
+
- content: N-para-201-disciplines
|
|
41
|
+
required: true
|
|
42
|
+
- content: Q-para-201-disciplines
|
|
43
|
+
required: true
|
|
44
|
+
passRequired: true
|
|
45
|
+
- content: N-para-201-symbol-naming
|
|
46
|
+
required: true
|
|
47
|
+
- content: Q-para-201-symbol-naming
|
|
48
|
+
required: true
|
|
49
|
+
passRequired: true
|
|
50
|
+
- content: N-para-201-component-patterns
|
|
51
|
+
required: true
|
|
52
|
+
- content: Q-para-201-component-patterns
|
|
53
|
+
required: true
|
|
54
|
+
passRequired: true
|
|
55
|
+
- content: N-para-201-signal-patterns
|
|
56
|
+
required: true
|
|
57
|
+
- content: Q-para-201-signal-patterns
|
|
58
|
+
required: true
|
|
59
|
+
passRequired: true
|
|
60
|
+
- content: N-para-201-cross-cutting-concerns
|
|
61
|
+
required: true
|
|
62
|
+
- content: Q-para-201-cross-cutting-concerns
|
|
63
|
+
required: true
|
|
64
|
+
passRequired: true
|
|
65
|
+
- content: N-para-201-architecture-review
|
|
66
|
+
required: true
|
|
67
|
+
- content: Q-para-201-architecture-review
|
|
68
|
+
required: true
|
|
69
|
+
passRequired: true
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
id: LP-para-301
|
|
2
|
+
title: 'PARA 301: Operations'
|
|
3
|
+
description: Master the operational tools and workflows that keep a Paradigm project healthy. From history tracking and fragility analysis to sentinel observability and context management, this course covers the day-to-day operations that separate well-maintained projects from chaotic ones.
|
|
4
|
+
author: paradigm
|
|
5
|
+
created: '2026-04-22'
|
|
6
|
+
updated: '2026-04-22'
|
|
7
|
+
tags:
|
|
8
|
+
- course
|
|
9
|
+
- para-301
|
|
10
|
+
ordered: true
|
|
11
|
+
category: paradigm-core
|
|
12
|
+
origin: imported
|
|
13
|
+
source: courses/para-301.json
|
|
14
|
+
steps:
|
|
15
|
+
- content: N-para-301-history-system
|
|
16
|
+
required: true
|
|
17
|
+
- content: Q-para-301-history-system
|
|
18
|
+
required: true
|
|
19
|
+
passRequired: true
|
|
20
|
+
- content: N-para-301-fragility-tracking
|
|
21
|
+
required: true
|
|
22
|
+
- content: Q-para-301-fragility-tracking
|
|
23
|
+
required: true
|
|
24
|
+
passRequired: true
|
|
25
|
+
- content: N-para-301-wisdom-system
|
|
26
|
+
required: true
|
|
27
|
+
- content: Q-para-301-wisdom-system
|
|
28
|
+
required: true
|
|
29
|
+
passRequired: true
|
|
30
|
+
- content: N-para-301-decisions
|
|
31
|
+
required: true
|
|
32
|
+
- content: Q-para-301-decisions
|
|
33
|
+
required: true
|
|
34
|
+
passRequired: true
|
|
35
|
+
- content: N-para-301-ripple-analysis
|
|
36
|
+
required: true
|
|
37
|
+
- content: Q-para-301-ripple-analysis
|
|
38
|
+
required: true
|
|
39
|
+
passRequired: true
|
|
40
|
+
- content: N-para-301-doctor-and-validation
|
|
41
|
+
required: true
|
|
42
|
+
- content: Q-para-301-doctor-and-validation
|
|
43
|
+
required: true
|
|
44
|
+
passRequired: true
|
|
45
|
+
- content: N-para-301-enforcement-levels
|
|
46
|
+
required: true
|
|
47
|
+
- content: Q-para-301-enforcement-levels
|
|
48
|
+
required: true
|
|
49
|
+
passRequired: true
|
|
50
|
+
- content: N-para-301-paradigm-shift
|
|
51
|
+
required: true
|
|
52
|
+
- content: Q-para-301-paradigm-shift
|
|
53
|
+
required: true
|
|
54
|
+
passRequired: true
|
|
55
|
+
- content: N-para-301-navigation-system
|
|
56
|
+
required: true
|
|
57
|
+
- content: Q-para-301-navigation-system
|
|
58
|
+
required: true
|
|
59
|
+
passRequired: true
|
|
60
|
+
- content: N-para-301-sentinel-observability
|
|
61
|
+
required: true
|
|
62
|
+
- content: Q-para-301-sentinel-observability
|
|
63
|
+
required: true
|
|
64
|
+
passRequired: true
|
|
65
|
+
- content: N-para-301-sync-and-maintenance
|
|
66
|
+
required: true
|
|
67
|
+
- content: Q-para-301-sync-and-maintenance
|
|
68
|
+
required: true
|
|
69
|
+
passRequired: true
|
|
70
|
+
- content: N-para-301-context-management
|
|
71
|
+
required: true
|
|
72
|
+
- content: Q-para-301-context-management
|
|
73
|
+
required: true
|
|
74
|
+
passRequired: true
|
|
75
|
+
- content: N-para-301-protocols
|
|
76
|
+
required: true
|
|
77
|
+
- content: Q-para-301-protocols
|
|
78
|
+
required: true
|
|
79
|
+
passRequired: true
|
|
80
|
+
- content: N-para-301-operations-review
|
|
81
|
+
required: true
|
|
82
|
+
- content: Q-para-301-operations-review
|
|
83
|
+
required: true
|
|
84
|
+
passRequired: true
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
id: LP-para-401
|
|
2
|
+
title: 'PARA 401: Orchestration'
|
|
3
|
+
description: Advanced course on multi-agent orchestration, MCP tool mastery, and framework-level coordination. Learn to decompose complex tasks across specialized agents, configure provider cascades, enforce governance with the PM layer, and achieve full Paradigm framework mastery.
|
|
4
|
+
author: paradigm
|
|
5
|
+
created: '2026-04-22'
|
|
6
|
+
updated: '2026-04-22'
|
|
7
|
+
tags:
|
|
8
|
+
- course
|
|
9
|
+
- para-401
|
|
10
|
+
ordered: true
|
|
11
|
+
category: paradigm-core
|
|
12
|
+
origin: imported
|
|
13
|
+
source: courses/para-401.json
|
|
14
|
+
steps:
|
|
15
|
+
- content: N-para-401-mcp-tools-overview
|
|
16
|
+
required: true
|
|
17
|
+
- content: Q-para-401-mcp-tools-overview
|
|
18
|
+
required: true
|
|
19
|
+
passRequired: true
|
|
20
|
+
- content: N-para-401-multi-agent-coordination
|
|
21
|
+
required: true
|
|
22
|
+
- content: Q-para-401-multi-agent-coordination
|
|
23
|
+
required: true
|
|
24
|
+
passRequired: true
|
|
25
|
+
- content: N-para-401-agent-roles
|
|
26
|
+
required: true
|
|
27
|
+
- content: Q-para-401-agent-roles
|
|
28
|
+
required: true
|
|
29
|
+
passRequired: true
|
|
30
|
+
- content: N-para-401-provider-cascade
|
|
31
|
+
required: true
|
|
32
|
+
- content: Q-para-401-provider-cascade
|
|
33
|
+
required: true
|
|
34
|
+
passRequired: true
|
|
35
|
+
- content: N-para-401-orchestration-workflow
|
|
36
|
+
required: true
|
|
37
|
+
- content: Q-para-401-orchestration-workflow
|
|
38
|
+
required: true
|
|
39
|
+
passRequired: true
|
|
40
|
+
- content: N-para-401-quick-check
|
|
41
|
+
required: true
|
|
42
|
+
- content: Q-para-401-quick-check
|
|
43
|
+
required: true
|
|
44
|
+
passRequired: true
|
|
45
|
+
- content: N-para-401-pm-governance
|
|
46
|
+
required: true
|
|
47
|
+
- content: Q-para-401-pm-governance
|
|
48
|
+
required: true
|
|
49
|
+
passRequired: true
|
|
50
|
+
- content: N-para-401-commit-conventions
|
|
51
|
+
required: true
|
|
52
|
+
- content: Q-para-401-commit-conventions
|
|
53
|
+
required: true
|
|
54
|
+
passRequired: true
|
|
55
|
+
- content: N-para-401-mastery-review
|
|
56
|
+
required: true
|
|
57
|
+
- content: Q-para-401-mastery-review
|
|
58
|
+
required: true
|
|
59
|
+
passRequired: true
|
|
60
|
+
- content: N-para-401-agent-interop
|
|
61
|
+
required: true
|
|
62
|
+
- content: Q-para-401-agent-interop
|
|
63
|
+
required: true
|
|
64
|
+
passRequired: true
|
|
65
|
+
- content: N-para-401-agent-identity
|
|
66
|
+
required: true
|
|
67
|
+
- content: Q-para-401-agent-identity
|
|
68
|
+
required: true
|
|
69
|
+
passRequired: true
|
|
70
|
+
- content: N-para-401-notebooks-permissions
|
|
71
|
+
required: true
|
|
72
|
+
- content: Q-para-401-notebooks-permissions
|
|
73
|
+
required: true
|
|
74
|
+
passRequired: true
|