@a-company/paradigm 5.38.0 → 6.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{accept-orchestration-OATWIRHP.js → accept-orchestration-QQISPINV.js} +1 -1
- package/dist/add-UOR4INIV.js +8 -0
- package/dist/{agent-loader-RIVI6QPP.js → agent-loader-2WJHD46U.js} +1 -1
- package/dist/{agent-loader-RJRVO5GQ.js → agent-loader-YKS2PQWO.js} +1 -1
- package/dist/{ambient-76YMUA5Q.js → ambient-BE3SQXNN.js} +1 -1
- package/dist/{ambient-WTLYUAQM.js → ambient-NVKQCW2A.js} +12 -12
- package/dist/{assess-UFPYEJKP.js → assess-63WXHWJV.js} +1 -1
- package/dist/{calibration-OLJYB5HN.js → calibration-BDHGYJOK.js} +1 -1
- package/dist/{chunk-5QOCKWK5.js → chunk-4PSD5R7N.js} +2 -2
- package/dist/{chunk-HOBHJPTL.js → chunk-6SKSV5B2.js} +1 -1
- package/dist/{chunk-4L7665QV.js → chunk-FEYOQMZ5.js} +1 -1
- package/dist/{chunk-NEJ4ZLCY.js → chunk-GAFKOFAV.js} +1 -1
- package/dist/chunk-GRZQIKST.js +2 -0
- package/dist/{chunk-RLCH7DXQ.js → chunk-K7X3Z3GL.js} +1 -1
- package/dist/{chunk-4VKSEOXZ.js → chunk-LPBCQM5Y.js} +3 -3
- package/dist/{chunk-74SGKSRQ.js → chunk-M2HKWR25.js} +1 -1
- package/dist/{chunk-BOYQAMGC.js → chunk-M3PPXJU4.js} +1 -1
- package/dist/chunk-PHEX6LU4.js +111 -0
- package/dist/chunk-Q527BPUF.js +2 -0
- package/dist/chunk-R5ECMBIV.js +11 -0
- package/dist/{chunk-X3U3IGYT.js → chunk-TBWWFRL5.js} +1 -1
- package/dist/{chunk-MQIG6SMF.js → chunk-TNVWGPCE.js} +1 -1
- package/dist/chunk-TZDYIPVU.js +521 -0
- package/dist/{chunk-3XGNXXCT.js → chunk-UZ5H7K6Q.js} +1 -1
- package/dist/chunk-VIG5LSGZ.js +2 -0
- package/dist/chunk-VNIX5KBT.js +3 -0
- package/dist/{chunk-AGFPVSX5.js → chunk-VXIIVMTM.js} +1 -1
- package/dist/{chunk-ORDKEGII.js → chunk-WESTEMIM.js} +1 -1
- package/dist/{chunk-DOCDDDTD.js → chunk-YNDPSWOE.js} +5 -5
- package/dist/chunk-Z5QW6USC.js +2 -0
- package/dist/{compliance-D7GD6ZYC.js → compliance-BNFWQPKM.js} +1 -1
- package/dist/config-schema-FLHRVZMI.js +2 -0
- package/dist/{context-audit-XRPT3OU2.js → context-audit-JVCA6GSV.js} +1 -1
- package/dist/{cursorrules-U5O4G5T4.js → cursorrules-ZXPXPZ3P.js} +1 -1
- package/dist/decision-loader-HELL2AMX.js +2 -0
- package/dist/{delete-P5VULXR4.js → delete-2C6ALLYY.js} +1 -1
- package/dist/{diff-YGHBIJY5.js → diff-MF55KQZH.js} +1 -1
- package/dist/{dist-KGRCLBJP-2QAPFYNF.js → dist-GQ42YS5N-4HIJZVBB.js} +10 -10
- package/dist/{docs-USDAF26F.js → docs-O37YLLRN.js} +1 -1
- package/dist/doctor-IG5XM4C4.js +2 -0
- package/dist/{edit-GUU3HBVW.js → edit-P3MDAZLU.js} +1 -1
- package/dist/{flow-FVZR3YJ4.js → flow-BGXOVE2V.js} +1 -1
- package/dist/index.js +6 -6
- package/dist/init-M44SO65G.js +2 -0
- package/dist/{init-XYB62Q3X.js → init-V4KSEKPK.js} +1 -1
- package/dist/{list-YKIQNKGB.js → list-2XIWUEMA.js} +1 -1
- package/dist/list-CFHINXIS.js +12 -0
- package/dist/lore-loader-D2ISOASW.js +2 -0
- package/dist/lore-loader-PXFKMKAN.js +2 -0
- package/dist/mcp.js +4 -4
- package/dist/metrics-UESGUHTA.js +2 -0
- package/dist/migrate-assessments-YSITX7KM.js +4 -0
- package/dist/migrate-decisions-NPLQOEEH.js +6 -0
- package/dist/migrate-plsat-EM2ACIQ3.js +6 -0
- package/dist/{nomination-engine-EALA5MGI.js → nomination-engine-QPZJH6XO.js} +1 -1
- package/dist/{notebook-loader-PXNRBBXD.js → notebook-loader-3J2OFMS3.js} +1 -1
- package/dist/{orchestrate-M5PBZBJQ.js → orchestrate-RID7HHHH.js} +1 -1
- package/dist/{platform-server-DNAMH4YI.js → platform-server-UD45NTGV.js} +1 -1
- package/dist/{portal-check-ZMLVBIGW.js → portal-check-DV2VSJ5E.js} +1 -1
- package/dist/portal-compliance-JONQ4SOP.js +2 -0
- package/dist/{probe-3FTG6LYO.js → probe-5HAXULAD.js} +1 -1
- package/dist/{providers-AWA7WLLM.js → providers-4PXMWA7V.js} +1 -1
- package/dist/quiz-WYIZJG5K.js +10 -0
- package/dist/{record-YXPB34MY.js → record-N3VNYYKJ.js} +1 -1
- package/dist/reindex-FWPD2VGM.js +2 -0
- package/dist/{retag-N5XF3KXP.js → retag-72R2OSZV.js} +1 -1
- package/dist/{review-77QI6VOC.js → review-2INNWLTW.js} +1 -1
- package/dist/{sentinel-HYAZ3CO5.js → sentinel-EFPEX246.js} +1 -1
- package/dist/{sentinel-bridge-VR357PKL.js → sentinel-bridge-UR2MKARY.js} +1 -1
- package/dist/{serve-U47GULB6.js → serve-MO35XIZE.js} +1 -1
- package/dist/serve-OQYUO7CR.js +12 -0
- package/dist/{server-4YNUIK4W.js → server-4D77LCST.js} +1 -1
- package/dist/server-FGUL2FWQ.js +7 -0
- package/dist/session-tracker-KGORN6B5.js +2 -0
- package/dist/{session-work-log-PAKXOFGL.js → session-work-log-4IEVE4KK.js} +1 -1
- package/dist/{session-work-log-ZP45TREI.js → session-work-log-EE4UIZ33.js} +1 -1
- package/dist/{setup-FEWSYS3Y.js → setup-ZSEC72BS.js} +1 -1
- package/dist/{shift-PC6C7NUX.js → shift-TVNY2CQF.js} +6 -6
- package/dist/{show-PJ5LFLIL.js → show-JH7LJ5MT.js} +1 -1
- package/dist/show-WVHAL4VU.js +7 -0
- package/dist/{spawn-M5BAV252.js → spawn-UH5RENSE.js} +1 -1
- package/dist/status-S7Z5FVIE.js +6 -0
- package/dist/{summary-PYTEIJ4U.js → summary-WLI3NF4G.js} +2 -2
- package/dist/{sweep-HU74OPVW.js → sweep-7TZFN5NS.js} +1 -1
- package/dist/sync-55U6QPIA.js +2 -0
- package/dist/{sync-llms-7CAI74QL.js → sync-llms-GF7DDQDI.js} +1 -1
- package/dist/{team-PDK64JXI.js → team-MGT66HZQ.js} +1 -1
- package/dist/{timeline-K3ZFKJ3R.js → timeline-RK7O2SCM.js} +1 -1
- package/dist/tools-QJHAVYI6.js +2 -0
- package/dist/university-content/notes/N-para-001-build-something.md +126 -0
- package/dist/university-content/notes/N-para-001-meet-the-team.md +85 -0
- package/dist/university-content/notes/N-para-001-shift-setup.md +74 -0
- package/dist/university-content/notes/N-para-101-component-types.md +99 -0
- package/dist/university-content/notes/N-para-101-first-steps.md +134 -0
- package/dist/university-content/notes/N-para-101-five-symbols.md +128 -0
- package/dist/university-content/notes/N-para-101-paradigm-logger.md +89 -0
- package/dist/university-content/notes/N-para-101-portal-yaml.md +112 -0
- package/dist/university-content/notes/N-para-101-project-structure.md +143 -0
- package/dist/university-content/notes/N-para-101-purpose-files.md +121 -0
- package/dist/university-content/notes/N-para-101-tags-and-classification.md +93 -0
- package/dist/university-content/notes/N-para-101-welcome.md +51 -0
- package/dist/university-content/notes/N-para-201-architecture-review.md +175 -0
- package/dist/university-content/notes/N-para-201-aspect-graph.md +79 -0
- package/dist/university-content/notes/N-para-201-aspects-and-anchors.md +112 -0
- package/dist/university-content/notes/N-para-201-component-patterns.md +138 -0
- package/dist/university-content/notes/N-para-201-cross-cutting-concerns.md +145 -0
- package/dist/university-content/notes/N-para-201-disciplines.md +187 -0
- package/dist/university-content/notes/N-para-201-flows-deep-dive.md +119 -0
- package/dist/university-content/notes/N-para-201-gates-deep-dive.md +165 -0
- package/dist/university-content/notes/N-para-201-portal-protocol.md +133 -0
- package/dist/university-content/notes/N-para-201-signal-patterns.md +159 -0
- package/dist/university-content/notes/N-para-201-symbol-naming.md +149 -0
- package/dist/university-content/notes/N-para-301-context-management.md +53 -0
- package/dist/university-content/notes/N-para-301-decisions.md +99 -0
- package/dist/university-content/notes/N-para-301-doctor-and-validation.md +70 -0
- package/dist/university-content/notes/N-para-301-enforcement-levels.md +102 -0
- package/dist/university-content/notes/N-para-301-fragility-tracking.md +50 -0
- package/dist/university-content/notes/N-para-301-history-system.md +42 -0
- package/dist/university-content/notes/N-para-301-navigation-system.md +55 -0
- package/dist/university-content/notes/N-para-301-operations-review.md +55 -0
- package/dist/university-content/notes/N-para-301-paradigm-shift.md +93 -0
- package/dist/university-content/notes/N-para-301-protocols.md +113 -0
- package/dist/university-content/notes/N-para-301-ripple-analysis.md +53 -0
- package/dist/university-content/notes/N-para-301-sentinel-observability.md +87 -0
- package/dist/university-content/notes/N-para-301-sync-and-maintenance.md +57 -0
- package/dist/university-content/notes/N-para-301-wisdom-system.md +89 -0
- package/dist/university-content/notes/N-para-401-agent-identity.md +99 -0
- package/dist/university-content/notes/N-para-401-agent-interop.md +87 -0
- package/dist/university-content/notes/N-para-401-agent-roles.md +107 -0
- package/dist/university-content/notes/N-para-401-commit-conventions.md +82 -0
- package/dist/university-content/notes/N-para-401-mastery-review.md +71 -0
- package/dist/university-content/notes/N-para-401-mcp-tools-overview.md +102 -0
- package/dist/university-content/notes/N-para-401-multi-agent-coordination.md +80 -0
- package/dist/university-content/notes/N-para-401-notebooks-permissions.md +66 -0
- package/dist/university-content/notes/N-para-401-orchestration-workflow.md +101 -0
- package/dist/university-content/notes/N-para-401-pm-governance.md +71 -0
- package/dist/university-content/notes/N-para-401-provider-cascade.md +75 -0
- package/dist/university-content/notes/N-para-401-quick-check.md +95 -0
- package/dist/university-content/notes/N-para-501-advanced-workflows.md +122 -0
- package/dist/university-content/notes/N-para-501-aspect-graph-advanced.md +195 -0
- package/dist/university-content/notes/N-para-501-aspect-graph-internals.md +97 -0
- package/dist/university-content/notes/N-para-501-assessment-loops.md +116 -0
- package/dist/university-content/notes/N-para-501-conductor-workspace.md +77 -0
- package/dist/university-content/notes/N-para-501-habits-practice.md +164 -0
- package/dist/university-content/notes/N-para-501-hook-enforcement.md +100 -0
- package/dist/university-content/notes/N-para-501-lore-system.md +155 -0
- package/dist/university-content/notes/N-para-501-platform-agent-ui.md +108 -0
- package/dist/university-content/notes/N-para-501-review-compliance.md +72 -0
- package/dist/university-content/notes/N-para-501-sentinel-deep-dive.md +173 -0
- package/dist/university-content/notes/N-para-501-session-intelligence.md +104 -0
- package/dist/university-content/notes/N-para-501-symphony-a-mail.md +120 -0
- package/dist/university-content/notes/N-para-501-symphony-networking.md +119 -0
- package/dist/university-content/notes/N-para-501-task-management.md +100 -0
- package/dist/university-content/notes/N-para-601-agent-renaissance.md +121 -0
- package/dist/university-content/notes/N-para-601-attention-scoring.md +129 -0
- package/dist/university-content/notes/N-para-601-context-composition.md +146 -0
- package/dist/university-content/notes/N-para-601-data-sovereignty.md +140 -0
- package/dist/university-content/notes/N-para-601-event-stream.md +126 -0
- package/dist/university-content/notes/N-para-601-knowledge-streams.md +144 -0
- package/dist/university-content/notes/N-para-601-learning-loop.md +68 -0
- package/dist/university-content/notes/N-para-601-maestro-team-collab.md +136 -0
- package/dist/university-content/notes/N-para-601-nominations-debates.md +115 -0
- package/dist/university-content/notes/N-para-701-agent-notebooks.md +131 -0
- package/dist/university-content/notes/N-para-701-agent-pods-nevrland.md +182 -0
- package/dist/university-content/notes/N-para-701-agent-profiles.md +197 -0
- package/dist/university-content/notes/N-para-701-agent-roster.md +82 -0
- package/dist/university-content/notes/N-para-701-agent-state.md +180 -0
- package/dist/university-content/notes/N-para-701-learning-feedback-loop.md +188 -0
- package/dist/university-content/notes/N-para-701-model-tier-resolution.md +204 -0
- package/dist/university-content/notes/N-para-701-orchestration-enforcement.md +169 -0
- package/dist/university-content/notes/N-para-701-per-project-rosters.md +198 -0
- package/dist/university-content/notes/N-para-701-symphony-visibility.md +142 -0
- package/dist/university-content/paths/LP-para-001.yaml +29 -0
- package/dist/university-content/paths/LP-para-101.yaml +59 -0
- package/dist/university-content/paths/LP-para-201.yaml +69 -0
- package/dist/university-content/paths/LP-para-301.yaml +84 -0
- package/dist/university-content/paths/LP-para-401.yaml +74 -0
- package/dist/university-content/paths/LP-para-501.yaml +89 -0
- package/dist/university-content/paths/LP-para-601.yaml +59 -0
- package/dist/university-content/paths/LP-para-701.yaml +64 -0
- package/dist/university-content/quizzes/Q-para-001-build-something.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-001-meet-the-team.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-001-shift-setup.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-101-component-types.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-101-first-steps.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-101-five-symbols.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-101-paradigm-logger.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-101-portal-yaml.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-101-project-structure.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-101-purpose-files.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-101-tags-and-classification.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-101-welcome.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-201-architecture-review.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-201-aspect-graph.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-201-aspects-and-anchors.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-201-component-patterns.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-201-cross-cutting-concerns.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-201-disciplines.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-201-flows-deep-dive.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-201-gates-deep-dive.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-201-portal-protocol.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-201-signal-patterns.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-201-symbol-naming.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-301-context-management.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-301-decisions.yaml +76 -0
- package/dist/university-content/quizzes/Q-para-301-doctor-and-validation.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-301-enforcement-levels.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-301-fragility-tracking.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-301-history-system.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-301-navigation-system.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-301-operations-review.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-301-paradigm-shift.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-301-protocols.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-301-ripple-analysis.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-301-sentinel-observability.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-301-sync-and-maintenance.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-301-wisdom-system.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-401-agent-identity.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-401-agent-interop.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-401-agent-roles.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-401-commit-conventions.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-401-mastery-review.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-401-mcp-tools-overview.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-401-multi-agent-coordination.yaml +76 -0
- package/dist/university-content/quizzes/Q-para-401-notebooks-permissions.yaml +61 -0
- package/dist/university-content/quizzes/Q-para-401-orchestration-workflow.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-401-pm-governance.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-401-provider-cascade.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-401-quick-check.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-501-advanced-workflows.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-501-aspect-graph-advanced.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-501-aspect-graph-internals.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-501-assessment-loops.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-501-conductor-workspace.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-501-habits-practice.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-501-hook-enforcement.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-501-lore-system.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-501-platform-agent-ui.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-501-review-compliance.yaml +61 -0
- package/dist/university-content/quizzes/Q-para-501-sentinel-deep-dive.yaml +86 -0
- package/dist/university-content/quizzes/Q-para-501-session-intelligence.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-501-symphony-a-mail.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-501-symphony-networking.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-501-task-management.yaml +46 -0
- package/dist/university-content/quizzes/Q-para-601-agent-renaissance.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-601-attention-scoring.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-601-context-composition.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-601-data-sovereignty.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-601-event-stream.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-601-knowledge-streams.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-601-learning-loop.yaml +56 -0
- package/dist/university-content/quizzes/Q-para-601-maestro-team-collab.yaml +86 -0
- package/dist/university-content/quizzes/Q-para-601-nominations-debates.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-701-agent-notebooks.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-701-agent-pods-nevrland.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-701-agent-profiles.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-701-agent-roster.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-701-agent-state.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-701-learning-feedback-loop.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-701-model-tier-resolution.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-701-orchestration-enforcement.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-701-per-project-rosters.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-701-symphony-visibility.yaml +66 -0
- package/dist/university-content/quizzes/Q-plsat-v2.yaml +904 -0
- package/dist/university-content/quizzes/Q-plsat-v3.yaml +2909 -0
- package/dist/university-content/reference.json +2 -2
- package/dist/university-ui/assets/{index-CecQrfSn.js → index-nNgzO1il.js} +2 -2
- package/dist/university-ui/assets/{index-CecQrfSn.js.map → index-nNgzO1il.js.map} +1 -1
- package/dist/university-ui/index.html +1 -1
- package/dist/{upgrade-GX56QE3C.js → upgrade-NKN63VTY.js} +2 -2
- package/dist/validate-XUQZTF3H.js +9 -0
- package/dist/{watch-YCODNIET.js → watch-25GJHQYT.js} +1 -1
- package/lore-ui/dist/assets/{index-Bk-K0qgN.js → index-DKhNxgtW.js} +10 -10
- package/lore-ui/dist/index.html +1 -1
- package/package.json +2 -2
- package/platform-ui/dist/assets/{AmbientSection-BYjt75R1.js → AmbientSection-CwatqcBD.js} +1 -1
- package/platform-ui/dist/assets/{CanvasSection-rKvA_vZj.js → CanvasSection-dFAthehN.js} +1 -1
- package/platform-ui/dist/assets/{DocsSection-CI9K73M-.js → DocsSection-BZ2SFJBZ.js} +1 -1
- package/platform-ui/dist/assets/{GitSection-DSGj_c6S.js → GitSection-MNNYU1tO.js} +1 -1
- package/platform-ui/dist/assets/{GraphSection-CawN7pC5.js → GraphSection-COYjb4Pt.js} +1 -1
- package/platform-ui/dist/assets/LoreSection-B0hUbfsJ.js +1 -0
- package/platform-ui/dist/assets/{SentinelSection-DNgoYMH0.js → SentinelSection-BCxW1DCp.js} +1 -1
- package/platform-ui/dist/assets/{SymphonySection-C0zfcqv3.js → SymphonySection-BsucZRqy.js} +1 -1
- package/platform-ui/dist/assets/{TeamSection-Bzd3Dt9Q.js → TeamSection-C0QNTudW.js} +1 -1
- package/platform-ui/dist/assets/{UniversitySection-tBr62R0S.js → UniversitySection-DN1-g9pw.js} +1 -1
- package/platform-ui/dist/assets/{index-BaOmyn11.js → index-DwUT8pju.js} +2 -2
- package/platform-ui/dist/index.html +1 -1
- package/dist/add-P76GEMGF.js +0 -8
- package/dist/chunk-JQKKVAAN.js +0 -2
- package/dist/chunk-NQ47TA6C.js +0 -111
- package/dist/chunk-ODVKPZZ4.js +0 -2
- package/dist/chunk-Q2J542ST.js +0 -2
- package/dist/chunk-RBLK34IA.js +0 -11
- package/dist/chunk-RN4VE6P3.js +0 -521
- package/dist/chunk-WS2N27RX.js +0 -3
- package/dist/config-schema-GUQY2QN7.js +0 -2
- package/dist/decision-loader-2XPZE4EZ.js +0 -2
- package/dist/doctor-WMVULMQD.js +0 -2
- package/dist/list-5IUGP3ZB.js +0 -7
- package/dist/lore-loader-RVQI5GXL.js +0 -2
- package/dist/lore-loader-XY5MZRR2.js +0 -2
- package/dist/migrate-assessments-GEI5WMI2.js +0 -4
- package/dist/portal-compliance-6YR27IQU.js +0 -2
- package/dist/quiz-FE5UGAY2.js +0 -10
- package/dist/reindex-I6LPAKCC.js +0 -2
- package/dist/serve-OY6XYL7F.js +0 -12
- package/dist/server-2MNROHF6.js +0 -7
- package/dist/session-tracker-MWJAJA6Z.js +0 -2
- package/dist/show-BOAVWZPZ.js +0 -7
- package/dist/status-A37ECYNJ.js +0 -6
- package/dist/sync-DLUBV5HQ.js +0 -2
- package/dist/tools-5ITPEPSV.js +0 -2
- package/dist/university-content/courses/.purpose +0 -492
- package/dist/university-content/courses/para-001.json +0 -166
- package/dist/university-content/courses/para-101.json +0 -615
- package/dist/university-content/courses/para-201.json +0 -794
- package/dist/university-content/courses/para-301.json +0 -830
- package/dist/university-content/courses/para-401.json +0 -868
- package/dist/university-content/courses/para-501.json +0 -1166
- package/dist/university-content/courses/para-601.json +0 -719
- package/dist/university-content/courses/para-701.json +0 -807
- package/dist/university-content/plsat/.purpose +0 -162
- package/dist/university-content/plsat/v2.0.json +0 -760
- package/dist/university-content/plsat/v3.0.json +0 -3453
- package/dist/validate-C6SMKGYD.js +0 -9
- package/platform-ui/dist/assets/LoreSection-oO5dCe6O.js +0 -1
- /package/dist/{chunk-BV5PRPLB.js → chunk-IZSBGW6E.js} +0 -0
- /package/templates/paradigm/specs/{scan.md → probe.md} +0 -0
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: N-para-701-agent-profiles
|
|
3
|
+
title: 'Lesson 2: Agent Profiles Deep Dive'
|
|
4
|
+
type: note
|
|
5
|
+
author: paradigm
|
|
6
|
+
created: '2026-04-22'
|
|
7
|
+
updated: '2026-04-22'
|
|
8
|
+
tags:
|
|
9
|
+
- course
|
|
10
|
+
- para-701
|
|
11
|
+
- the-agent-file
|
|
12
|
+
- personality-style-risk
|
|
13
|
+
- collaboration-graph-defines
|
|
14
|
+
symbols: []
|
|
15
|
+
difficulty: beginner
|
|
16
|
+
estimatedMinutes: 7
|
|
17
|
+
prerequisites: []
|
|
18
|
+
category: paradigm-core
|
|
19
|
+
origin: imported
|
|
20
|
+
source: courses/para-701.json
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## The .agent File
|
|
24
|
+
|
|
25
|
+
Every agent's identity lives in a `.agent` file stored at `~/.paradigm/agents/{id}.agent`. This is a YAML file that defines who the agent is: not just what it does, but how it thinks, who it works with, what it watches, and what it has learned. The `.agent` file is the complete specification of an agent's identity.
|
|
26
|
+
|
|
27
|
+
## Core Identity Fields
|
|
28
|
+
|
|
29
|
+
The top-level fields establish the agent's identity:
|
|
30
|
+
|
|
31
|
+
```yaml
|
|
32
|
+
id: security
|
|
33
|
+
nickname: null # Optional display name (e.g., "Jinx", "Mika")
|
|
34
|
+
role: Security agent
|
|
35
|
+
description: >-
|
|
36
|
+
Security specialist who audits auth flows, reviews gate implementations,
|
|
37
|
+
and hunts for vulnerabilities. He is the Portal/Gates champion.
|
|
38
|
+
version: 1.0.0
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
`id` is the machine-readable identifier used in rosters, orchestration plans, and file paths. `nickname` is the optional human-friendly name displayed in attributed responses and Symphony threads (e.g., Mika for designer, Atlas for devops). `role` is a short description of the agent's function. `description` is a detailed paragraph that explains the agent's responsibilities, expertise boundaries, and what it does NOT do.
|
|
42
|
+
|
|
43
|
+
The description is critically important because it is injected into the agent's prompt during orchestration. A vague description produces vague behavior. A precise description like "He flags issues but does NOT implement fixes — that's the Builder's job" creates a clear boundary.
|
|
44
|
+
|
|
45
|
+
## Personality Configuration
|
|
46
|
+
|
|
47
|
+
The `personality` block defines the agent's behavioral parameters:
|
|
48
|
+
|
|
49
|
+
```yaml
|
|
50
|
+
personality:
|
|
51
|
+
style: methodical # How the agent approaches work
|
|
52
|
+
risk: conservative # Risk tolerance for decisions
|
|
53
|
+
verbosity: detailed # How much output the agent produces
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
**Style** options include `rapid` (moves fast, starts immediately), `deliberate` (thinks before acting, maps impact first), `methodical` (follows systematic processes), `analytical` (data-driven, evidence-based), `opinionated` (has strong views, will lead), `confrontational` (challenges everything), `patient` (takes time to understand context), `proactive` (anticipates needs, speaks up unprompted), `strategic` (thinks about long-term implications), and `meticulous` (leaves nothing unchecked).
|
|
57
|
+
|
|
58
|
+
**Risk** values are `conservative` (prefers proven approaches, avoids experimentation), `balanced` (will take calculated risks with evidence), `moderate` (open to new approaches when justified), and `aggressive` (pushes boundaries, challenges the status quo).
|
|
59
|
+
|
|
60
|
+
**Verbosity** values are `concise` (minimal output, just the essentials), `precise` (exact and specific, no filler), `detailed` (thorough explanations with context), and `thorough` (comprehensive coverage with examples and rationale).
|
|
61
|
+
|
|
62
|
+
These values are not decorative. During orchestration, `buildProfileEnrichment()` injects them into the agent's prompt as `**Style:** methodical | **Risk:** conservative | **Verbosity:** detailed`. The LLM uses these parameters to calibrate its response style.
|
|
63
|
+
|
|
64
|
+
## Collaboration Graph
|
|
65
|
+
|
|
66
|
+
The `collaboration` block defines how the agent works with others:
|
|
67
|
+
|
|
68
|
+
```yaml
|
|
69
|
+
collaboration:
|
|
70
|
+
stance: advisory # Default relationship to other agents
|
|
71
|
+
pairs_well_with:
|
|
72
|
+
- architect: Security validates the architect's auth model and gate design
|
|
73
|
+
- devops: Atlas handles infra hardening, security handles app-layer auth
|
|
74
|
+
- builder: Security reviews builder's auth code before it ships
|
|
75
|
+
with:
|
|
76
|
+
architect:
|
|
77
|
+
stance: peer # Treat as equal, not subordinate
|
|
78
|
+
can_contradict: true # Allowed to disagree with architect
|
|
79
|
+
builder:
|
|
80
|
+
stance: advisory # Give guidance, not orders
|
|
81
|
+
review_output: true # Review what builder produces
|
|
82
|
+
debate:
|
|
83
|
+
will_challenge: true # Will push back on decisions
|
|
84
|
+
evidence_required: true # Requires evidence to challenge
|
|
85
|
+
escalate_to_human: true # Will ask the human to break ties
|
|
86
|
+
onboarding: >-
|
|
87
|
+
When joining a project, security:
|
|
88
|
+
1. Reads portal.yaml
|
|
89
|
+
2. Calls paradigm_gates_for_route on key routes
|
|
90
|
+
3. Checks Sentinel for auth-related events
|
|
91
|
+
4. Reviews auth middleware implementations
|
|
92
|
+
5. Identifies unprotected routes
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
The `stance` field defines the default relationship: `lead` (drives decisions), `advisory` (gives guidance), `support` (executes direction from leads), `peer` (equal footing), `challenger` (pushes back on everything). The `pairs_well_with` array lists productive agent pairings with explanations — these are surfaced during orchestration planning.
|
|
96
|
+
|
|
97
|
+
The `debate` section controls disagreement behavior. Jinx (advocate) has `will_challenge: true` and `evidence_required: false` — she challenges instinctively. The security agent has `evidence_required: true` — it backs challenges with OWASP references and CVE data. The `onboarding` field is a step-by-step procedure the agent follows when it first encounters a project.
|
|
98
|
+
|
|
99
|
+
## Expertise Tracking
|
|
100
|
+
|
|
101
|
+
The `expertise` array tracks the agent's confidence on specific symbols:
|
|
102
|
+
|
|
103
|
+
```yaml
|
|
104
|
+
expertise:
|
|
105
|
+
- symbol: '#portal-gates'
|
|
106
|
+
confidence: 0.95 # 0.0-1.0
|
|
107
|
+
sessions: 12 # Times this agent worked on this symbol
|
|
108
|
+
lastTouch: '2026-03-24T11:30:00.000Z'
|
|
109
|
+
- symbol: '#auth-security'
|
|
110
|
+
confidence: 0.95
|
|
111
|
+
sessions: 8
|
|
112
|
+
lastTouch: '2026-03-24T11:30:00.000Z'
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Confidence scores are not static. They adjust automatically based on user verdicts in the session work log: `+0.03` for accepted contributions, `-0.02` for dismissed ones, `-0.01` for revised ones. An agent that consistently gets security reviews accepted will see its `#auth-security` confidence rise over time. An agent whose suggestions are frequently dismissed will see confidence drop.
|
|
116
|
+
|
|
117
|
+
The `sessions` count and `lastTouch` timestamp provide recency context. An agent with 50 sessions on `#payment-service` that last touched it yesterday has stronger expertise than one with 2 sessions from three months ago.
|
|
118
|
+
|
|
119
|
+
## Attention Patterns
|
|
120
|
+
|
|
121
|
+
The `attention` block defines what the agent notices in the event stream:
|
|
122
|
+
|
|
123
|
+
```yaml
|
|
124
|
+
attention:
|
|
125
|
+
symbols:
|
|
126
|
+
- ^* # All gate symbols
|
|
127
|
+
- '#*-auth'
|
|
128
|
+
- '#*-middleware'
|
|
129
|
+
paths:
|
|
130
|
+
- auth/**
|
|
131
|
+
- middleware/**
|
|
132
|
+
concepts:
|
|
133
|
+
- JWT
|
|
134
|
+
- RBAC
|
|
135
|
+
- injection
|
|
136
|
+
- CSRF
|
|
137
|
+
signals:
|
|
138
|
+
- type: gate-added
|
|
139
|
+
- type: route-created
|
|
140
|
+
threshold: 0.45
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
Attention patterns were covered in depth in PARA 601. The key point here is that they are part of the agent profile, not a separate system. The agent's identity (who it is) and its attention (what it notices) are defined in the same file.
|
|
144
|
+
|
|
145
|
+
## Behaviors
|
|
146
|
+
|
|
147
|
+
The `behaviors` block defines named behavior protocols the agent follows:
|
|
148
|
+
|
|
149
|
+
```yaml
|
|
150
|
+
behaviors:
|
|
151
|
+
portal-gates-mastery: >-
|
|
152
|
+
Security owns the portal.yaml gate model:
|
|
153
|
+
1. Every route that checks auth MUST have a corresponding ^gate
|
|
154
|
+
2. Use paradigm_gates_for_route to check gate coverage
|
|
155
|
+
3. Gates need prizes: [] (v2 requirement)
|
|
156
|
+
sentinel-security-monitoring: >-
|
|
157
|
+
Security uses Sentinel for threat detection:
|
|
158
|
+
- paradigm_sentinel_events to find auth failures
|
|
159
|
+
- paradigm_sentinel_patterns for security patterns
|
|
160
|
+
security-review-checklist: >-
|
|
161
|
+
Before approving auth-related code:
|
|
162
|
+
1. Check portal.yaml coverage
|
|
163
|
+
2. Verify JWT validation
|
|
164
|
+
3. Check for OWASP Top 10 vulnerabilities
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
Behaviors are injected into the agent's orchestration prompt. They are named so that other agents and humans can reference them ("use the security-review-checklist behavior"). They define step-by-step procedures that make the agent's actions predictable and auditable.
|
|
168
|
+
|
|
169
|
+
## Transferable Patterns
|
|
170
|
+
|
|
171
|
+
The `transferable` array contains patterns the agent has learned that apply across projects:
|
|
172
|
+
|
|
173
|
+
```yaml
|
|
174
|
+
transferable:
|
|
175
|
+
- pattern: gate-coverage-check
|
|
176
|
+
description: >-
|
|
177
|
+
Every new route gets paradigm_gates_for_route called on it.
|
|
178
|
+
No exceptions. If it returns no gates and the route modifies data,
|
|
179
|
+
that's a security violation.
|
|
180
|
+
successRate: 1.0
|
|
181
|
+
sessions: 0
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
Transferable patterns travel with the agent across projects. When the security agent joins a new project, it brings its `gate-coverage-check` pattern regardless of whether the previous project was a SaaS app or a CLI tool. Patterns with `successRate >= 0.7` are included in prompt enrichment; lower success rate patterns are excluded.
|
|
185
|
+
|
|
186
|
+
## How Profiles Define WHO the Agent Is
|
|
187
|
+
|
|
188
|
+
The `.agent` file is not a configuration file — it is an identity specification. It answers:
|
|
189
|
+
|
|
190
|
+
- **Who am I?** — id, nickname, role, description, personality
|
|
191
|
+
- **What do I know?** — expertise with confidence scores
|
|
192
|
+
- **What do I notice?** — attention patterns and threshold
|
|
193
|
+
- **How do I work with others?** — collaboration stance, pairings, debate rules
|
|
194
|
+
- **How do I behave?** — named behavior protocols
|
|
195
|
+
- **What have I learned?** — transferable patterns
|
|
196
|
+
|
|
197
|
+
When the orchestrator invokes an agent, `buildProfileEnrichment()` assembles all of these fields into a prompt section that makes the LLM behave as that specific agent. The same base model (e.g., Claude Sonnet) becomes the security agent or the designer based entirely on the profile enrichment injected from the `.agent` file.
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: N-para-701-agent-roster
|
|
3
|
+
title: 'Lesson 1: The Agent Roster'
|
|
4
|
+
type: note
|
|
5
|
+
author: paradigm
|
|
6
|
+
created: '2026-04-22'
|
|
7
|
+
updated: '2026-04-22'
|
|
8
|
+
tags:
|
|
9
|
+
- course
|
|
10
|
+
- para-701
|
|
11
|
+
- 54-agents-organized
|
|
12
|
+
- each-agent-has
|
|
13
|
+
- the-orchestrator-selects
|
|
14
|
+
symbols: []
|
|
15
|
+
difficulty: beginner
|
|
16
|
+
estimatedMinutes: 5
|
|
17
|
+
prerequisites: []
|
|
18
|
+
category: paradigm-core
|
|
19
|
+
origin: imported
|
|
20
|
+
source: courses/para-701.json
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## 54 Agents, 7 Tiers
|
|
24
|
+
|
|
25
|
+
Paradigm ships with 54 named agents organized into seven functional tiers. Each agent is a narrow specialist with a defined personality, expertise domain, attention patterns, and collaboration graph. The roster is not a menu of interchangeable generalists — it is a team of specialists who are each the best at one thing.
|
|
26
|
+
|
|
27
|
+
The seven tiers group agents by function:
|
|
28
|
+
|
|
29
|
+
**Builders** — Agents that produce code and artifacts. The builder agent writes implementation code. Mika (designer) produces UI/UX designs. Wren (copywriter) writes user-facing text. Ghost (e2e) writes end-to-end tests. The tester writes unit and integration tests. These agents produce output that becomes part of the codebase.
|
|
30
|
+
|
|
31
|
+
**Reviewers** — Agents that evaluate what builders produce. The reviewer checks code quality and Paradigm compliance. Shield (qa) designs test strategy and validates acceptance criteria. Jinx (advocate) is the devil's advocate who stress-tests assumptions and finds edge cases nobody considered. Bolt (performance) reviews for performance regressions.
|
|
32
|
+
|
|
33
|
+
**Strategists** — Agents that plan and decide. The architect designs systems and leads orchestration. North (product) owns the product vision and prioritization. Yuki (pm) manages tickets and tracking. Scout (researcher) conducts competitive analysis and market research. Clause (legal) handles compliance and legal review.
|
|
34
|
+
|
|
35
|
+
**Intelligence** — Agents that gather and analyze information. Sage (analyst) performs data analysis. Beacon (seo) handles search optimization. Lens (content-intel) analyzes content strategy. Oracle (ai) specializes in AI/ML patterns and prompt engineering. Cipher (reverser) reverse-engineers systems and protocols.
|
|
36
|
+
|
|
37
|
+
**Infrastructure** — Agents that manage the platform and deployment. Atlas (devops) owns CI/CD, deployment, and monitoring. Vault (dba) manages databases, migrations, and query optimization. Root (sysadmin) handles system administration. Wire (network) specializes in networking and protocols. Ship (release) manages release coordination.
|
|
38
|
+
|
|
39
|
+
**Meta** — Agents that manage other agents. Loid (forge) designs and builds new agents — she understands the full .agent profile schema and recommends team compositions. Sensei (trainer) trains agents by reviewing their performance and curating notebook entries. The documentor maintains .purpose files and portal.yaml after other agents finish their work. Bridge (mediator) resolves disagreements between agents.
|
|
40
|
+
|
|
41
|
+
**Human Ops** — Agents that support the human directly. Sunday (secretary) is a personal operations agent who tracks goals, schedules, and commitments across all projects. Obi (mentor) provides career guidance. Sheila (educator) creates learning materials for humans. Leila (operations) handles business operations.
|
|
42
|
+
|
|
43
|
+
## Named Agents Have Personalities
|
|
44
|
+
|
|
45
|
+
Every agent has a unique nickname and personality configuration. Jinx is confrontational and aggressive — her job is to argue against the current approach. Mika is opinionated and precise — she leads design discussions and will challenge decisions. Sunday is proactive and conservative — she watches the human's commitments across all contexts. Atlas is methodical and conservative — he does not take risks with infrastructure.
|
|
46
|
+
|
|
47
|
+
These are not cosmetic names. The personality (style, risk tolerance, verbosity) shapes how the agent behaves during orchestration. A `deliberate` architect thinks carefully before responding. A `rapid` builder moves fast. A `confrontational` advocate pushes back on every assumption.
|
|
48
|
+
|
|
49
|
+
## How the Orchestrator Picks Agents
|
|
50
|
+
|
|
51
|
+
When `paradigm_orchestrate_inline` runs in plan mode, it evaluates which agents are relevant to the task. The selection process considers:
|
|
52
|
+
|
|
53
|
+
1. **Task classification** — What kind of work is this? A new feature needs builders, reviewers, and possibly security. A refactor needs the architect and reviewer. An incident needs devops, debugger, and security.
|
|
54
|
+
|
|
55
|
+
2. **Symbol matching** — Which symbols does the task touch? Each agent has attention patterns (symbols, paths, concepts, signals) that define what they notice. If the task involves `^authenticated` gates, the security agent's symbol pattern `^*` matches. If it touches `src/design/**` files, Mika's path patterns match.
|
|
56
|
+
|
|
57
|
+
3. **Attention threshold** — Each agent scores events against their attention patterns. Only agents whose relevance score meets their threshold are included. Security has a low threshold (0.45) because missing a security issue is expensive. The builder has a higher threshold (0.75) because it should only be included when directly relevant.
|
|
58
|
+
|
|
59
|
+
4. **Roster filtering** — If the project has a `roster.yaml`, only agents listed there are considered. A game project does not need SEO or legal agents. A backend API does not need a designer.
|
|
60
|
+
|
|
61
|
+
The orchestrator then stages agents in dependency order: the architect plans first, builders implement, the reviewer and security check, the documentor updates Paradigm files last.
|
|
62
|
+
|
|
63
|
+
## Why Narrow Specialists Beat Broad Generalists
|
|
64
|
+
|
|
65
|
+
A single "coding agent" that tries to build, review, test, and document produces mediocre results across all dimensions. The specialist model works because:
|
|
66
|
+
|
|
67
|
+
- **Expertise compounds** — The security agent's confidence on `#portal-gates` is 0.95 because that is all it focuses on. A generalist's confidence would be 0.5 across many domains.
|
|
68
|
+
- **Attention is focused** — The security agent watches gate symbols, auth paths, and security concepts. It does not waste attention on typography or test fixtures.
|
|
69
|
+
- **Collaboration is explicit** — The architect pairs with security to validate auth models. The builder pairs with the tester to verify implementation. These pairs are defined in the agent's collaboration graph, not left to chance.
|
|
70
|
+
- **Accountability is clear** — When a security issue ships, the security agent's acceptance rate drops. When a design is inconsistent, Mika's patterns need updating. Each agent owns a specific quality dimension.
|
|
71
|
+
|
|
72
|
+
The full roster provides coverage across code quality, security, performance, accessibility, design, testing, documentation, and business strategy. Most projects activate 15-25 agents depending on the domain. The orchestrator handles routing — the human never manually assigns agents to tasks.
|
|
73
|
+
|
|
74
|
+
| Tier | Count | Example Agents |
|
|
75
|
+
|---|---|---|
|
|
76
|
+
| Builders | ~10 | builder, designer (Mika), copywriter (Wren), tester, e2e (Ghost) |
|
|
77
|
+
| Reviewers | ~6 | reviewer, qa (Shield), advocate (Jinx), performance (Bolt) |
|
|
78
|
+
| Strategists | ~8 | architect, product (North), pm (Yuki), researcher (Scout) |
|
|
79
|
+
| Intelligence | ~7 | analyst (Sage), seo (Beacon), content-intel (Lens), ai (Oracle) |
|
|
80
|
+
| Infrastructure | ~8 | devops (Atlas), dba (Vault), sysadmin (Root), release (Ship) |
|
|
81
|
+
| Meta | ~6 | forge (Loid), trainer (Sensei), documentor, mediator (Bridge) |
|
|
82
|
+
| Human Ops | ~9 | secretary (Sunday), mentor (Obi), educator (Sheila), operations (Leila) |
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: N-para-701-agent-state
|
|
3
|
+
title: 'Lesson 4: Agent State & Continuity'
|
|
4
|
+
type: note
|
|
5
|
+
author: paradigm
|
|
6
|
+
created: '2026-04-22'
|
|
7
|
+
updated: '2026-04-22'
|
|
8
|
+
tags:
|
|
9
|
+
- course
|
|
10
|
+
- para-701
|
|
11
|
+
- project-state-at
|
|
12
|
+
- global-state-at
|
|
13
|
+
- buildprofileenrichment-injects-agent
|
|
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 Continuity Problem
|
|
24
|
+
|
|
25
|
+
Every AI session starts from zero. The model has no memory of previous sessions. If the security agent reviewed 8 files yesterday, identified 3 gate coverage gaps, and deferred 2 items to today — all of that context is lost when the session ends. The next session's security agent starts fresh, potentially re-reviewing the same files and missing the deferred items entirely.
|
|
26
|
+
|
|
27
|
+
Agent state solves this by persisting key information between sessions at two scopes: project-level state (what happened on this specific project) and global state (career statistics across all projects).
|
|
28
|
+
|
|
29
|
+
## Project State: AgentProjectState
|
|
30
|
+
|
|
31
|
+
Project-scoped state lives at `.paradigm/agent-state/{agent-id}.yaml` and captures what the agent has done on THIS project:
|
|
32
|
+
|
|
33
|
+
```typescript
|
|
34
|
+
interface AgentProjectState {
|
|
35
|
+
id: string; // Agent ID
|
|
36
|
+
project: string; // Project name
|
|
37
|
+
lastSession: { // Most recent session summary
|
|
38
|
+
date: string; // ISO timestamp
|
|
39
|
+
sessionId: string; // Session identifier
|
|
40
|
+
summary: string; // What was done
|
|
41
|
+
filesReviewed?: string[]; // Files the agent looked at
|
|
42
|
+
symbolsTouched?: string[]; // Symbols the agent worked on
|
|
43
|
+
decisions?: string[]; // Decisions made in the session
|
|
44
|
+
};
|
|
45
|
+
pendingWork: string[]; // Items deferred to next session
|
|
46
|
+
recentPatterns: string[]; // Patterns learned about this project
|
|
47
|
+
sessionsOnProject: number; // Total session count
|
|
48
|
+
lastPurposeUpdate?: string; // When .purpose was last updated
|
|
49
|
+
}
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
The `lastSession` field is the most valuable for continuity. When the agent is invoked in the next session, `buildProfileEnrichment()` injects this into the prompt:
|
|
53
|
+
|
|
54
|
+
```markdown
|
|
55
|
+
## Your Recent Work on This Project
|
|
56
|
+
Last session (3h ago): Reviewed auth middleware, found 2 missing gate
|
|
57
|
+
declarations for POST /api/payments and PUT /api/subscriptions.
|
|
58
|
+
Sessions on this project: 8
|
|
59
|
+
**Pending from last session:**
|
|
60
|
+
- Review the new webhook endpoint for gate coverage
|
|
61
|
+
- Check Sentinel for auth anomalies on the payment routes
|
|
62
|
+
**Project patterns you've learned:**
|
|
63
|
+
- This project uses sliding-window JWT rotation
|
|
64
|
+
- RLS policies follow the tenant-scoped pattern
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
The agent now has context. It knows what it did last time, what remains unfinished, and what project-specific patterns it has discovered. It does not re-review files it already checked. It picks up the pending items and continues where it left off.
|
|
68
|
+
|
|
69
|
+
## Pending Work Tracking
|
|
70
|
+
|
|
71
|
+
The `pendingWork` array is a simple but powerful mechanism. When an agent encounters work it cannot complete in the current session, it adds items:
|
|
72
|
+
|
|
73
|
+
```typescript
|
|
74
|
+
addPendingWork('security', rootDir, [
|
|
75
|
+
'Review webhook endpoint /api/webhooks/stripe for gate coverage',
|
|
76
|
+
'Check Sentinel for auth anomalies on payment routes',
|
|
77
|
+
]);
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
When the work is completed in a future session:
|
|
81
|
+
|
|
82
|
+
```typescript
|
|
83
|
+
completePendingWork('security', rootDir, [
|
|
84
|
+
'Review webhook endpoint /api/webhooks/stripe for gate coverage',
|
|
85
|
+
]);
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Pending items accumulate across sessions until explicitly completed. This creates a persistent to-do list that survives session boundaries. If the security agent defers 3 items across 3 different sessions, all 3 appear in the next session's prompt enrichment.
|
|
89
|
+
|
|
90
|
+
## Recent Patterns
|
|
91
|
+
|
|
92
|
+
The `recentPatterns` array captures project-specific knowledge:
|
|
93
|
+
|
|
94
|
+
```typescript
|
|
95
|
+
addProjectPattern('security', rootDir,
|
|
96
|
+
'This project uses Supabase RLS with tenant-scoped policies'
|
|
97
|
+
);
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Patterns are kept to a maximum of 10 (oldest are dropped when new ones are added). These are different from transferable patterns in the `.agent` file — recent patterns are project-specific and do not travel. The security agent learning "this project uses tenant-scoped RLS" is only relevant to this project. The transferable pattern "always check RLS policies on Supabase tables" applies everywhere.
|
|
101
|
+
|
|
102
|
+
## Global State: GlobalAgentState
|
|
103
|
+
|
|
104
|
+
Global state lives at `~/.paradigm/agents/{agent-id}/state.yaml` and tracks the agent's career across all projects:
|
|
105
|
+
|
|
106
|
+
```typescript
|
|
107
|
+
interface GlobalAgentState {
|
|
108
|
+
id: string; // Agent ID
|
|
109
|
+
totalSessions: number; // Lifetime session count
|
|
110
|
+
lastActiveProject: string; // Most recent project
|
|
111
|
+
lastActiveDate: string; // ISO timestamp
|
|
112
|
+
projectHistory: Array<{ // Per-project stats
|
|
113
|
+
project: string;
|
|
114
|
+
sessions: number;
|
|
115
|
+
lastActive: string;
|
|
116
|
+
}>;
|
|
117
|
+
}
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Global state provides aggregate context: "This agent has worked 47 sessions across 5 projects, most recently on dealoracle 2 hours ago." This is useful for:
|
|
121
|
+
|
|
122
|
+
- **Expertise calibration** — An agent with 47 total sessions has more experience than one with 3.
|
|
123
|
+
- **Project affinity** — An agent with 30 sessions on project A and 2 on project B has deep expertise on A.
|
|
124
|
+
- **Recency** — An agent that was last active 3 months ago may need a full onboarding pass.
|
|
125
|
+
|
|
126
|
+
Global state is updated automatically whenever `recordAgentSession()` is called — it increments `totalSessions`, updates `lastActiveProject` and `lastActiveDate`, and maintains the `projectHistory` array sorted by most recent.
|
|
127
|
+
|
|
128
|
+
## How State Feeds Into Prompts
|
|
129
|
+
|
|
130
|
+
The `buildProfileEnrichment()` function accepts an optional `agentState` parameter:
|
|
131
|
+
|
|
132
|
+
```typescript
|
|
133
|
+
buildProfileEnrichment(
|
|
134
|
+
profile,
|
|
135
|
+
relevantSymbols,
|
|
136
|
+
notebookEntries,
|
|
137
|
+
ambientContext,
|
|
138
|
+
agentState: {
|
|
139
|
+
lastSession: { summary: '...', date: '...' },
|
|
140
|
+
pendingWork: ['...'],
|
|
141
|
+
recentPatterns: ['...'],
|
|
142
|
+
sessionsOnProject: 8
|
|
143
|
+
}
|
|
144
|
+
);
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
The function assembles this into a `## Your Recent Work on This Project` section with:
|
|
148
|
+
|
|
149
|
+
1. **Last session summary with age** — "Last session (3h ago): Reviewed auth middleware..." The age is computed from the timestamp and displayed as hours or days.
|
|
150
|
+
2. **Session count** — "Sessions on this project: 8" (context for experience level)
|
|
151
|
+
3. **Pending work** — Up to 5 items from the pending work list.
|
|
152
|
+
4. **Project patterns** — Up to 5 recently learned patterns.
|
|
153
|
+
|
|
154
|
+
This section typically consumes 100-300 tokens depending on the amount of pending work and patterns. It is one of the highest-value sections in the prompt because it provides the specific, recent context that enables continuity.
|
|
155
|
+
|
|
156
|
+
## Recording Sessions
|
|
157
|
+
|
|
158
|
+
At the end of an orchestration pass, the orchestrator calls `recordAgentSession()` for each agent that participated:
|
|
159
|
+
|
|
160
|
+
```typescript
|
|
161
|
+
recordAgentSession('security', rootDir, {
|
|
162
|
+
sessionId: 'sess-2026-03-24-001',
|
|
163
|
+
summary: 'Reviewed 5 new routes for gate coverage. Found 2 gaps.',
|
|
164
|
+
filesReviewed: ['src/routes/payments.ts', 'src/routes/webhooks.ts'],
|
|
165
|
+
symbolsTouched: ['^authenticated', '^payment-owner', '#payment-service'],
|
|
166
|
+
decisions: ['Recommended adding ^payment-owner gate for refund endpoints'],
|
|
167
|
+
pendingWork: ['Review webhook endpoint for Stripe signature verification'],
|
|
168
|
+
patterns: ['This project stores Stripe webhook secrets in Supabase vault'],
|
|
169
|
+
});
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
This writes the project state file, increments the session count, and also updates global state. The next time the security agent is invoked on this project, it will see this session's summary and pending work in its prompt.
|
|
173
|
+
|
|
174
|
+
## Loading All States
|
|
175
|
+
|
|
176
|
+
The `loadAllAgentStates()` function reads all agent state files for a project, returning an array of `AgentProjectState` objects. This is useful for:
|
|
177
|
+
|
|
178
|
+
- **Dashboard views** — Conductor's agent roster view shows each agent's last session and pending work count.
|
|
179
|
+
- **Orchestration planning** — The orchestrator can check which agents have pending work on the current project and prioritize their inclusion.
|
|
180
|
+
- **Stale detection** — If an agent's last session was months ago, the orchestrator may trigger a fresh onboarding pass.
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: N-para-701-learning-feedback-loop
|
|
3
|
+
title: 'Lesson 9: The Learning Feedback Loop'
|
|
4
|
+
type: note
|
|
5
|
+
author: paradigm
|
|
6
|
+
created: '2026-04-22'
|
|
7
|
+
updated: '2026-04-22'
|
|
8
|
+
tags:
|
|
9
|
+
- course
|
|
10
|
+
- para-701
|
|
11
|
+
- session-work-log
|
|
12
|
+
- auto-expertise-adjustment-003
|
|
13
|
+
- teacher-model-runs
|
|
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 Full Loop: DO-RECORD-ASSESS-LEARN-ADAPT-DO
|
|
24
|
+
|
|
25
|
+
PARA 601 introduced the six-phase learning loop. In the context of the agent system, this loop operates at the agent level: each agent does work, records its contributions, receives verdicts, learns from the feedback, and adapts its behavior for the next session. The agent system provides the concrete mechanisms that make each phase work.
|
|
26
|
+
|
|
27
|
+
## Phase 1: DO — Agent Work
|
|
28
|
+
|
|
29
|
+
Agents perform work during orchestration. The builder writes code. The security agent reviews gates. The designer proposes UI patterns. Each contribution is captured in the session work log as an `agent-contribution` entry:
|
|
30
|
+
|
|
31
|
+
```typescript
|
|
32
|
+
interface SessionWorkEntry {
|
|
33
|
+
timestamp: string;
|
|
34
|
+
type: 'agent-contribution' | 'user-verdict' | 'decision';
|
|
35
|
+
agent?: string;
|
|
36
|
+
contribution?: string;
|
|
37
|
+
attribution?: string;
|
|
38
|
+
symbols?: string[];
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
The session work log is stored at `.paradigm/events/session-log.jsonl` as append-only JSONL, bounded to 200 entries per session. Unlike breadcrumbs (which are recovery-focused with a 50-entry limit), the session work log captures rich context specifically for the learning pass.
|
|
43
|
+
|
|
44
|
+
## Phase 2: RECORD — Verdict Capture
|
|
45
|
+
|
|
46
|
+
When a human accepts, dismisses, or revises an agent's contribution, the verdict is recorded:
|
|
47
|
+
|
|
48
|
+
```typescript
|
|
49
|
+
{
|
|
50
|
+
type: 'user-verdict',
|
|
51
|
+
agent: 'security',
|
|
52
|
+
nominationId: 'nom-2026-03-24-001',
|
|
53
|
+
verdict: 'accepted' | 'dismissed' | 'revised' | 'deferred',
|
|
54
|
+
reason: 'Gate coverage recommendation was accurate',
|
|
55
|
+
symbols: ['^authenticated', '#payment-service'],
|
|
56
|
+
revisionDelta?: '...', // What the human changed (for revised)
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Four verdict types capture the full range of human feedback:
|
|
61
|
+
|
|
62
|
+
- **accepted** — The contribution was correct and applied as-is.
|
|
63
|
+
- **dismissed** — The contribution was wrong or irrelevant.
|
|
64
|
+
- **revised** — The contribution was partially correct; the human modified it. The `revisionDelta` captures what changed.
|
|
65
|
+
- **deferred** — The contribution may be valid but is not relevant now.
|
|
66
|
+
|
|
67
|
+
Each verdict is linked to the agent and the symbols involved, enabling per-symbol confidence tracking.
|
|
68
|
+
|
|
69
|
+
## Phase 3: ASSESS — Auto-Expertise Adjustment
|
|
70
|
+
|
|
71
|
+
When a verdict is recorded, the session work log automatically adjusts the agent's expertise confidence:
|
|
72
|
+
|
|
73
|
+
```typescript
|
|
74
|
+
const delta = entry.verdict === 'accepted' ? 0.03
|
|
75
|
+
: entry.verdict === 'dismissed' ? -0.02
|
|
76
|
+
: entry.verdict === 'revised' ? -0.01
|
|
77
|
+
: 0; // deferred = no change
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
This adjustment is asymmetric by design:
|
|
81
|
+
|
|
82
|
+
- **+0.03 for accepted** — Positive reinforcement is slightly stronger than negative. This prevents a single bad review from tanking an otherwise reliable agent.
|
|
83
|
+
- **-0.02 for dismissed** — A dismissed contribution means the agent was wrong. Confidence should decrease, but not catastrophically.
|
|
84
|
+
- **-0.01 for revised** — A revised contribution was partially right. The penalty is smaller because the agent was in the right direction.
|
|
85
|
+
- **0 for deferred** — Deferral says nothing about correctness, only timing. No confidence change.
|
|
86
|
+
|
|
87
|
+
The adjustment is applied per-symbol. If the security agent's gate recommendation for `^authenticated` was accepted, its confidence on `^authenticated` increases by 0.03. Its confidence on unrelated symbols is unchanged.
|
|
88
|
+
|
|
89
|
+
```typescript
|
|
90
|
+
for (const symbol of entry.symbols!) {
|
|
91
|
+
const exp = profile.expertise!.find(e => e.symbol === symbol);
|
|
92
|
+
if (exp) {
|
|
93
|
+
exp.confidence = Math.max(0, Math.min(1, exp.confidence + delta));
|
|
94
|
+
exp.sessions = (exp.sessions || 0) + 1;
|
|
95
|
+
exp.lastTouch = new Date().toISOString();
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Confidence is clamped to `[0.0, 1.0]`. Sessions are incremented. The `lastTouch` timestamp is updated. This all happens as a fire-and-forget side effect of recording the verdict — the human never manually adjusts expertise scores.
|
|
101
|
+
|
|
102
|
+
## Phase 4: LEARN — Teacher Model and Journal Entries
|
|
103
|
+
|
|
104
|
+
At the end of an orchestration session, the Teacher Model runs a postflight learning pass. It reads the session work log, identifies patterns in the verdicts, and writes journal entries for each agent that participated:
|
|
105
|
+
|
|
106
|
+
```yaml
|
|
107
|
+
# Learning journal entry written by Teacher Model
|
|
108
|
+
id: LJ-2026-03-24-001
|
|
109
|
+
agent: security
|
|
110
|
+
timestamp: '2026-03-24T16:00:00.000Z'
|
|
111
|
+
trigger: human_feedback
|
|
112
|
+
insight: >-
|
|
113
|
+
Security review of webhook endpoints should check for Stripe
|
|
114
|
+
signature verification, not just gate coverage. The human revised
|
|
115
|
+
the gate recommendation to include webhook-specific checks.
|
|
116
|
+
project: dealoracle
|
|
117
|
+
transferable: true
|
|
118
|
+
confidence_before: 0.85
|
|
119
|
+
confidence_after: 0.84
|
|
120
|
+
pattern:
|
|
121
|
+
id: webhook-stripe-signature
|
|
122
|
+
applies_when: Reviewing webhook endpoints that receive Stripe events
|
|
123
|
+
correct_approach: Check for webhook signature verification in addition to gate coverage
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
The Teacher Model synthesizes verdict patterns into actionable journal entries. A single "revised" verdict becomes an insight about what the agent should do differently. The `trigger: human_feedback` records that this learning came from a human correction, not self-reflection.
|
|
127
|
+
|
|
128
|
+
## Phase 5: ADAPT — Journal Promotion to Notebooks
|
|
129
|
+
|
|
130
|
+
Journal entries that prove valuable over time are promoted into notebook entries by Sensei (trainer). The promotion pipeline:
|
|
131
|
+
|
|
132
|
+
```
|
|
133
|
+
Journal entry (agent-private) → Sensei reviews →
|
|
134
|
+
promoteFromLore() → Notebook entry (reusable snippet) →
|
|
135
|
+
buildProfileEnrichment() → Injected into future prompts
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
The key distinction: journal entries are raw learnings ("I was wrong about X because Y"). Notebook entries are distilled knowledge ("When doing X, use this pattern"). Sensei's job is to transform the former into the latter.
|
|
139
|
+
|
|
140
|
+
Not every journal entry becomes a notebook entry. Sensei evaluates:
|
|
141
|
+
- Is the insight transferable to other projects?
|
|
142
|
+
- Is it actionable (specific enough to apply)?
|
|
143
|
+
- Has the same insight appeared in multiple sessions (pattern confirmation)?
|
|
144
|
+
- Is the confidence high enough to be reliable?
|
|
145
|
+
|
|
146
|
+
## Phase 6: The Nomination Engine
|
|
147
|
+
|
|
148
|
+
The nomination engine connects the learning loop to real-time project activity. As events flow through the event stream, each active agent scores them against their attention patterns:
|
|
149
|
+
|
|
150
|
+
```
|
|
151
|
+
Event (file-modified, gate-added, etc.)
|
|
152
|
+
↓
|
|
153
|
+
scoreEventForAgent(event, agentId, attention)
|
|
154
|
+
↓
|
|
155
|
+
AttentionScore { score, shouldNominate, breakdown }
|
|
156
|
+
↓
|
|
157
|
+
If shouldNominate → Create nomination
|
|
158
|
+
↓
|
|
159
|
+
Nomination surfaced in orchestration or paradigm_ambient_nominations
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
The nomination engine is the adaptive component: as an agent's attention patterns evolve (new concepts, adjusted thresholds), its nominations change. As its expertise confidence adjusts, its contributions become more or less influential. The system adapts based on empirical performance, not fixed rules.
|
|
163
|
+
|
|
164
|
+
## The Complete Cycle
|
|
165
|
+
|
|
166
|
+
Putting all six phases together for a single agent:
|
|
167
|
+
|
|
168
|
+
```
|
|
169
|
+
1. DO: Security agent reviews webhook endpoint, flags missing gate
|
|
170
|
+
2. RECORD: Human accepts the gate recommendation → verdict: accepted
|
|
171
|
+
3. ASSESS: Security confidence on ^authenticated: 0.85 → 0.88 (+0.03)
|
|
172
|
+
4. LEARN: Teacher Model writes journal entry about webhook gate patterns
|
|
173
|
+
5. ADAPT: Sensei promotes journal → notebook entry for webhook security
|
|
174
|
+
6. DO: Next session, security agent starts with webhook pattern in
|
|
175
|
+
its prompt via buildProfileEnrichment(). It applies the pattern
|
|
176
|
+
without needing to rediscover it.
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
Each iteration through the loop makes the agent incrementally better. After 10 sessions with consistent feedback, the security agent's webhook review pattern is battle-tested, high-confidence, and automatically injected into every relevant orchestration. The human no longer needs to remind the agent about webhook-specific checks — the learning loop closed.
|
|
180
|
+
|
|
181
|
+
## What Makes This Different
|
|
182
|
+
|
|
183
|
+
Most AI systems have observation without adaptation. They log what happened but do not feed it back. Paradigm's agent system closes the loop through four mechanisms:
|
|
184
|
+
|
|
185
|
+
1. **Per-symbol expertise tracking** — Confidence adjusts based on verdicts, not manual scoring
|
|
186
|
+
2. **Asymmetric reinforcement** — +0.03/-0.02/-0.01 prevents a single bad session from destroying confidence
|
|
187
|
+
3. **Teacher Model postflight** — Journal entries are written automatically, not relying on agents to self-reflect
|
|
188
|
+
4. **Notebook promotion** — Insights become reusable patterns via Sensei, surfaced through buildProfileEnrichment()
|