mirror-mind 0.0.1 → 0.33.0
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/.claude/hooks/log-assistant-reply.sh +85 -0
- package/.claude/hooks/log-session-end.sh +85 -0
- package/.claude/hooks/log-user-prompt.sh +85 -0
- package/.claude/hooks/mirror-inject.sh +85 -0
- package/.claude/hooks/session-start.sh +85 -0
- package/.gemini/hooks/log-assistant.sh +85 -0
- package/.gemini/hooks/log-user.sh +85 -0
- package/.gemini/hooks/session-end.sh +85 -0
- package/.gemini/hooks/session-start.sh +85 -0
- package/.pi/extensions/mirror-logger.ts +646 -0
- package/.pi/skills/mm-backup/SKILL.md +21 -0
- package/.pi/skills/mm-build/SKILL.md +1206 -0
- package/.pi/skills/mm-consolidate/SKILL.md +112 -0
- package/.pi/skills/mm-consult/SKILL.md +70 -0
- package/.pi/skills/mm-conversations/SKILL.md +16 -0
- package/.pi/skills/mm-discard/SKILL.md +39 -0
- package/.pi/skills/mm-explore/SKILL.md +255 -0
- package/.pi/skills/mm-help/SKILL.md +74 -0
- package/.pi/skills/mm-identity/SKILL.md +96 -0
- package/.pi/skills/mm-journal/SKILL.md +16 -0
- package/.pi/skills/mm-journey/SKILL.md +23 -0
- package/.pi/skills/mm-journeys/SKILL.md +15 -0
- package/.pi/skills/mm-memories/SKILL.md +17 -0
- package/.pi/skills/mm-mirror/SKILL.md +98 -0
- package/.pi/skills/mm-mute/SKILL.md +18 -0
- package/.pi/skills/mm-new/SKILL.md +18 -0
- package/.pi/skills/mm-recall/SKILL.md +17 -0
- package/.pi/skills/mm-release-notes/SKILL.md +52 -0
- package/.pi/skills/mm-seed/SKILL.md +19 -0
- package/.pi/skills/mm-shadow/SKILL.md +117 -0
- package/.pi/skills/mm-soul/SKILL.md +502 -0
- package/.pi/skills/mm-tasks/SKILL.md +24 -0
- package/.pi/skills/mm-update/SKILL.md +32 -0
- package/.pi/skills/mm-week/SKILL.md +28 -0
- package/.pi/skills/mm-welcome/SKILL.md +24 -0
- package/AGENTS.md +188 -0
- package/README.md +126 -9
- package/bin/loader.js +67 -0
- package/bin/mirror-hook.js +7 -0
- package/bin/mirror.js +7 -0
- package/docs/releases/index.md +100 -0
- package/docs/releases/pending-cutoffs.md +510 -0
- package/docs/releases/v0.10.0.md +123 -0
- package/docs/releases/v0.10.1.md +66 -0
- package/docs/releases/v0.10.10.md +51 -0
- package/docs/releases/v0.10.11.md +39 -0
- package/docs/releases/v0.10.12.md +57 -0
- package/docs/releases/v0.10.13.md +35 -0
- package/docs/releases/v0.10.14.md +42 -0
- package/docs/releases/v0.10.15.md +53 -0
- package/docs/releases/v0.10.16.md +35 -0
- package/docs/releases/v0.10.17.md +43 -0
- package/docs/releases/v0.10.2.md +64 -0
- package/docs/releases/v0.10.3.md +78 -0
- package/docs/releases/v0.10.4.md +42 -0
- package/docs/releases/v0.10.5.md +57 -0
- package/docs/releases/v0.10.6.md +47 -0
- package/docs/releases/v0.10.7.md +53 -0
- package/docs/releases/v0.10.8.md +49 -0
- package/docs/releases/v0.10.9.md +37 -0
- package/docs/releases/v0.11.0.md +86 -0
- package/docs/releases/v0.12.0.md +67 -0
- package/docs/releases/v0.13.0.md +64 -0
- package/docs/releases/v0.14.0.md +68 -0
- package/docs/releases/v0.15.0.md +48 -0
- package/docs/releases/v0.16.0.md +50 -0
- package/docs/releases/v0.16.1.md +55 -0
- package/docs/releases/v0.16.2.md +36 -0
- package/docs/releases/v0.17.0.md +50 -0
- package/docs/releases/v0.17.1.md +58 -0
- package/docs/releases/v0.17.2.md +42 -0
- package/docs/releases/v0.17.3.md +58 -0
- package/docs/releases/v0.18.0.md +84 -0
- package/docs/releases/v0.18.1.md +51 -0
- package/docs/releases/v0.18.2.md +69 -0
- package/docs/releases/v0.19.0.md +85 -0
- package/docs/releases/v0.19.1.md +46 -0
- package/docs/releases/v0.20.0.md +85 -0
- package/docs/releases/v0.21.0.md +61 -0
- package/docs/releases/v0.21.1.md +47 -0
- package/docs/releases/v0.22.0.md +77 -0
- package/docs/releases/v0.22.1.md +42 -0
- package/docs/releases/v0.23.0.md +105 -0
- package/docs/releases/v0.24.0.md +125 -0
- package/docs/releases/v0.25.0.md +107 -0
- package/docs/releases/v0.26.0.md +139 -0
- package/docs/releases/v0.26.1.md +65 -0
- package/docs/releases/v0.26.2.md +43 -0
- package/docs/releases/v0.27.0.md +63 -0
- package/docs/releases/v0.28.0.md +59 -0
- package/docs/releases/v0.29.0.md +61 -0
- package/docs/releases/v0.29.1.md +59 -0
- package/docs/releases/v0.29.2.md +59 -0
- package/docs/releases/v0.29.3.md +93 -0
- package/docs/releases/v0.30.0.md +75 -0
- package/docs/releases/v0.30.1.md +93 -0
- package/docs/releases/v0.30.2.md +66 -0
- package/docs/releases/v0.31.0.md +122 -0
- package/docs/releases/v0.31.1.md +142 -0
- package/docs/releases/v0.31.10.md +118 -0
- package/docs/releases/v0.31.11.md +88 -0
- package/docs/releases/v0.31.12.md +105 -0
- package/docs/releases/v0.31.13.md +99 -0
- package/docs/releases/v0.31.14.md +97 -0
- package/docs/releases/v0.31.2.md +115 -0
- package/docs/releases/v0.31.3.md +142 -0
- package/docs/releases/v0.31.4.md +117 -0
- package/docs/releases/v0.31.5.md +155 -0
- package/docs/releases/v0.31.6.md +132 -0
- package/docs/releases/v0.31.7.md +132 -0
- package/docs/releases/v0.31.8.md +120 -0
- package/docs/releases/v0.31.9.md +120 -0
- package/docs/releases/v0.32.0.md +261 -0
- package/docs/releases/v0.32.1.md +59 -0
- package/docs/releases/v0.33.0.md +164 -0
- package/docs/releases/v0.8.0.md +118 -0
- package/docs/releases/v0.9.0.md +98 -0
- package/docs/releases/v0.9.1.md +83 -0
- package/package.json +102 -6
- package/plugins/mirror-mind/.claude-plugin/plugin.json +17 -0
- package/plugins/mirror-mind/hooks/hooks.json +62 -0
- package/plugins/mirror-mind/hooks/log-assistant-reply.sh +98 -0
- package/plugins/mirror-mind/hooks/log-session-end.sh +98 -0
- package/plugins/mirror-mind/hooks/log-user-prompt.sh +98 -0
- package/plugins/mirror-mind/hooks/mirror-inject.sh +98 -0
- package/plugins/mirror-mind/hooks/session-start.sh +98 -0
- package/plugins/mirror-mind/skills/mm-backup/SKILL.md +27 -0
- package/plugins/mirror-mind/skills/mm-build/SKILL.md +1206 -0
- package/plugins/mirror-mind/skills/mm-consolidate/SKILL.md +112 -0
- package/plugins/mirror-mind/skills/mm-consult/SKILL.md +83 -0
- package/plugins/mirror-mind/skills/mm-conversations/SKILL.md +17 -0
- package/plugins/mirror-mind/skills/mm-discard/SKILL.md +40 -0
- package/plugins/mirror-mind/skills/mm-explore/SKILL.md +241 -0
- package/plugins/mirror-mind/skills/mm-help/SKILL.md +104 -0
- package/plugins/mirror-mind/skills/mm-identity/SKILL.md +96 -0
- package/plugins/mirror-mind/skills/mm-journal/SKILL.md +21 -0
- package/plugins/mirror-mind/skills/mm-journey/SKILL.md +37 -0
- package/plugins/mirror-mind/skills/mm-journeys/SKILL.md +15 -0
- package/plugins/mirror-mind/skills/mm-memories/SKILL.md +20 -0
- package/plugins/mirror-mind/skills/mm-mirror/SKILL.md +67 -0
- package/plugins/mirror-mind/skills/mm-mute/SKILL.md +18 -0
- package/plugins/mirror-mind/skills/mm-new/SKILL.md +18 -0
- package/plugins/mirror-mind/skills/mm-recall/SKILL.md +17 -0
- package/plugins/mirror-mind/skills/mm-release-notes/SKILL.md +31 -0
- package/plugins/mirror-mind/skills/mm-seed/SKILL.md +15 -0
- package/plugins/mirror-mind/skills/mm-shadow/SKILL.md +117 -0
- package/plugins/mirror-mind/skills/mm-soul/SKILL.md +488 -0
- package/plugins/mirror-mind/skills/mm-tasks/SKILL.md +36 -0
- package/plugins/mirror-mind/skills/mm-update/SKILL.md +30 -0
- package/plugins/mirror-mind/skills/mm-week/SKILL.md +46 -0
- package/plugins/mirror-mind/skills/mm-welcome/SKILL.md +22 -0
- package/scripts/codex-hooks/session-end.sh +85 -0
- package/scripts/codex-hooks/session-start.sh +85 -0
- package/scripts/codex-mirror.sh +48 -0
- package/templates/identity/README.md +119 -0
- package/templates/identity/ego/behavior.yaml +52 -0
- package/templates/identity/ego/constraints.yaml +15 -0
- package/templates/identity/ego/identity.yaml +43 -0
- package/templates/identity/journeys/personal-growth.yaml +39 -0
- package/templates/identity/organization/identity.yaml +24 -0
- package/templates/identity/organization/principles.yaml +17 -0
- package/templates/identity/personas/coach.yaml +94 -0
- package/templates/identity/personas/designer.yaml +93 -0
- package/templates/identity/personas/doctor.yaml +96 -0
- package/templates/identity/personas/engineer.yaml +77 -0
- package/templates/identity/personas/financial.yaml +97 -0
- package/templates/identity/personas/prompt-engineer.yaml +122 -0
- package/templates/identity/personas/researcher.yaml +88 -0
- package/templates/identity/personas/strategist.yaml +91 -0
- package/templates/identity/personas/teacher.yaml +95 -0
- package/templates/identity/personas/therapist.yaml +91 -0
- package/templates/identity/personas/thinker.yaml +74 -0
- package/templates/identity/personas/writer.yaml +76 -0
- package/templates/identity/self/config.yaml +16 -0
- package/templates/identity/self/soul.yaml +105 -0
- package/templates/identity/user/identity.yaml +30 -0
- package/ts/src/backup/staging.ts +62 -0
- package/ts/src/backup/zipBackup.ts +267 -0
- package/ts/src/backup/zipReader.ts +109 -0
- package/ts/src/backup/zipWriter.ts +148 -0
- package/ts/src/builder/activeCheckpoint.ts +134 -0
- package/ts/src/builder/aggregateStatus.ts +34 -0
- package/ts/src/builder/approve.ts +149 -0
- package/ts/src/builder/argv.ts +292 -0
- package/ts/src/builder/ariadMethod.ts +536 -0
- package/ts/src/builder/artifacts/artifactSurfaces.ts +106 -0
- package/ts/src/builder/artifacts/artifactWriter.ts +113 -0
- package/ts/src/builder/artifacts/closureArtifacts.ts +199 -0
- package/ts/src/builder/artifacts/deliveryStoryArtifacts.ts +316 -0
- package/ts/src/builder/artifacts/planArtifacts.ts +242 -0
- package/ts/src/builder/artifacts/scaffoldSections.ts +273 -0
- package/ts/src/builder/artifacts/scaffoldState.ts +227 -0
- package/ts/src/builder/artifacts/storyFiles.ts +61 -0
- package/ts/src/builder/artifacts/storyIndex.ts +166 -0
- package/ts/src/builder/cadence.ts +59 -0
- package/ts/src/builder/card.ts +192 -0
- package/ts/src/builder/checkpointRefused.ts +66 -0
- package/ts/src/builder/closure.ts +964 -0
- package/ts/src/builder/commands.ts +2053 -0
- package/ts/src/builder/cursorPosition.ts +176 -0
- package/ts/src/builder/cursorTransitions.ts +77 -0
- package/ts/src/builder/deliveryCursor.ts +577 -0
- package/ts/src/builder/deliveryStoryClosure.ts +521 -0
- package/ts/src/builder/deliveryStoryPlan.ts +536 -0
- package/ts/src/builder/deliveryStoryReady.ts +160 -0
- package/ts/src/builder/deliveryStoryRoadmapClosure.ts +151 -0
- package/ts/src/builder/expand.ts +336 -0
- package/ts/src/builder/flowUnit.ts +339 -0
- package/ts/src/builder/homeSurface.ts +122 -0
- package/ts/src/builder/implementationGuard.ts +125 -0
- package/ts/src/builder/index.ts +11 -0
- package/ts/src/builder/lifecycleRefusal.ts +92 -0
- package/ts/src/builder/lifecycleRibbon.ts +159 -0
- package/ts/src/builder/load.ts +313 -0
- package/ts/src/builder/methodAdoption.ts +113 -0
- package/ts/src/builder/methodDefinition.ts +429 -0
- package/ts/src/builder/methodInspection.ts +371 -0
- package/ts/src/builder/plan.ts +408 -0
- package/ts/src/builder/planPreauthorization.ts +265 -0
- package/ts/src/builder/prepare.ts +225 -0
- package/ts/src/builder/projectPaths.ts +64 -0
- package/ts/src/builder/pull.ts +356 -0
- package/ts/src/builder/pullCandidates.ts +463 -0
- package/ts/src/builder/pullCandidatesRender.ts +238 -0
- package/ts/src/builder/refinementField.ts +93 -0
- package/ts/src/builder/releaseIntent.ts +173 -0
- package/ts/src/builder/resumeState.ts +84 -0
- package/ts/src/builder/resumeSurface.ts +149 -0
- package/ts/src/builder/roadmapGrammar.ts +300 -0
- package/ts/src/builder/roadmapScan.ts +97 -0
- package/ts/src/builder/roadmapScope.ts +210 -0
- package/ts/src/builder/scopePhrases.ts +146 -0
- package/ts/src/builder/storyPaths.ts +196 -0
- package/ts/src/builder/storyPlanPreauthorization.ts +287 -0
- package/ts/src/builder/surfaceProtocol.ts +42 -0
- package/ts/src/builder/templateGeneration.ts +148 -0
- package/ts/src/builder/transition.ts +178 -0
- package/ts/src/consult/args.ts +99 -0
- package/ts/src/consult/core.ts +122 -0
- package/ts/src/consult/modelCatalog.ts +55 -0
- package/ts/src/consult/render.ts +47 -0
- package/ts/src/conversation/append.ts +414 -0
- package/ts/src/conversation/backfill.ts +387 -0
- package/ts/src/conversation/closeTail.ts +467 -0
- package/ts/src/conversation/extraction.ts +333 -0
- package/ts/src/conversation/extractionDriver.ts +130 -0
- package/ts/src/conversation/extractionRun.ts +70 -0
- package/ts/src/conversation/hookPayload.ts +51 -0
- package/ts/src/conversation/journeyInference.ts +165 -0
- package/ts/src/conversation/journeyRepair.ts +114 -0
- package/ts/src/conversation/lifecycleFaces.ts +197 -0
- package/ts/src/conversation/lifecycleWrites.ts +313 -0
- package/ts/src/conversation/listing.ts +77 -0
- package/ts/src/conversation/logger.ts +851 -0
- package/ts/src/conversation/loggerCli.ts +321 -0
- package/ts/src/conversation/loggerRuntime.ts +259 -0
- package/ts/src/conversation/metadataLifecycle.ts +443 -0
- package/ts/src/conversation/recall.ts +66 -0
- package/ts/src/conversation/sessionComposites.ts +258 -0
- package/ts/src/conversation/sessionImport.ts +90 -0
- package/ts/src/conversation/transcriptBackfill.ts +141 -0
- package/ts/src/cultivation/applyActions.ts +241 -0
- package/ts/src/cultivation/cluster.ts +86 -0
- package/ts/src/cultivation/consolidationStore.ts +281 -0
- package/ts/src/cultivation/promptContext.ts +62 -0
- package/ts/src/cultivation/propose.ts +305 -0
- package/ts/src/cultivation/scan.ts +155 -0
- package/ts/src/db/backupGate.ts +47 -0
- package/ts/src/db/bootstrap.ts +108 -0
- package/ts/src/db/bootstrapLock.ts +223 -0
- package/ts/src/db/copyGuard.ts +60 -0
- package/ts/src/db/database.ts +397 -0
- package/ts/src/db/decode.ts +66 -0
- package/ts/src/db/ftsIntegrity.ts +41 -0
- package/ts/src/db/migrateOnOpen.ts +214 -0
- package/ts/src/db/migrations.ts +576 -0
- package/ts/src/db/readyOnOpen.ts +35 -0
- package/ts/src/db/rowDecode.ts +42 -0
- package/ts/src/db/schema.ts +432 -0
- package/ts/src/db/schemaInventory.ts +225 -0
- package/ts/src/db/schemaInventorySnapshot.ts +2107 -0
- package/ts/src/db/schemaState.ts +91 -0
- package/ts/src/db/schemaTsDivergence.ts +114 -0
- package/ts/src/descriptor/descriptorRead.ts +49 -0
- package/ts/src/docs/docsLint.ts +265 -0
- package/ts/src/explorer/handoff.ts +522 -0
- package/ts/src/explorer/render.ts +335 -0
- package/ts/src/explorer/story.ts +769 -0
- package/ts/src/explorer/transition.ts +72 -0
- package/ts/src/extensions/bindings.ts +170 -0
- package/ts/src/extensions/catalog.ts +249 -0
- package/ts/src/extensions/catalogCommands.ts +513 -0
- package/ts/src/extensions/catalogWrites.ts +652 -0
- package/ts/src/extensions/contextRuntime.ts +325 -0
- package/ts/src/extensions/dispatch.ts +374 -0
- package/ts/src/extensions/errors.ts +24 -0
- package/ts/src/extensions/manifest.ts +356 -0
- package/ts/src/extensions/migrations.ts +350 -0
- package/ts/src/extraction/conversation.ts +304 -0
- package/ts/src/extraction/conversationMetadata.ts +206 -0
- package/ts/src/extraction/fencing.ts +106 -0
- package/ts/src/extraction/json.ts +17 -0
- package/ts/src/extraction/prompts.ts +470 -0
- package/ts/src/frontDoor/args.ts +30 -0
- package/ts/src/frontDoor/argvShape.ts +106 -0
- package/ts/src/frontDoor/buildLoadRuntime.ts +139 -0
- package/ts/src/frontDoor/buildRoute.ts +398 -0
- package/ts/src/frontDoor/cli.ts +1872 -0
- package/ts/src/frontDoor/cloneRoleGuard.ts +98 -0
- package/ts/src/frontDoor/consultRoute.ts +50 -0
- package/ts/src/frontDoor/contentTailRoute.ts +239 -0
- package/ts/src/frontDoor/conversationLoggerRoute.ts +83 -0
- package/ts/src/frontDoor/cultivationRoute.ts +210 -0
- package/ts/src/frontDoor/dbPath.ts +131 -0
- package/ts/src/frontDoor/dbSafetyToolsRoute.ts +240 -0
- package/ts/src/frontDoor/exploreRoute.ts +572 -0
- package/ts/src/frontDoor/extensionCatalogRoute.ts +252 -0
- package/ts/src/frontDoor/frontDoorLog.ts +57 -0
- package/ts/src/frontDoor/identityWrite.ts +36 -0
- package/ts/src/frontDoor/journeyWriteRoute.ts +26 -0
- package/ts/src/frontDoor/lifecycleWriteRoute.ts +110 -0
- package/ts/src/frontDoor/liveBackup.ts +100 -0
- package/ts/src/frontDoor/mirrorModeRoute.ts +163 -0
- package/ts/src/frontDoor/namedRefusal.ts +35 -0
- package/ts/src/frontDoor/nodeSupport.ts +24 -0
- package/ts/src/frontDoor/render/consolidate.ts +199 -0
- package/ts/src/frontDoor/render/conversations.ts +33 -0
- package/ts/src/frontDoor/render/cultivationShared.ts +21 -0
- package/ts/src/frontDoor/render/descriptor.ts +20 -0
- package/ts/src/frontDoor/render/detectPersona.ts +50 -0
- package/ts/src/frontDoor/render/icons.ts +13 -0
- package/ts/src/frontDoor/render/identity.ts +59 -0
- package/ts/src/frontDoor/render/identityRows.ts +17 -0
- package/ts/src/frontDoor/render/inspectPersona.ts +53 -0
- package/ts/src/frontDoor/render/journeyStatus.ts +78 -0
- package/ts/src/frontDoor/render/journeys.ts +79 -0
- package/ts/src/frontDoor/render/list.ts +41 -0
- package/ts/src/frontDoor/render/memories.ts +67 -0
- package/ts/src/frontDoor/render/recall.ts +49 -0
- package/ts/src/frontDoor/render/shadow.ts +155 -0
- package/ts/src/frontDoor/render/tasks.ts +99 -0
- package/ts/src/frontDoor/render/tasksImportSync.ts +63 -0
- package/ts/src/frontDoor/render/week.ts +113 -0
- package/ts/src/frontDoor/routing.ts +1001 -0
- package/ts/src/frontDoor/runtimeRoute.ts +623 -0
- package/ts/src/frontDoor/searchRoute.ts +166 -0
- package/ts/src/frontDoor/seedPaths.ts +98 -0
- package/ts/src/frontDoor/sessionStartWelcomeRoute.ts +166 -0
- package/ts/src/frontDoor/soulRoute.ts +433 -0
- package/ts/src/frontDoor/stdinSource.ts +37 -0
- package/ts/src/frontDoor/tasksImportSyncRoute.ts +110 -0
- package/ts/src/frontDoor/tasksWriteRoute.ts +101 -0
- package/ts/src/frontDoor/usage.ts +176 -0
- package/ts/src/guards/claudePlugin.ts +298 -0
- package/ts/src/guards/packContents.ts +306 -0
- package/ts/src/guards/piSourcedSkills.ts +70 -0
- package/ts/src/guards/retiredRouteShadows.ts +57 -0
- package/ts/src/guards/retiredSurfaces.ts +564 -0
- package/ts/src/hooks/claude.ts +214 -0
- package/ts/src/hooks/codex.ts +45 -0
- package/ts/src/hooks/gemini.ts +126 -0
- package/ts/src/hooks/main.ts +109 -0
- package/ts/src/hooks/mirrorState.ts +71 -0
- package/ts/src/hooks/payload.ts +73 -0
- package/ts/src/hooks/runtime.ts +179 -0
- package/ts/src/hooks/runtimeDetection.ts +34 -0
- package/ts/src/identity/applyConsolidationIdentityUpdate.ts +67 -0
- package/ts/src/identity/descriptorGenerate.ts +162 -0
- package/ts/src/identity/identityEdit.ts +143 -0
- package/ts/src/identity/identityKey.ts +77 -0
- package/ts/src/identity/identityRead.ts +69 -0
- package/ts/src/identity/identityStore.ts +80 -0
- package/ts/src/identity/journeyListing.ts +53 -0
- package/ts/src/identity/personaInspect.ts +44 -0
- package/ts/src/identity/personaListing.ts +37 -0
- package/ts/src/identity/setIdentity.ts +64 -0
- package/ts/src/index.ts +231 -0
- package/ts/src/init/init.ts +111 -0
- package/ts/src/journey/journeyOptions.ts +131 -0
- package/ts/src/journey/journeyRemoval.ts +158 -0
- package/ts/src/journey/journeyStatus.ts +149 -0
- package/ts/src/journey/journeySyncFile.ts +87 -0
- package/ts/src/journey/journeyWrite.ts +203 -0
- package/ts/src/journey/parentJourney.ts +41 -0
- package/ts/src/journey/validateParentJourney.ts +55 -0
- package/ts/src/mcp/boundary.ts +151 -0
- package/ts/src/mcp/guards.ts +244 -0
- package/ts/src/mcp/main.ts +121 -0
- package/ts/src/mcp/payload.ts +141 -0
- package/ts/src/mcp/protocol.ts +141 -0
- package/ts/src/mcp/readModels.ts +241 -0
- package/ts/src/mcp/registry.ts +201 -0
- package/ts/src/mcp/serve.ts +120 -0
- package/ts/src/mcp/tools/deterministic.ts +137 -0
- package/ts/src/mcp/tools/providerCrossing.ts +187 -0
- package/ts/src/mcp/wire.ts +8 -0
- package/ts/src/memory/journal.ts +180 -0
- package/ts/src/memory/listing.ts +107 -0
- package/ts/src/memory/memoryWrite.ts +88 -0
- package/ts/src/memory/reinforcement.ts +35 -0
- package/ts/src/mirror/context.ts +161 -0
- package/ts/src/mirror/defaultResolution.ts +199 -0
- package/ts/src/mirror/mirrorForm.ts +43 -0
- package/ts/src/mirror/orchestration.ts +364 -0
- package/ts/src/mirror/reception.ts +194 -0
- package/ts/src/mirror/render.ts +75 -0
- package/ts/src/mirror/runtimeSession.ts +205 -0
- package/ts/src/mode/operatingMode.ts +148 -0
- package/ts/src/observability/callOutcome.ts +115 -0
- package/ts/src/observability/inspectLedger.ts +329 -0
- package/ts/src/observability/ledgerHooks.ts +126 -0
- package/ts/src/observability/llmCalls.ts +154 -0
- package/ts/src/persona/detectPersona.ts +81 -0
- package/ts/src/planning/promptAssembly.ts +111 -0
- package/ts/src/planning/weekPending.ts +81 -0
- package/ts/src/planning/weekPlan.ts +183 -0
- package/ts/src/planning/weekSave.ts +117 -0
- package/ts/src/providers/config.ts +189 -0
- package/ts/src/providers/cost.ts +64 -0
- package/ts/src/providers/credits.ts +204 -0
- package/ts/src/providers/embedding.ts +321 -0
- package/ts/src/providers/familyProviders.ts +147 -0
- package/ts/src/providers/llm.ts +334 -0
- package/ts/src/providers/openrouter.ts +244 -0
- package/ts/src/providers/redaction.ts +110 -0
- package/ts/src/providers/replay.ts +15 -0
- package/ts/src/providers/transport.ts +410 -0
- package/ts/src/repair/encodingRepair.ts +253 -0
- package/ts/src/runtime/backup.ts +151 -0
- package/ts/src/runtime/channel.ts +146 -0
- package/ts/src/runtime/config.ts +168 -0
- package/ts/src/runtime/diagnose.ts +686 -0
- package/ts/src/runtime/git.ts +510 -0
- package/ts/src/runtime/installKind.ts +220 -0
- package/ts/src/runtime/migrate.ts +154 -0
- package/ts/src/runtime/packageIdentity.ts +102 -0
- package/ts/src/runtime/releaseNotes.ts +244 -0
- package/ts/src/runtime/status.ts +557 -0
- package/ts/src/runtime/strategies/clone.ts +200 -0
- package/ts/src/runtime/strategies/package.ts +328 -0
- package/ts/src/runtime/treeRoot.ts +30 -0
- package/ts/src/runtime/update.ts +445 -0
- package/ts/src/runtime/updateGate.ts +40 -0
- package/ts/src/runtime/updatePipeline.ts +159 -0
- package/ts/src/runtime/version.ts +36 -0
- package/ts/src/runtime/wiring.ts +130 -0
- package/ts/src/search/memorySearch.ts +338 -0
- package/ts/src/search/ranker.ts +154 -0
- package/ts/src/seed/seed.ts +256 -0
- package/ts/src/seed/seedYaml.ts +133 -0
- package/ts/src/soul/apply.ts +218 -0
- package/ts/src/soul/harvest.ts +267 -0
- package/ts/src/soul/prompts/soul_beauty_voice.md +103 -0
- package/ts/src/soul/prompts/soul_self_voice.md +219 -0
- package/ts/src/soul/prompts/soul_wisdom_voice.md +121 -0
- package/ts/src/soul/prompts.ts +85 -0
- package/ts/src/soul/render.ts +358 -0
- package/ts/src/soul/state.ts +212 -0
- package/ts/src/soul/transition.ts +37 -0
- package/ts/src/tasks/journeyPathParse.ts +113 -0
- package/ts/src/tasks/taskImportSync.ts +142 -0
- package/ts/src/tasks/taskStore.ts +312 -0
- package/ts/src/tasks/weekView.ts +120 -0
- package/ts/src/util/clipCodePoints.ts +26 -0
- package/ts/src/util/paths.ts +63 -0
- package/ts/src/util/program.ts +9 -0
- package/ts/src/util/pyGenerators.ts +144 -0
- package/ts/src/util/pythonText.ts +317 -0
- package/ts/src/util/semver.ts +45 -0
- package/ts/src/util/shellWord.ts +25 -0
- package/ts/src/util/slug.ts +64 -0
- package/ts/src/welcome/card.ts +339 -0
- package/ts/src/welcome/statusLine.ts +101 -0
- package/ts/src/welcome/updateCache.ts +129 -0
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
---
|
|
2
|
+
digest: >
|
|
3
|
+
v0.20.0 introduces one-level hierarchical journey organization. Journeys can
|
|
4
|
+
now name a parent journey, the web console can create and edit that parent
|
|
5
|
+
relationship, and Workspace renders the hierarchy with session-persistent
|
|
6
|
+
expand/collapse. Journey settings also gain safe title and status editing, and
|
|
7
|
+
textual journey lists preserve the same hierarchy through mm-journeys. The
|
|
8
|
+
release keeps hierarchy display-only: conversations, memories, tasks, routing,
|
|
9
|
+
Builder context, extraction, and search remain journey-specific.
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# v0.20.0 — Hierarchical Journey Organization
|
|
13
|
+
|
|
14
|
+
**Date:** 2026-06-02
|
|
15
|
+
|
|
16
|
+
## Highlights
|
|
17
|
+
|
|
18
|
+
- Adds `parent_journey` metadata for one-level journey hierarchy.
|
|
19
|
+
- Adds parent selection to **New journey** and Journey Settings in the web console.
|
|
20
|
+
- Adds safe Journey Settings editing for title and status without changing the slug.
|
|
21
|
+
- Renders parent/child journeys in the Workspace sidebar with session-persistent expand/collapse.
|
|
22
|
+
- Keeps completed journeys hidden by default behind a toggle while preserving hierarchy when shown.
|
|
23
|
+
- Dims paused and completed journeys so active journeys remain visually primary.
|
|
24
|
+
- Updates `mm-journeys` / `python -m memory journeys` to render the hierarchy and preserve indentation.
|
|
25
|
+
- Updates journey-list skill instructions so natural-language journey-list requests preserve the hierarchical output.
|
|
26
|
+
|
|
27
|
+
## Where We Started
|
|
28
|
+
|
|
29
|
+
The web console had become useful enough for conversation and journey
|
|
30
|
+
maintenance that a flat journey list started to become the next source of
|
|
31
|
+
friction. Some journeys clearly belonged under broader fields of work, but the
|
|
32
|
+
product had no way to express that relationship. At the same time, completed
|
|
33
|
+
journeys still needed to be accessible for editing and reassignment without
|
|
34
|
+
polluting the active sidebar all the time.
|
|
35
|
+
|
|
36
|
+
The exploration behind CV15 sharpened the boundary: hierarchy should organize
|
|
37
|
+
attention, not merge identity. A child journey remains a normal journey with its
|
|
38
|
+
own conversations, memories, tasks, Builder context, routing, and extraction.
|
|
39
|
+
The parent journey is a visible broader field, not an implicit context mix.
|
|
40
|
+
|
|
41
|
+
## What Changed
|
|
42
|
+
|
|
43
|
+
Journey metadata now accepts a `parent_journey` field with guarded validation.
|
|
44
|
+
A journey can have one parent, the parent must exist, a journey cannot parent
|
|
45
|
+
itself, and the first slice rejects deeper nesting. The web console exposes this
|
|
46
|
+
through **New journey** and Journey Settings.
|
|
47
|
+
|
|
48
|
+
Journey Settings also gained safe title and status editing. The title edit
|
|
49
|
+
updates only the first markdown H1 in the journey identity. The status edit
|
|
50
|
+
updates only the `**Status:**` line. Neither operation renames the slug or moves
|
|
51
|
+
conversations, memories, tasks, attachments, routing descriptors, or Builder
|
|
52
|
+
configuration.
|
|
53
|
+
|
|
54
|
+
Workspace now renders the journey sidebar hierarchically. Parent journeys can be
|
|
55
|
+
expanded or collapsed, and that expansion state persists for the browser session.
|
|
56
|
+
Paused and completed journeys are visually dimmed. Completed journeys are hidden
|
|
57
|
+
by default behind a toggle, but when shown they appear in their correct
|
|
58
|
+
hierarchical position rather than in a separate flat archive list.
|
|
59
|
+
|
|
60
|
+
The textual journey list now uses the same hierarchy. `/mm-journeys`,
|
|
61
|
+
`/mm:journeys`, and natural-language journey-list requests route to the CLI
|
|
62
|
+
rendering and preserve its indentation instead of flattening it.
|
|
63
|
+
|
|
64
|
+
## Conscious Exclusions
|
|
65
|
+
|
|
66
|
+
- No Scene Workspace Home is included in this release.
|
|
67
|
+
- No LLM synthesis is included in this release.
|
|
68
|
+
- No automatic parent-child memory, routing, Builder, extraction, task, or search inheritance is introduced.
|
|
69
|
+
- No recursive hierarchy or multiple parents are supported.
|
|
70
|
+
- No journey slug rename or deletion cascade is included.
|
|
71
|
+
|
|
72
|
+
## What We Learned
|
|
73
|
+
|
|
74
|
+
A hierarchy can easily become a folder system if the product treats it as only a
|
|
75
|
+
navigation convenience. The useful boundary is more precise: hierarchy organizes
|
|
76
|
+
the field so the Mirror can later return cognitive location. This release
|
|
77
|
+
therefore keeps the implementation deliberately structural and display-only,
|
|
78
|
+
preparing the ground for Scene without pretending Scene already exists.
|
|
79
|
+
|
|
80
|
+
## Next Horizon
|
|
81
|
+
|
|
82
|
+
The next release in CV15 is **Scene Workspace Home**. With the hierarchy now
|
|
83
|
+
available as a stable read model, Workspace can begin answering “where am I
|
|
84
|
+
now?” through a Scene surface, movement signals, horizons, and bounded LLM
|
|
85
|
+
synthesis over existing Mirror data.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
---
|
|
2
|
+
digest: >
|
|
3
|
+
v0.21.0 closes CV15.DS2 by turning Workspace into a cognitive-location home.
|
|
4
|
+
The release adds a deterministic Scene read model, narrative global Workspace
|
|
5
|
+
surfaces, persisted Scene Orientation, and focused journey orientation as a
|
|
6
|
+
first-class tab. It keeps journey as the operational primitive: hierarchy and
|
|
7
|
+
orientation organize what the user sees without silently merging memory,
|
|
8
|
+
routing, Builder context, extraction, search, tasks, or conversation
|
|
9
|
+
assignment. The release also refines the web console so conversations and
|
|
10
|
+
journey management live inside the Workspace shell instead of breaking
|
|
11
|
+
navigation.
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# v0.21.0 — Scene Workspace Home
|
|
15
|
+
|
|
16
|
+
**Date:** 2026-06-02
|
|
17
|
+
|
|
18
|
+
## Highlights
|
|
19
|
+
|
|
20
|
+
- Workspace now opens to a global **Current Scene** instead of automatically selecting the first journey.
|
|
21
|
+
- **Your Moment** separates global surfaces from **Your Journeys**: Current Scene, Conversations, and All journeys are no longer mixed into the journey tree.
|
|
22
|
+
- Scene Orientation is persisted, structured, and grounded in a bounded deterministic Scene read model.
|
|
23
|
+
- Global orientation can generate automatically only the first time; focused journey orientations are always user-invoked.
|
|
24
|
+
- Focused journey orientation appears as the first journey tab, before Briefing, Attachments, Conversations, and Settings.
|
|
25
|
+
- Conversations now render as a compact, date-grouped list suitable for many conversations, with journey shown as contextual metadata.
|
|
26
|
+
- All journeys now provides broader journey-field cards with status icons for parent and child journeys.
|
|
27
|
+
|
|
28
|
+
## Where We Started
|
|
29
|
+
|
|
30
|
+
CV15.DS1 gave Mirror Mind one-level journey hierarchy. That made the Workspace easier to organize, but it still behaved like a project browser: opening the Workspace selected a journey immediately, global context was ambiguous, and maintenance surfaces such as unassigned conversations leaked into the journey tree.
|
|
31
|
+
|
|
32
|
+
DS2 started from the question behind Cognitive Location: when the user opens Workspace, Mirror should answer where the user is situated now, not only list containers.
|
|
33
|
+
|
|
34
|
+
## What Changed
|
|
35
|
+
|
|
36
|
+
Workspace now carries a deterministic `scene` read model composed from the journey field, selected journey state, hierarchy, recent conversations, memories, decisions, open tasks, nearby journeys, and horizon signals. The read model is bounded before it reaches the LLM layer, and Scene remains a surface rather than a user-managed object.
|
|
37
|
+
|
|
38
|
+
The web console now distinguishes **Your Moment** from **Your Journeys**. Your Moment contains Current Scene, Conversations, and All journeys. Your Journeys contains only real journey navigation. Conversations and All journeys render inside the Workspace shell, so the sidebar remains present and navigation no longer breaks when moving between global Workspace surfaces.
|
|
39
|
+
|
|
40
|
+
Scene Orientation became a lifecycle rather than a raw model response. The orientation is stored internally under `scene_orientation`, normalized into title, summary, signals, and next movement, and marked outdated when the underlying Scene source hash changes. The UI renders outdated orientation with a subtle visual indicator and lets the user refresh it deliberately.
|
|
41
|
+
|
|
42
|
+
The invocation policy is intentionally asymmetric. Global Current Scene may generate automatically once when no orientation exists, giving the Workspace a living first impression. After that, updates are explicit. Focused journey orientations are always invoked by the user, because asking Mirror to read a specific journey should remain a deliberate gesture.
|
|
43
|
+
|
|
44
|
+
## Conscious Exclusions
|
|
45
|
+
|
|
46
|
+
- No automatic context inheritance between parent and child journeys.
|
|
47
|
+
- No memory, search, routing, Builder, extraction, task, or conversation-assignment merging across hierarchy.
|
|
48
|
+
- No user-managed Scene entity.
|
|
49
|
+
- No hidden regeneration loop after the first missing global orientation.
|
|
50
|
+
- No automatic mutation from orientation synthesis.
|
|
51
|
+
- No recursive hierarchy beyond the one-level foundation from v0.20.0.
|
|
52
|
+
|
|
53
|
+
## What We Learned
|
|
54
|
+
|
|
55
|
+
Cognitive location needs editorial restraint. Exposing every deterministic signal in the main card made the Scene feel like diagnostics instead of orientation. The better shape is layered: the read model stays explicit and bounded in the system, while the primary UI offers a readable orientation and keeps operational surfaces nearby.
|
|
56
|
+
|
|
57
|
+
We also learned that invocation matters. Orientation has interpretive weight, so generation should feel invited. The global first-run exception helps the Workspace come alive without turning every journey read into an unsolicited interpretation.
|
|
58
|
+
|
|
59
|
+
## Next Horizon
|
|
60
|
+
|
|
61
|
+
CV15 now has both layers: hierarchical organization and Scene-based cognitive location. The visible horizon is validation in daily use: how often orientations become stale, whether the structured synthesis stays useful, and whether the Workspace needs deeper search/filter controls for high-volume Conversations.
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
digest: >
|
|
3
|
+
v0.21.1 is a patch release for Mirror Mode conversation continuity. It fixes
|
|
4
|
+
a regression where repeated `memory mirror load` calls inside one Pi session
|
|
5
|
+
could close the current conversation and create a new one, fragmenting a
|
|
6
|
+
single human conversation into many two-message records. Mirror Mode now binds
|
|
7
|
+
the resolved persona and journey to the current open conversation instead of
|
|
8
|
+
switching conversations; explicit new-conversation commands remain the
|
|
9
|
+
boundary mechanism.
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# v0.21.1 — Mirror Mode Conversation Continuity
|
|
13
|
+
|
|
14
|
+
**Date:** 2026-06-03
|
|
15
|
+
|
|
16
|
+
## Highlights
|
|
17
|
+
|
|
18
|
+
- Repeated Mirror Mode context loads no longer split an active conversation.
|
|
19
|
+
- Persona/journey context is bound to the current open runtime conversation.
|
|
20
|
+
- Explicit conversation switching remains available through `conversation-logger switch` / new-conversation flows.
|
|
21
|
+
- Regression coverage protects Pi sessions that call `mirror load` repeatedly while processing one long conversation.
|
|
22
|
+
|
|
23
|
+
## Where We Started
|
|
24
|
+
|
|
25
|
+
During a `vida-economica` bill-payment session on 2026-06-01, a single Pi session was recorded as many short conversations. Investigation showed that repeated `uv run python -m memory mirror load --persona ... --journey ...` calls were being treated as conversation boundaries.
|
|
26
|
+
|
|
27
|
+
That was wrong. Loading Mirror context is not the same as starting a new conversation.
|
|
28
|
+
|
|
29
|
+
## What Changed
|
|
30
|
+
|
|
31
|
+
Mirror Mode now uses a binding path for normal context loads. If the runtime session already has an open conversation, the resolved persona and journey are written onto that conversation and runtime session. A new conversation is created only when the session does not already have an open conversation.
|
|
32
|
+
|
|
33
|
+
The existing explicit switch path remains intact for user-invoked new-conversation boundaries.
|
|
34
|
+
|
|
35
|
+
## Conscious Exclusions
|
|
36
|
+
|
|
37
|
+
- This release does not merge historical split conversations automatically.
|
|
38
|
+
- It does not change `mm-new` or explicit conversation switching semantics.
|
|
39
|
+
- It does not alter extraction, title generation, or journey inference policies.
|
|
40
|
+
|
|
41
|
+
## What We Learned
|
|
42
|
+
|
|
43
|
+
Context activation and conversation boundaries must stay separate. A command can need to refresh identity, persona, journey, and attachments many times inside one runtime session without implying a new memory record.
|
|
44
|
+
|
|
45
|
+
## Next Horizon
|
|
46
|
+
|
|
47
|
+
The repaired `vida-economica` session should be treated as the audit case for this class of bug. Future runtime integration work should preserve the same invariant: repeated context loads are idempotent with respect to conversation identity.
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
digest: >
|
|
3
|
+
v0.22.0 adds mode orientation for Mirror's three primary lenses and a runtime
|
|
4
|
+
hygiene path for test sessions. Mirror now starts new sessions from present
|
|
5
|
+
intention, shows the active mode in the Pi status line, renders transition
|
|
6
|
+
surfaces for Mirror, Builder, and Explorer Mode, introduces the experimental
|
|
7
|
+
Explorer lens, and adds `/mm-discard` so test conversations can be deleted
|
|
8
|
+
before quitting.
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# v0.22.0 — Mode Orientation and Test Hygiene
|
|
12
|
+
|
|
13
|
+
**Date:** 2026-06-06
|
|
14
|
+
|
|
15
|
+
## Highlights
|
|
16
|
+
|
|
17
|
+
- Mirror now has explicit mode lifecycle for `◌ Mirror Mode`, `■ Builder Mode`, and `△ Explorer Mode`.
|
|
18
|
+
- The Pi status line shows the current mode and active journey when present.
|
|
19
|
+
- Mode changes render compact transition surfaces in the conversation.
|
|
20
|
+
- New sessions start in `◌ Mirror Mode` from present intention, without inheriting stale Builder/Explorer mode or the last journey.
|
|
21
|
+
- Explorer Mode exists as an experimental journey lens while the full exploratory behavior is being built.
|
|
22
|
+
- `/mm-discard` deletes the current runtime conversation before quitting a test session.
|
|
23
|
+
|
|
24
|
+
## Where We Started
|
|
25
|
+
|
|
26
|
+
Explorer Mode needed a foundation before its exploratory behavior could be built.
|
|
27
|
+
As soon as a third lens entered the product language, two older ambiguities became
|
|
28
|
+
visible: Mirror did not clearly show which lens was active, and runtime test
|
|
29
|
+
sessions polluted the personal conversation database.
|
|
30
|
+
|
|
31
|
+
The first implementation also revealed a subtle product distinction: a new Mirror
|
|
32
|
+
session is an act of intention, not an assumption of continuity with the previous
|
|
33
|
+
journey. Continuity belongs inside an active session or an explicitly reopened
|
|
34
|
+
journey.
|
|
35
|
+
|
|
36
|
+
## What Changed
|
|
37
|
+
|
|
38
|
+
`memory mode activate|deactivate|status` now stores the active operating lens.
|
|
39
|
+
`memory mirror load`, `memory build load`, and `memory explore load` activate the
|
|
40
|
+
corresponding lenses and feed the Pi status line through `welcome --status-line`.
|
|
41
|
+
|
|
42
|
+
Mode transition surfaces now orient the user at the moment of lens change:
|
|
43
|
+
Mirror Mode shows identity, journey, persona routing, and available lenses;
|
|
44
|
+
Builder Mode shows journey context, project path, briefing, and the construction
|
|
45
|
+
boundary; Explorer Mode shows an experimental availability note and the
|
|
46
|
+
uncertainty-preservation boundary.
|
|
47
|
+
|
|
48
|
+
Pi session start now clears stale explicit mode and sticky journey context, so a
|
|
49
|
+
fresh session opens as `◇ alisson-vale · ◌ Mirror Mode · ✓` unless the user
|
|
50
|
+
activates a journey again.
|
|
51
|
+
|
|
52
|
+
The new `/mm-discard` skill calls `conversation-logger discard-current`, deletes
|
|
53
|
+
the current conversation through the existing deletion service, and marks the
|
|
54
|
+
runtime session so the assistant confirmation is not logged as a replacement
|
|
55
|
+
conversation.
|
|
56
|
+
|
|
57
|
+
## Conscious Exclusions
|
|
58
|
+
|
|
59
|
+
- This release does not implement the full Explorer Mode story-thickening engine.
|
|
60
|
+
- Explorer Mode persistence, Signal Radar, Narrative Field Snapshot, and Builder promotion remain future CV16 work.
|
|
61
|
+
- `/mm-discard` does not force-close Pi; it discards the conversation and tells the user to quit.
|
|
62
|
+
- Discarding a conversation follows existing deletion semantics: extracted memories are detached, not deleted.
|
|
63
|
+
|
|
64
|
+
## What We Learned
|
|
65
|
+
|
|
66
|
+
Mode and journey are different axes. Mode is the lens of operation; journey is
|
|
67
|
+
situated intention. They can meet in the status line, but their lifecycles should
|
|
68
|
+
not be conflated.
|
|
69
|
+
|
|
70
|
+
We also learned that transition surfaces and status bars solve different
|
|
71
|
+
problems. The status bar preserves orientation over time; the transition surface
|
|
72
|
+
makes the moment of change visible.
|
|
73
|
+
|
|
74
|
+
## Next Horizon
|
|
75
|
+
|
|
76
|
+
The next CV16 work can move from orientation to behavior: Explorer activation
|
|
77
|
+
contract, in-session exploratory state, and reliable Story Thickened rendering.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
digest: >
|
|
3
|
+
v0.22.1 is a validation patch for v0.22.0. It preserves the Mode Orientation
|
|
4
|
+
and Test Hygiene behavior and applies the formatting correction required by
|
|
5
|
+
the repository-wide CI format check.
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# v0.22.1 — Mode Orientation CI Formatting
|
|
9
|
+
|
|
10
|
+
**Date:** 2026-06-06
|
|
11
|
+
|
|
12
|
+
## Highlights
|
|
13
|
+
|
|
14
|
+
- Preserves the v0.22.0 mode orientation and `/mm-discard` behavior.
|
|
15
|
+
- Reformats the touched conversation-logger test file so CI format checks pass.
|
|
16
|
+
- Keeps v0.22.0 as the feature release and v0.22.1 as the validation patch.
|
|
17
|
+
|
|
18
|
+
## Where We Started
|
|
19
|
+
|
|
20
|
+
After promoting v0.22.0, GitHub Actions failed at the repository-wide `ruff
|
|
21
|
+
format --check src tests` step. Local focused tests and lint had passed, but the
|
|
22
|
+
full format gate surfaced one unformatted test file.
|
|
23
|
+
|
|
24
|
+
## What Changed
|
|
25
|
+
|
|
26
|
+
This patch applies the formatting correction and bumps the package version to
|
|
27
|
+
v0.22.1 so the stable channel can move forward through a clean release artifact.
|
|
28
|
+
|
|
29
|
+
## Conscious Exclusions
|
|
30
|
+
|
|
31
|
+
- No behavior changes beyond the v0.22.0 release content.
|
|
32
|
+
- No additional Explorer Mode scope.
|
|
33
|
+
|
|
34
|
+
## What We Learned
|
|
35
|
+
|
|
36
|
+
Run the repository-wide format check before promotion, not only focused lint and
|
|
37
|
+
tests.
|
|
38
|
+
|
|
39
|
+
## Next Horizon
|
|
40
|
+
|
|
41
|
+
Continue CV16 with the Explorer activation contract and in-session exploratory
|
|
42
|
+
state now that the mode foundation is packaged.
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
---
|
|
2
|
+
digest: >
|
|
3
|
+
v0.23.0 completes the first durable Explorer Mode release. Explorer now holds
|
|
4
|
+
an Exploratory Story beyond one fragile runtime session, resumes it visibly,
|
|
5
|
+
thickens it through required surfaces, and can promote it into Builder with
|
|
6
|
+
provenance-rich handoff evidence. The release also hardens the Explorer/Builder
|
|
7
|
+
boundary: required Explorer cards are marked for runtime rendering, operational
|
|
8
|
+
mutation requests route through Builder, and Pi status-line mode state is
|
|
9
|
+
scoped to the active session. Multiple simultaneous stories and the future Soul
|
|
10
|
+
Mode implementation remain outside this release.
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# v0.23.0 — Durable Explorer Mode
|
|
14
|
+
|
|
15
|
+
**Date:** 2026-06-07
|
|
16
|
+
|
|
17
|
+
## Highlights
|
|
18
|
+
|
|
19
|
+
- Adds durable `exploratory_stories` storage with active, archived, and promoted lifecycle states.
|
|
20
|
+
- Resumes active Exploratory Stories when Explorer Mode is activated for a journey.
|
|
21
|
+
- Links Builder handoff artifacts to durable story ids and source conversation evidence.
|
|
22
|
+
- Adds privacy-safe optional `full-conversation.md` export with obfuscation for sensitive evidence.
|
|
23
|
+
- Marks required Explorer surfaces so Pi can render user-facing cards before commentary.
|
|
24
|
+
- Routes clear operational mutation requests from Explorer to Builder before file, code, or doc changes.
|
|
25
|
+
- Makes Pi operating-mode status session-scoped to avoid footer leaks between simultaneous sessions.
|
|
26
|
+
|
|
27
|
+
## Where We Started
|
|
28
|
+
|
|
29
|
+
Explorer Mode had already proven the conversational shape of exploration: a user
|
|
30
|
+
could enter the lens, open an Exploratory Story, thicken it, name attractors,
|
|
31
|
+
propose experiments, and promote a candidate into Builder. The weakness was that
|
|
32
|
+
Explorer still depended too much on a fragile session and on assistant discipline.
|
|
33
|
+
A real Soul Mode validation exposed the gap: the handoff captured final state,
|
|
34
|
+
but not enough of the source conversations, thickening path, examples, decisions,
|
|
35
|
+
and uncertainty that made the exploration trustworthy.
|
|
36
|
+
|
|
37
|
+
The release therefore needed to turn Explorer from a promising mode into a
|
|
38
|
+
recoverable, inspectable product surface.
|
|
39
|
+
|
|
40
|
+
## What Changed
|
|
41
|
+
|
|
42
|
+
Explorer Stories are now durable records. The new storage layer keeps one active
|
|
43
|
+
story per journey, preserves historical archived and promoted stories, and stores
|
|
44
|
+
the evolving story fields: title, current story, narrative summary, last card,
|
|
45
|
+
attractors, experiment proposal, Builder handoff state, and source conversation
|
|
46
|
+
metadata. Activating Explorer Mode for a journey now resumes the active story
|
|
47
|
+
with `△ EXPLORATORY STORY RESUMED` instead of silently starting from an empty
|
|
48
|
+
field.
|
|
49
|
+
|
|
50
|
+
Builder handoff became an editorial transfer artifact. Handoff generation can
|
|
51
|
+
attach source conversations, preserve their role in the exploration, list source
|
|
52
|
+
evidence in `index.md`, and write a `handoff-info.md` completeness checklist. Raw
|
|
53
|
+
conversation evidence is intentionally opt-in through `--include-full-conversation`.
|
|
54
|
+
When included, Mirror writes privacy-reviewed material and obfuscates local paths,
|
|
55
|
+
secrets, emails, and phone-like values before creating `full-conversation.md`.
|
|
56
|
+
|
|
57
|
+
The runtime boundary also became stricter. Explorer command output can wrap
|
|
58
|
+
required user-facing cards with stable `[[MIRROR_REQUIRED_SURFACE_BEGIN:...]]`
|
|
59
|
+
and `[[MIRROR_REQUIRED_SURFACE_END:...]]` markers so the assistant runtime knows
|
|
60
|
+
which surface must be rendered first. The Pi Explorer skill now instructs the
|
|
61
|
+
assistant to show the required block while hiding marker lines. It also names the
|
|
62
|
+
operational boundary explicitly: Explorer preserves uncertainty; Builder executes
|
|
63
|
+
commitment. If the user asks Explorer to edit files, apply procedures, create
|
|
64
|
+
code, run commands, or otherwise mutate project state, Mirror should answer with
|
|
65
|
+
`△ EXPLORER → BUILDER BOUNDARY` and route the work into Builder before mutation.
|
|
66
|
+
|
|
67
|
+
A validation bug in Pi's footer was fixed at the same boundary. Operating mode
|
|
68
|
+
state used to be effectively global, so two open Pi sessions could overwrite one
|
|
69
|
+
another's status line. Mode activation, deactivation, lookup, Builder load,
|
|
70
|
+
Explorer load, and `welcome --status-line` now accept a session id. The Pi
|
|
71
|
+
extension passes the current session id, while CLI callers without a session id
|
|
72
|
+
retain a global fallback.
|
|
73
|
+
|
|
74
|
+
Finally, stale Explorer copy was removed. Explorer no longer describes itself as
|
|
75
|
+
an experimental mode whose full experience will be available soon. The activation
|
|
76
|
+
surface now states that Explorer Mode is active and ready for durable exploration,
|
|
77
|
+
story thickening, attractors, experiments, and Builder handoff.
|
|
78
|
+
|
|
79
|
+
## Conscious Exclusions
|
|
80
|
+
|
|
81
|
+
- Multiple simultaneous active Exploratory Stories per journey are still out of scope.
|
|
82
|
+
- Explorer does not become a hidden intent detector; the user activates the lens explicitly.
|
|
83
|
+
- Explorer does not mutate project state directly. Builder remains the delivery lens.
|
|
84
|
+
- The generated `docs/project/explorations/` handoff artifacts from validation are intentionally not part of this release. They remain local material for the next Soul Mode implementation.
|
|
85
|
+
- Advanced Explorer capabilities, richer web visibility, and Soul Mode itself remain future work.
|
|
86
|
+
|
|
87
|
+
## What We Learned
|
|
88
|
+
|
|
89
|
+
Explorer's value is not just that it can summarize uncertainty. Its value appears
|
|
90
|
+
when uncertainty becomes durable enough to return to, visible enough to trust,
|
|
91
|
+
and bounded enough not to become accidental implementation. The Soul Mode
|
|
92
|
+
validation made the evidence problem concrete: Builder does not only need a final
|
|
93
|
+
brief; it needs enough provenance to understand why the brief exists.
|
|
94
|
+
|
|
95
|
+
The Pi status-line leak also clarified that operating mode is a session property
|
|
96
|
+
when a runtime has session identity. A global fallback is useful for CLI
|
|
97
|
+
compatibility, but interactive runtimes need scoped mode state to remain honest.
|
|
98
|
+
|
|
99
|
+
## Next Horizon
|
|
100
|
+
|
|
101
|
+
The next visible horizon is Soul Mode. The local exploration artifacts generated
|
|
102
|
+
during validation should seed that work, but the implementation should begin from
|
|
103
|
+
Builder with a fresh delivery plan rather than being bundled into this Explorer
|
|
104
|
+
release. Explorer can now hold and promote that kind of discovery without forcing
|
|
105
|
+
it prematurely into construction.
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
---
|
|
2
|
+
digest: >
|
|
3
|
+
v0.24.0 introduces the first complete Soul Mode ritual. Mirror can now enter a
|
|
4
|
+
dedicated inward listening mode, receive the user's day as living field, offer
|
|
5
|
+
situated Possible Listenings, listen through Self Voice or Shadow Voice, mature
|
|
6
|
+
one provisional fruit, harvest it, and save exactly one journal entry after
|
|
7
|
+
explicit confirmation. The release also adds a Soul Mode prompt foundation with
|
|
8
|
+
dynamic Self identity injection, formatted journal visibility in the web app,
|
|
9
|
+
and a clear Soul-to-Builder operational boundary. Wisdom Voice, Beauty Voice,
|
|
10
|
+
Passagem, Return To Center, and psyche-layer enrichment remain future runway.
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# v0.24.0 — Soul Mode First Ritual
|
|
14
|
+
|
|
15
|
+
**Date:** 2026-06-08
|
|
16
|
+
|
|
17
|
+
## Highlights
|
|
18
|
+
|
|
19
|
+
- Adds `☾ Soul Mode` activation through `/mm-soul [slug]` and `python -m memory soul load [slug]`.
|
|
20
|
+
- Renders the Soul Mode entry surface with the inward-day invitation.
|
|
21
|
+
- Adds Possible Listenings with situated Self, Shadow, Wisdom, and Beauty options.
|
|
22
|
+
- Implements first-release listening lenses for Self Voice and Shadow Voice.
|
|
23
|
+
- Keeps the user conversing with Mirror while voice responses appear inside ritual cards.
|
|
24
|
+
- Adds Fruit In Maturation state so one provisional harvest can be refined across turns.
|
|
25
|
+
- Adds Harvested Fruit and explicit save-or-decline journal confirmation.
|
|
26
|
+
- Saves Soul Mode harvests as structured Markdown journal entries with origin metadata.
|
|
27
|
+
- Injects the user's `self/soul` identity layer into the composed Self Voice prompt.
|
|
28
|
+
- Adds a Soul-to-Builder boundary so Soul Mode does not mutate project state directly.
|
|
29
|
+
- Improves web visibility for Journal memories, formatted journal detail, and conversation maintenance.
|
|
30
|
+
|
|
31
|
+
## Where We Started
|
|
32
|
+
|
|
33
|
+
Soul Mode began as an exploration of ritual and visual grammar for helping the
|
|
34
|
+
user remember who they are. The early question was not how to add another chat
|
|
35
|
+
command, but how to create a passage of state: from ordinary reporting, into
|
|
36
|
+
inner listening, through a voice or rite, toward a fruit that could be kept.
|
|
37
|
+
|
|
38
|
+
The product risk was overbuilding. Soul Mode has a broad horizon: Wisdom Voice,
|
|
39
|
+
Beauty Voice, Passagem, Return To Center, literary and philosophical fragments,
|
|
40
|
+
richer curation, psyche-layer integration, and possible web surfaces. The first
|
|
41
|
+
release needed to prove the core grammar without pretending the whole ecosystem
|
|
42
|
+
was complete.
|
|
43
|
+
|
|
44
|
+
## What Changed
|
|
45
|
+
|
|
46
|
+
Soul Mode is now an explicit operating lens. Activating it renders a ritual entry
|
|
47
|
+
surface with the line `Soul Mode turns the day toward the inner life`, the horizon
|
|
48
|
+
`✦ IN ORDER TO / remember who you are`, and the opening question `how is your day
|
|
49
|
+
going today?`. The mode is represented in the lifecycle and status line as `☾
|
|
50
|
+
Soul Mode`.
|
|
51
|
+
|
|
52
|
+
The opening conversation now has a visible threshold. Thin day reports are held
|
|
53
|
+
as living field without forcing a menu. When the user moves from events into
|
|
54
|
+
inner contract, fear, wound, desire, compulsion, discomfort, or threatened
|
|
55
|
+
belonging, Mirror can render `✧ POSSIBLE LISTENINGS` with situated options. The
|
|
56
|
+
card ends by telling the user they can hear one of the voices now or continue the
|
|
57
|
+
conversation.
|
|
58
|
+
|
|
59
|
+
The first implemented voices are Self and Shadow, but they are not separate chat
|
|
60
|
+
characters. They are listening lenses. When the user chooses one, Mirror renders
|
|
61
|
+
a card such as `✦ SELF VOICE LISTENING` or `◐ SHADOW VOICE LISTENING`; the voice
|
|
62
|
+
response appears inside the card, and Mirror then bridges that response back into
|
|
63
|
+
the conversation. This avoids splitting the dialogue between agent and voice.
|
|
64
|
+
Self Voice is additionally grounded in the user's current `self/soul` identity
|
|
65
|
+
layer through `python -m memory soul prompt self`, so the user's incorporated
|
|
66
|
+
principles can shape what the voice hears over time.
|
|
67
|
+
|
|
68
|
+
Soul Mode can now mature one provisional fruit. `python -m memory soul fruit set`
|
|
69
|
+
stores and renders `❦ FRUIT IN MATURATION`; a later `fruit set` replaces the
|
|
70
|
+
same fruit rather than accumulating disconnected takeaways. When the user asks to
|
|
71
|
+
harvest, `python -m memory soul harvest set` renders `❦ HARVESTED FRUIT` and asks
|
|
72
|
+
`save to journal?`. Only explicit confirmation calls `harvest save`, which
|
|
73
|
+
creates one journal entry and clears the harvested state. Decline clears the
|
|
74
|
+
state without saving.
|
|
75
|
+
|
|
76
|
+
The journal path became richer during validation. Soul Mode harvests are now
|
|
77
|
+
structured Markdown entries with a title, fruit block, origin metadata, and when
|
|
78
|
+
available a link back to the source conversation. The web app now exposes Journal
|
|
79
|
+
as its own pinned memory category, opens memory cards as object detail pages,
|
|
80
|
+
renders journal Markdown with headings, blockquotes, lists, code, and safe
|
|
81
|
+
internal links, and can navigate journal origin links back to the source
|
|
82
|
+
conversation.
|
|
83
|
+
|
|
84
|
+
Pre-release usage also produced several web and maintenance refinements: full
|
|
85
|
+
turn deletion in conversation detail, formatted journal cards, top navigation for
|
|
86
|
+
Workspace, Conversations, Journeys, Operations, Configuration, Preferences, and
|
|
87
|
+
Docs, and styling fixes for conversation journey assignment.
|
|
88
|
+
|
|
89
|
+
## Conscious Exclusions
|
|
90
|
+
|
|
91
|
+
- Wisdom Voice and Beauty Voice can appear as Possible Listenings, but they do not yet open full rites.
|
|
92
|
+
- Passagem remains a future rite, not part of this first release.
|
|
93
|
+
- Return To Center and Closing Day rituals remain future work.
|
|
94
|
+
- Soul Mode does not yet enrich Self, Shadow, Ego, persona, or journey identity layers after harvest.
|
|
95
|
+
- No automatic psyche mutation exists. Future identity enrichment must be proposed with visible diff and explicit confirmation.
|
|
96
|
+
- No rich web ritual UI is included. The first release validates textual ritual grammar.
|
|
97
|
+
- Soul Mode does not execute implementation work. Operational mutation requests must route to Builder Mode.
|
|
98
|
+
|
|
99
|
+
## What We Learned
|
|
100
|
+
|
|
101
|
+
The most important product correction was that voices should be heard, not
|
|
102
|
+
conversed with. When Self Voice or Shadow Voice behaved like a separate
|
|
103
|
+
interlocutor, the user could lose track of whether they were speaking to Mirror
|
|
104
|
+
or to the voice. The cleaner grammar is: the user always converses with Mirror;
|
|
105
|
+
Mirror listens through a voice; the voice appears in a card; Mirror bridges the
|
|
106
|
+
voice back to the conversation.
|
|
107
|
+
|
|
108
|
+
Self Voice also became clearer through use. It should not help solve the problem.
|
|
109
|
+
It should mirror what is not being seen, using the user's incorporated principles
|
|
110
|
+
to reveal what is happening. That distinction matters because Soul Mode is not a
|
|
111
|
+
coaching workflow. It is a ritual listening mode.
|
|
112
|
+
|
|
113
|
+
The harvest boundary also became sharper. The journal is not a transcript sink.
|
|
114
|
+
It receives one chosen fruit only after the user asks to harvest and confirms
|
|
115
|
+
saving. The web app then needs to treat that entry as a meaningful record, not as
|
|
116
|
+
plain text hidden inside a generic memory category.
|
|
117
|
+
|
|
118
|
+
## Next Horizon
|
|
119
|
+
|
|
120
|
+
The next Soul Mode horizon is integration. A future release should add a Closing
|
|
121
|
+
Rite that reviews harvested material and asks what wants to remain in the
|
|
122
|
+
Mirror's living psyche: Self principles, Shadow listening hypotheses, Ego
|
|
123
|
+
behavior, persona refinements, or journey memory. That work belongs after this
|
|
124
|
+
first ritual release because it touches identity mutation and must be designed
|
|
125
|
+
around explicit confirmation.
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
---
|
|
2
|
+
digest: >
|
|
3
|
+
v0.25.0 expands Soul Mode with two new active listening lenses: Wisdom Voice
|
|
4
|
+
and Beauty Voice. Wisdom now lets the user's material be crossed by a solemn,
|
|
5
|
+
source-shaped utterance from a thinker, text, tradition, or old teaching, with
|
|
6
|
+
Mirror bridging the source back to the user's concrete situation outside the
|
|
7
|
+
card. Beauty now listens through image, texture, rhythm, atmosphere, poetry,
|
|
8
|
+
literature, music, and the form of aliveness without forcing positivity. Both
|
|
9
|
+
voices render their full utterance inside the ritual card and avoid automatic
|
|
10
|
+
journal, identity, or project-state mutation.
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# v0.25.0 — Soul Mode More Voices
|
|
14
|
+
|
|
15
|
+
**Date:** 2026-06-08
|
|
16
|
+
|
|
17
|
+
## Highlights
|
|
18
|
+
|
|
19
|
+
- Adds Wisdom Voice as a full active Soul Mode listening lens.
|
|
20
|
+
- Adds Beauty Voice as a full active Soul Mode listening lens.
|
|
21
|
+
- Keeps both new voices inside the ritual card under `the voice says`.
|
|
22
|
+
- Removes `listening for` from Wisdom and Beauty cards so the voice can occupy the card fully.
|
|
23
|
+
- Requires situated `--says` content for Wisdom and Beauty to prevent placeholder cards.
|
|
24
|
+
- Adds canonical prompts for Wisdom Voice and Beauty Voice.
|
|
25
|
+
- Updates the Pi Soul Mode skill so natural-language validation can hear the new voices.
|
|
26
|
+
- Preserves the non-mutating Soul Mode boundary: no automatic journal, identity, or project-state changes.
|
|
27
|
+
|
|
28
|
+
## Where We Started
|
|
29
|
+
|
|
30
|
+
The first Soul Mode release proved the ritual cycle, but it left a visible gap:
|
|
31
|
+
Possible Listenings could name Wisdom Voice and Beauty Voice, while the user
|
|
32
|
+
could not yet hear them as active rites. That made the constellation feel larger
|
|
33
|
+
than the behavior available inside the product.
|
|
34
|
+
|
|
35
|
+
The next release therefore focused on the missing voices rather than on
|
|
36
|
+
integration, rich UI, or psyche mutation. Before Mirror can ask what should be
|
|
37
|
+
integrated into identity, the user needs to hear the voices the ritual already
|
|
38
|
+
implies.
|
|
39
|
+
|
|
40
|
+
## What Changed
|
|
41
|
+
|
|
42
|
+
Wisdom Voice is now hearable. When the user chooses it, Mirror renders a `♢
|
|
43
|
+
WISDOM VOICE LISTENING` card and places the full wisdom utterance inside the box
|
|
44
|
+
under `the voice says`. Wisdom Voice is not generic advice and not a short
|
|
45
|
+
summary. It is the voice of a relevant source — a thinker, philosopher, sacred
|
|
46
|
+
text, ancient tradition, proverb, contemplative teaching, mythic image, or wisdom
|
|
47
|
+
text — speaking from its own symbolic world.
|
|
48
|
+
|
|
49
|
+
The Wisdom card now omits `listening for`. This was an important ritual
|
|
50
|
+
correction: the card is not a form with fields. It is the place where the source
|
|
51
|
+
speaks. Mirror's practical bridge happens after the card, in Mirror's ordinary
|
|
52
|
+
tone. When Mirror knows the source, author, work, or historical/textual context,
|
|
53
|
+
it should explain that origin outside the card and relate it to the user's
|
|
54
|
+
conversation without inventing bibliographic precision.
|
|
55
|
+
|
|
56
|
+
Beauty Voice is also now hearable. When the user chooses it, Mirror renders a `✺
|
|
57
|
+
BEAUTY VOICE LISTENING` card and places the full beauty utterance inside the box
|
|
58
|
+
under `the voice says`. Beauty Voice listens through image, texture, rhythm,
|
|
59
|
+
atmosphere, body, literature, poetry, music, and the form of aliveness. It does
|
|
60
|
+
not decorate pain, force hope, or turn difficulty into a pretty lesson.
|
|
61
|
+
|
|
62
|
+
Beauty also omits `listening for`. Its card contains the aesthetic listening
|
|
63
|
+
itself; Mirror's bridge follows outside the card. When a poem, author, artwork,
|
|
64
|
+
song, or aesthetic source is known and relevant, Mirror may name it outside the
|
|
65
|
+
card, but should not fabricate citation details.
|
|
66
|
+
|
|
67
|
+
Both new voices require situated `--says` content when rendered through the CLI.
|
|
68
|
+
This prevents the runtime from displaying placeholder text when the assistant has
|
|
69
|
+
not yet composed the actual voice response from the user's material.
|
|
70
|
+
|
|
71
|
+
## Conscious Exclusions
|
|
72
|
+
|
|
73
|
+
- No Closing Rite or psyche-layer integration is included.
|
|
74
|
+
- No automatic Self, Shadow, Ego, persona, or journey identity enrichment is included.
|
|
75
|
+
- No identity mutation is performed.
|
|
76
|
+
- No rich web Soul Mode UI is included.
|
|
77
|
+
- No Passagem curation or fragment library is included.
|
|
78
|
+
- No Return To Center implementation is included.
|
|
79
|
+
- No multiple-fruit model is included.
|
|
80
|
+
- Soul Mode still does not execute implementation work; operational mutation requests route to Builder Mode.
|
|
81
|
+
|
|
82
|
+
## What We Learned
|
|
83
|
+
|
|
84
|
+
The key refinement was that a voice card must contain the voice itself, not a
|
|
85
|
+
label plus an explanation outside the box. Wisdom Voice in particular needed a
|
|
86
|
+
stronger separation between the source speaking inside the card and Mirror
|
|
87
|
+
interpreting outside it. Once that boundary was clear, Wisdom could become
|
|
88
|
+
solemn, symbolic, and ancestral without turning Mirror's normal bridge into a
|
|
89
|
+
prophetic performance.
|
|
90
|
+
|
|
91
|
+
Beauty followed the same grammar. It should not be a motivational consolation or
|
|
92
|
+
aesthetic gloss. It should let form, texture, rhythm, image, and care appear
|
|
93
|
+
inside the field, while leaving the practical connection to Mirror's ordinary
|
|
94
|
+
voice outside the card.
|
|
95
|
+
|
|
96
|
+
The release also reinforced a process lesson: pre-release refinement does not
|
|
97
|
+
need to become a separate implementation story when real validation closes the
|
|
98
|
+
open questions inside DS1 and DS2. The planned refinements story was cancelled
|
|
99
|
+
because the necessary tuning happened during direct Pi validation of the two
|
|
100
|
+
voice stories.
|
|
101
|
+
|
|
102
|
+
## Next Horizon
|
|
103
|
+
|
|
104
|
+
The next Soul Mode horizon is integration: a Closing Rite, review of harvested
|
|
105
|
+
material, and safe psyche-layer enrichment proposals with visible diffs and
|
|
106
|
+
explicit confirmation. That work should remain careful and non-automatic because
|
|
107
|
+
it touches the Mirror's living identity model.
|