Issue: #406 MUX-VISION-FEATURE-MAP Phase: 1-2 Complete (All Feature Mappings Populated) Date Created: 2026-01-20 Last Updated: 2026-01-20 20:30 PST Agent: Claude Code (Programmer)
This document maps Piper Morgan’s 16 major features to the Object Model (Entity/Moment/Place/Lenses/Situation) defined in ADR-055 and formalized in MUX infrastructure.
The map serves three functions:
| # | Feature | Compliance | Priority | File | Effort | User Impact |
|---|---|---|---|---|---|---|
| 1 | Morning Standup | ✅ Conscious | Reference | services/features/morning_standup.py |
- | Very High |
| 2 | Intent Classification | ⚠️ Partial | High | services/intent_service/classifier.py |
Medium | Very High |
| 3 | Todo Management | ❌ Flattened | High | services/todo/todo_service.py |
High | Very High |
| 4 | Feedback System | ⚠️ Partial | Medium | services/feedback/feedback_service.py |
Medium | High |
| 5 | Slack Integration | ⚠️ Partial | High | services/integrations/slack/slack_plugin.py |
Medium | Very High |
| 6 | GitHub Integration | ⚠️ Partial | High | services/integrations/github/github_plugin.py |
Medium | Very High |
| 7 | Notion Integration | ❌ Flattened | Medium | services/integrations/notion/notion_plugin.py |
Medium | Medium |
| 8 | Calendar Integration | ⚠️ Partial | Medium | services/integrations/calendar/calendar_integration.py |
Medium | High |
| 9 | Auth/Session Management | ❌ Flattened | Low | services/auth/auth_service.py |
Low | Low |
| 10 | Conversation Handler | ⚠️ Partial | Medium | services/conversation/conversation_handler.py |
Medium | High |
| 11 | Onboarding System | ⚠️ Partial | Medium | services/onboarding/portfolio_onboarding_handler.py |
Medium | High |
| 12 | List Management | ❌ Flattened | Low | services/repositories/list_repository.py |
Low | Low |
| 13 | Project Management | ❌ Flattened | Low | services/repositories/project_repository.py |
Low | Low |
| 14 | File Management | ❌ Flattened | Low | services/repositories/file_repository.py |
Low | Low |
| 15 | Personality System | ⚠️ Partial | Medium | services/personality/standup_bridge.py |
Medium | High |
| 16 | MCP Integration | ❌ Flattened | Low | services/integrations/mcp/mcp_plugin.py |
Low | Low |
Legend:
Updated: 2026-01-26 (Post #685 MUX-LIFECYCLE-OBJECTS)
This section tracks which domain models have lifecycle infrastructure wired in.
| Model | Has lifecycle_state? |
to_dict() wiring? |
Location | Notes |
|---|---|---|---|---|
| WorkItem | ✅ Yes | ✅ Yes (#685) | services/domain/models.py:251 |
Full lifecycle support |
| Feature | ✅ Yes | ✅ Yes (#705) | services/domain/models.py:209 |
Full lifecycle support |
| Insight | ❌ No | N/A | services/mux/composting_models.py |
Has confidence but no lifecycle |
| SurfaceableInsight | ❌ No | Has to_dict() |
services/mux/composting_pipeline.py |
Trust-gating, no lifecycle |
| View/Template | Displays Model | Model Ready? | UI Ready? | Issue |
|---|---|---|---|---|
| Morning Standup | WorkItem | ✅ Yes | ❌ No | #703 Phase 1 |
| Insights Page | SurfaceableInsight | ❌ No | ❌ No | Needs model work first |
| Todos Page | (needs investigation) | ? | ❌ No | TBD |
All components exist in templates/components/:
lifecycle_indicator.html - Visual indicator with experience phraseslifecycle_detail.html - Detailed lifecycle viewlifecycle_notification.html - Trust-gated notification componentJavaScript API: LifecycleIndicator.create(stage, compact) returns DOM element.
See #703 and child issues for the phased integration plan.
See: dev/2026/01/19/p0-morning-standup-analysis.md for complete analysis
Key Patterns to Extract:
File: services/features/morning_standup.py
Compliance: Conscious (All 5 elements)
Priority: Reference Implementation
| Element | Current State | Implementation |
|---|---|---|
| Entity | ✅ StandupContext.user_id maintained throughout |
User (owner of activity) + Piper (assistant/guide) |
| Moment | ✅ Yesterday/Today/Blockers temporal framing | Standup conversation IS the Moment (reflection + planning) |
| Place | ✅ _get_github_activity(), _get_calendar_data(), document context |
Multi-Place gathering: GitHub, Calendar, Documents, Session |
| Lenses | ✅ Temporal (past/present/future) + Accomplishment + Energy | Multiple lenses applied: time, achievement level, urgency, context |
| Situation | ✅ Context-aware tone adaptation | Adapts to: time of day, accomplishment level, meeting density |
| Query | Substrate | Lenses | Ownership |
|---|---|---|---|
| “What happened yesterday?” | GitHub commits, Calendar events, Session context | Temporal (past), Accomplishment | Native (standup output) + Federated (GitHub/Calendar) |
| “What’s happening now?” | Calendar current event, Meeting status | Temporal (present), Urgency, Energy | Federated (Calendar) |
| “What should I focus on today?” | Active repos, Open issues, Calendar free blocks | Temporal (future), Priority, Focus | Native (priorities) + Federated (sources) |
| “What’s blocking me?” | GitHub PR status, Issue comments, Meeting density | Impact, Urgency, Collaboration | Federated (GitHub/Calendar) |
| “How much focus time do I have?” | Calendar blocks, Meeting schedule | Temporal, Energy, Availability | Federated (Calendar) |
StandupContext gathers input; StandupResult synthesizes findingsasyncio.gather()StandupToChatBridge (in services/personality/standup_bridge.py) applies warmth calibrationStandupContext, StandupResult)StandupToChatBridge)StandupIntegrationError)File: services/intent_service/classifier.py + services/intent/intent_service.py
Compliance: Partial (3/5 elements: Entity, Situation, partial Lenses)
Priority: High
| Element | Current State | Target State |
|---|---|---|
| Entity | ✅ User ID preserved in classification flow | User (intent-expresser) + Piper (intent-recognizer) mutually recognized |
| Moment | ⚠️ Implicit (classification happens) | ✅ Intent recognition AS a Moment (“I understand you want to…”) |
| Place | ❌ No Place awareness (context-agnostic) | ✅ Slack vs CLI vs web (different atmospheres, adapt response style) |
| Lenses | ⚠️ Confidence score only | ✅ Confidence + Urgency + Relevance + Context-fit lenses |
| Situation | ✅ Low-confidence triggers clarification | ✅ Maintain: confidence-based paths + extend with Place adaptation |
| Query | Substrate | Lenses | Ownership |
|---|---|---|---|
| “What does user want?” | Message text, IntentCategory classification | Confidence, Relevance | Native (classification result) |
| “Is this urgent?” | IntentCategory (EXECUTION > QUERY) | Urgency, Priority | Native (intent type) |
| “Where is this from?” | Request source (Slack channel, CLI, web endpoint) | Place, Context | Federated (communication platform) |
| “Should I act or clarify?” | Confidence score, vagueness detection | Confidence, Clarity | Native (classification) |
| “What context matters?” | Knowledge graph, conversation history | Relevance, Recency | Federated (KG, session) |
Current State:
Target State:
IntentContext (message + Place + history) → IntentResult (category + reasoning + suggested response)IntentToChatBridge for Place-adaptive personalityIntentContext → IntentResult)File: services/todo_service.py
Compliance: Flattened (1.5/5 elements: Entity, minimal Situation)
Priority: High
| Element | Current State | Target State |
|---|---|---|
| Entity | ⚠️ User ID in database model only | User (task owner) + Piper (collaborative partner) mutually recognized |
| Moment | ❌ Persistent data rows (no lifecycle awareness) | ✅ Task lifecycle AS Moments: created, in-progress, completed, blocked |
| Place | ❌ Completely location-agnostic | ✅ Slack todo ≠ CLI todo ≠ web todo (different presentation, urgency) |
| Lenses | ❌ Status field only (no perceptual layers) | ✅ Priority, Urgency, Context (project), Impact, Temporal lenses |
| Situation | ⚠️ Status-based queries exist | ✅ Situation-aware responses: celebrating completion, encouraging progress, addressing blockers |
| Query | Substrate | Lenses | Ownership |
|---|---|---|---|
| “What did I accomplish?” | Todo completion status, timestamps | Temporal (past), Accomplishment | Native (user’s todos) |
| “What’s most urgent?” | Priority field, due dates, status | Urgency, Temporal (deadline), Impact | Native (todo metadata) |
| “What’s blocking me?” | Status=blocked, comments, dependencies | Impact, Urgency, Collaboration | Native (todo state) + Federated (GitHub issues) |
| “Where should I see this?” | Creation Place (Slack/web/CLI) | Place, Context | Federated (communication platform) |
| “Is this still relevant?” | Last updated timestamp, project status | Temporal (recency), Relevance | Native (todo metadata) |
Current State:
Target State - Major Refactoring Required:
TodoContext (user, Place, project context) → TodoResult (todo + narrative + suggestions)TodoToChatBridge applies warmth calibration based on accomplishment levelTodoContext and TodoResult dataclassesTodoToChatBridge for personality adaptationFile: services/feedback/feedback_service.py
Compliance: Partial (3/5 elements: Entity, Situation, partial Moment)
Priority: Medium
| Element | Current State | Target State |
|---|---|---|
| Entity | ✅ Feedback ownership tracked (user_id field) | User (insight-provider) + Piper (insight-receiver) mutually recognized |
| Moment | ⚠️ Timestamp captured but not framed as Moment | ✅ Feedback IS a Moment of insight/realization (Piper experiences user’s feedback) |
| Place | ⚠️ Session context partially captured | ✅ Place matters: standup feedback ≠ todo feedback ≠ general feedback (context weight) |
| Lenses | ❌ Type (bug/feature/praise) + Rating only | ✅ Timeliness (onboarding vs mature), Relevance, Intensity, Impact lenses |
| Situation | ✅ Different handling by feedback type | ✅ Maintain: type-based routing + extend with Place-aware acknowledgment |
| Query | Substrate | Lenses | Ownership |
|---|---|---|---|
| “Is this feedback urgent?” | Feedback type (bug=high, praise=low) + Rating | Impact, Timeliness, Urgency | Native (feedback metadata) |
| “When did user share this?” | Timestamp, account age | Temporal, Timeliness (early vs mature user) | Native (feedback record) |
| “Where was feedback given?” | Session context, feature name | Place, Relevance | Federated (session/feature context) |
| “How intense is this feedback?” | Rating, text sentiment, exclamation marks | Intensity, Emotional | Native (feedback content) |
| “What should I do with this?” | Type + Place + Urgency | Action-priority, Impact | Native (routing logic) |
Current State:
Target State:
FeedbackToChatBridge provides warm acknowledgment, not just loggingFeedbackContext (user, Place, timing) → FeedbackResult (acknowledgment + routing + insights)FeedbackContext and FeedbackResult dataclassesFeedbackToChatBridge for warm acknowledgmentFile: services/integrations/slack/slack_plugin.py
Compliance: Partial (4/5 elements: Entity, Place, Situation, partial Lenses)
Priority: High
| Element | Current State | Target State |
|---|---|---|
| Entity | ✅ User identity (Slack user_id) + Workspace | User + Team (workspace) + Piper presence recognized |
| Moment | ⚠️ Message events captured as data | ✅ Recognize Moment quality: help-seeking, exploring, celebrating, collaborating |
| Place | ✅ Slack IS a Place (strong awareness) | ✅ #channel ≠ DM ≠ thread (different atmospheres, public vs private) |
| Lenses | ⚠️ Channel vs DM distinction only | ✅ Time-of-day, Conversation-stage, Urgency, Collaboration, Formality lenses |
| Situation | ⚠️ Mentions/commands trigger responses | ✅ Maintain: mention detection + extend with Moment-aware entry |
| Query | Substrate | Lenses | Ownership |
|---|---|---|---|
| “Is this public or private?” | Channel type (public/private/DM) | Place, Formality | Federated (Slack channel metadata) |
| “What time is it for user?” | Message timestamp, user timezone | Temporal, Energy (morning vs late-night) | Federated (Slack timestamp) |
| “Is user seeking help?” | Message intent, question markers, urgency words | Moment-quality, Urgency | Native (intent classification) + Federated (message) |
| “Who else is in this conversation?” | Channel members, thread participants | Collaboration, Audience | Federated (Slack channel/thread) |
| “How should I respond?” | Channel type + Time + Intent | Formality, Tone, Urgency | Native (response generation) |
Current State:
Target State:
SlackContext (channel, user, time, thread) → SlackResult (message + formatting + reactions)SlackToChatBridge for Place-adaptive responsesFile: services/integrations/github/github_plugin.py
Compliance: Partial (3/5 elements: Entity, Place, partial Lenses)
Priority: High
| Element | Current State | Target State |
|---|---|---|
| Entity | ✅ Developer identity + Repo ownership | Developer (code creator) + Team (collaborators) + Piper (activity narrator) |
| Moment | ❌ Events as data points (commits, PRs, reviews) | ✅ Developer Moments: pushed code, created PR, got reviewed, got blocked, shipped |
| Place | ✅ GitHub IS a Place (baseline) | ✅ Repo atmosphere: piper-morgan ≠ client-project (startup vs professional tone) |
| Lenses | ⚠️ Basic repo context (name, branch) | ✅ Urgency (blocked PR), Impact (deploy), Collaboration (review), Tempo (commit frequency) |
| Situation | ⚠️ PR vs Issue vs Commit distinguished | ✅ Maintain distinction + add Moment-aware narrative framing |
| Query | Substrate | Lenses | Ownership |
|---|---|---|---|
| “What did I ship?” | Commit messages, PR merges | Accomplishment, Temporal (past) | Federated (GitHub activity) |
| “Am I blocked?” | PR status, review requests, CI failures | Urgency, Impact (blocker), Collaboration | Federated (GitHub PR/CI state) |
| “What needs my review?” | Review requests, mentions | Urgency, Collaboration, Priority | Federated (GitHub notifications) |
| “What’s the development tempo?” | Commit frequency, PR velocity | Temporal, Productivity | Federated (GitHub activity metrics) |
| “Is this repo strategic?” | Repo stars, commit activity, ownership | Importance, Focus, Impact | Federated (GitHub repo metadata) |
Current State:
Target State:
GitHubContext (repo, developer, timeframe) → GitHubResult (narrative + urgency + suggestions)GitHubToChatBridge for narrative synthesisFile: services/integrations/notion/notion_plugin.py
Compliance: Flattened (2/5 elements: Entity, partial Situation)
Priority: Medium
| Element | Current State | Target State |
|---|---|---|
| Entity | ✅ Document ownership (user_id in metadata) | User (doc owner/editor) + Team (collaborators) + Piper (knowledge synthesizer) |
| Moment | ❌ Document updates as data rows | ✅ Knowledge Moments: doc created, updated, commented, shared |
| Place | ❌ Generic data retrieval (no Place distinction) | ✅ Notion database ≠ Meeting notes ≠ Project plan (different atmospheres, purposes) |
| Lenses | ❌ Content retrieval only (no perceptual layers) | ✅ Relevance (to current focus), Recency, Collaboration, Impact lenses |
| Situation | ⚠️ Some filtering (by database/page type) | ✅ Situation-aware synthesis: new doc vs update vs comment |
| Query | Substrate | Lenses | Ownership |
|---|---|---|---|
| “What docs changed recently?” | Document last_edited_time | Recency, Temporal | Federated (Notion metadata) |
| “Is this doc relevant to me?” | Document tags, project links, user mentions | Relevance, Focus | Federated (Notion properties) |
| “Who’s working on this?” | Notion comments, @mentions, editors | Collaboration, Team | Federated (Notion user activity) |
| “What type of doc is this?” | Database type, page properties | Place (context), Purpose | Federated (Notion schema) |
| “Should I read this now?” | Recency + Relevance + User’s current focus | Urgency, Priority | Native (synthesis) + Federated (Notion) |
Current State:
Target State:
NotionContext (query, user focus, timeframe) → NotionResult (relevant docs + summaries + suggestions)NotionToChatBridge for knowledge synthesisFile: services/integrations/calendar/calendar_integration.py + calendar_integration_router.py
Compliance: Partial (4/5 elements: Entity, Moment, Place, partial Lenses)
Priority: Medium
| Element | Current State | Target State |
|---|---|---|
| Entity | ✅ Calendar owner (user_id) identity | User (calendar owner) + Piper (time-aware assistant) mutually recognized |
| Moment | ✅ Events ARE Moments (STRONG baseline) | ✅ Maintain + enhance: “Currently in: Meeting” with empathetic presence |
| Place | ✅ Meeting location recognized (virtual vs physical) | ✅ Physical office ≠ Zoom ≠ Phone (different atmospheres, interruption protocols) |
| Lenses | ⚠️ Temporal (now/next) + partial urgency | ✅ Add Focus-time, Energy (meeting density), Collaboration, Preparation lenses |
| Situation | ⚠️ Free/Meeting/Focus detected | ✅ Maintain + extend with energy-aware responses |
| Query | Substrate | Lenses | Ownership |
|---|---|---|---|
| “Where am I right now?” | Current event title, location | Place (physical/virtual), Temporal (present) | Federated (Calendar current event) |
| “When is my focus time?” | Free blocks, meeting gaps | Temporal (future), Focus, Energy | Federated (Calendar schedule) |
| “How much energy do I have?” | Meeting density, back-to-back count | Energy, Availability, Temporal | Federated (Calendar analysis) |
| “Am I running late?” | Current time vs meeting start | Urgency, Preparation, Temporal | Federated (Calendar + clock) |
| “Should I interrupt user?” | Current event status, type | Urgency (of message) vs Presence (in meeting) | Native (decision) + Federated (Calendar) |
Current State (STRONG baseline):
Target State (Enhancement):
CalendarContext (user, time, schedule) → CalendarResult (presence + energy + suggestions)CalendarToChatBridge for time-aware personalityFile: services/auth/auth_middleware.py
Compliance: Flattened (1.5/5 elements: Entity only)
Priority: Low
| Element | Current State | Target State |
|---|---|---|
| Entity | ✅ User identity (core function) | User (authenticating) + Piper (recognizing) |
| Moment | ❌ Infrastructure (no Moment awareness) | ⚠️ First login IS a Moment (welcome opportunity), Session timeout (goodbye Moment) |
| Place | ❌ No Place awareness (device-agnostic) | ⚠️ Desktop ≠ Mobile ≠ CLI (different auth experiences) |
| Lenses | ❌ Security validation only | ⚠️ Context (first-time vs returning), Temporal (session age) |
| Situation | ⚠️ Minimal (success/failure only) | ⚠️ First login vs return vs session-timeout (different responses) |
| Query | Substrate | Lenses | Ownership |
|---|---|---|---|
| “Is this user’s first time?” | User creation timestamp | Temporal, Onboarding | Native (auth metadata) |
| “Is session still valid?” | Session expiry timestamp | Temporal, Security | Native (session store) |
| “Where is user logging in from?” | Device/browser/IP | Place, Security | Federated (request headers) |
| “Should I welcome or resume?” | First login vs returning user | Context, Experience | Native (auth logic) |
Current State:
Target State (Low priority - limited user impact):
Low Priority Rationale: Infrastructure feature with indirect user impact. Focus on user-facing features (Intent, Slack, GitHub, Todo) first.
File: services/conversation/conversation_handler.py
Compliance: Partial (4/5 elements: Entity, Moment, Situation, partial Place)
Priority: Medium
| Element | Current State | Target State |
|---|---|---|
| Entity | ✅ User/Piper conversation identity maintained | User + Piper mutually recognized (collaborative dialogue) |
| Moment | ⚠️ Message turns tracked, but limited Moment awareness | ✅ Recognize Moment quality: confused, confident, frustrated, excited, exploring |
| Place | ⚠️ Partially tracked (onboarding/standup/general context) | ✅ Web ≠ Slack ≠ CLI (different conversation atmospheres, formality, pace) |
| Lenses | ⚠️ Personality system provides basic warmth | ✅ Expand: Confusion, Confidence, Urgency, Collaboration, Emotional state lenses |
| Situation | ✅ Different handlers by conversation type (onboarding/standup/general) | ✅ Maintain routing + extend with Moment-aware responses |
| Query | Substrate | Lenses | Ownership |
|---|---|---|---|
| “Is user confused?” | Repeated questions, clarification requests, “I don’t understand” | Confusion, Clarity | Native (conversation analysis) |
| “Where is this conversation?” | Request source (web/Slack/CLI), session metadata | Place, Formality | Federated (communication platform) |
| “What Moment is user experiencing?” | Message sentiment, conversation flow, question type | Moment-quality, Emotional | Native (conversation state) |
| “Should I clarify or proceed?” | Confidence indicators, follow-up questions | Confidence, Clarity | Native (conversation logic) |
| “Is this urgent?” | Exclamation marks, urgency keywords, time pressure | Urgency, Priority | Native (message analysis) |
Current State:
Target State:
ConversationContext (history, Place, user state) → ConversationResult (response + tone + follow-up)File: services/onboarding/portfolio_handler.py + portfolio_manager.py
Compliance: Partial (4/5 elements: Entity, Moment, Lenses, Situation)
Priority: Medium
| Element | Current State | Target State |
|---|---|---|
| Entity | ⚠️ User present; Piper role implicit | Piper as guide/partner (not just system): “I’m here to help you” |
| Moment | ✅ Onboarding IS Moments (STRONG awareness) | ✅ Maintain + enhance celebration: first login, first integration, first success |
| Place | ⚠️ Web entry recognized; minimal atmosphere tuning | ✅ Welcoming, warm, supportive Place (vs intimidating setup wizard) |
| Lenses | ✅ Progressive disclosure (shows perception of readiness) | ✅ Maintain + add Encouragement, Confidence, Pacing lenses |
| Situation | ✅ Context-dependent onboarding paths | ✅ Maintain adaptive paths + extend with Moment-aware encouragement |
| Query | Substrate | Lenses | Ownership |
|---|---|---|---|
| “Is this user’s first time?” | Account creation timestamp, onboarding state | Temporal, Onboarding | Native (onboarding state) |
| “What’s their readiness level?” | Onboarding progress, completed steps | Confidence, Pacing | Native (onboarding progress) |
| “Should we celebrate this?” | Milestone achieved (first integration, profile complete) | Accomplishment, Encouragement | Native (milestone detection) |
| “Are they stuck?” | Time on step, repeated attempts | Confusion, Frustration | Native (progress tracking) |
| “What’s next for them?” | Current step, available integrations | Priority, Relevance | Native (onboarding logic) |
Current State (STRONG baseline):
Target State (Enhancement):
OnboardingContext (step, progress, user) → OnboardingResult (next step + encouragement + celebration)File: services/repositories/list_repository.py
Compliance: Flattened (1/5 elements: Entity only)
Priority: Low
| Element | Current State | Target State |
|---|---|---|
| Entity | ✅ List ownership (user_id) | User (list owner) + Piper (organization assistant) |
| Moment | ❌ Database CRUD operations | ⚠️ List creation/modification AS Moments (organizing work) |
| Place | ❌ No context awareness | ⚠️ List usage context: project list ≠ shopping list ≠ reading list |
| Lenses | ❌ None (data retrieval only) | ⚠️ Purpose (why this list exists), Relevance, Activity |
| Situation | ⚠️ Query variations only | ⚠️ Situation-aware presentation (active project vs archived) |
Low Priority Rationale: Backend repository structure with indirect user impact. Focus on user-facing features (Todo, Slack, GitHub) first. Apply grammar when list presentation layer is enhanced.
File: services/repositories/project_repository.py
Compliance: Flattened (1/5 elements: Entity only)
Priority: Low
| Element | Current State | Target State |
|---|---|---|
| Entity | ✅ Project ownership (user_id) | User (project owner) + Team (collaborators) + Piper (project narrator) |
| Moment | ❌ Database CRUD operations | ⚠️ Project milestones AS Moments (kickoff, progress, completion, blocked) |
| Place | ❌ No context awareness | ⚠️ Project context: startup project ≠ client work (different urgency, formality) |
| Lenses | ❌ None (data retrieval only) | ⚠️ Importance, Urgency, Status, Impact, Team-size |
| Situation | ⚠️ Query variations only | ⚠️ Project state variations (active/blocked/completed) |
Low Priority Rationale: Backend repository structure with indirect user impact. Coordinate with feature-level project references (Morning Standup, GitHub integration) before transforming.
File: services/repositories/file_repository.py
Compliance: Flattened (1/5 elements: Entity only)
Priority: Low
| Element | Current State | Target State |
|---|---|---|
| Entity | ✅ File ownership (user_id) | User (file owner) + Piper (knowledge organizer) |
| Moment | ❌ Database CRUD operations | ⚠️ File creation/modification AS Moments (knowledge captured) |
| Place | ❌ No context awareness | ⚠️ File context: project file ≠ personal doc ≠ shared resource |
| Lenses | ❌ None (data retrieval only) | ⚠️ Recency, Relevance, Collaboration, File-type |
| Situation | ⚠️ Status queries only | ⚠️ Situational variations (recently edited vs stale) |
Low Priority Rationale: Backend repository structure with indirect user impact. Focus on integrations that surface files first (GitHub, Notion) before transforming file repository.
File: services/personality/standup_bridge.py
Compliance: Partial (4/5 elements: Entity, Moment, Place, partial Situation)
Priority: Medium (Infrastructure enabler - all features benefit)
| Element | Current State | Target State |
|---|---|---|
| Entity | ✅ Piper’s personality as Entity (well-defined) | Piper as collaborative partner with consistent personality dimensions |
| Moment | ⚠️ Applies warmth across Moments (baseline) | ✅ Moment-type awareness: success ≠ failure ≠ exploration ≠ frustration |
| Place | ✅ Adapts tone by Place (email vs chat baseline) | ✅ Expand: Slack (emoji/casual) ≠ CLI (concise) ≠ Web (conversational) ≠ Public (professional) |
| Lenses | ⚠️ Warmth/accomplishment lenses (baseline) | ✅ Add Confidence, Urgency, Collaboration, Formality, Energy lenses |
| Situation | ⚠️ Accomplishment-based warmth calibration | ✅ Maintain + extend with context-based variation (time-of-day, user state) |
| Query | Substrate | Lenses | Ownership |
|---|---|---|---|
| “How warm should response be?” | Accomplishment level, Moment type | Warmth, Encouragement | Native (personality logic) |
| “What tone fits this Place?” | Communication channel (Slack/CLI/web) | Place, Formality | Native (personality adaptation) |
| “Should response be action-focused?” | Situation type, user intent | Urgency, Action-orientation | Native (personality decision) |
| “Is user frustrated or excited?” | Message sentiment, Moment quality | Emotional, Empathy | Federated (conversation analysis) |
| “What’s the appropriate formality?” | Place (public/private), audience size | Formality, Professionalism | Native (personality tuning) |
Current State (STRONG baseline):
StandupToChatBridge demonstrates reusable warmth calibrationTarget State (Expansion - Infrastructure enabler):
StandupToChatBridge for all featuresStandupToChatBridge)PersonalityBridge interfaceFile: services/integrations/mcp/mcp_plugin.py
Compliance: Flattened (2/5 elements: Entity, partial Place/Lenses)
Priority: Low
| Element | Current State | Target State |
|---|---|---|
| Entity | ⚠️ External system identity (MCP server/tool) | MCP Tool (external capability) + Piper (tool orchestrator) |
| Moment | ❌ Tool invocations as API calls (mechanical) | ⚠️ Tool invocation AS a Moment (system accomplishes something for user) |
| Place | ⚠️ Context passed to tool (minimal) | ✅ Tool context IS a Place (filesystem vs web vs database) |
| Lenses | ⚠️ Tool capabilities metadata | ✅ Capability, Effectiveness, Reliability, Performance lenses |
| Situation | ⚠️ Tool selection logic | ✅ Tool selection + outcome variation (success/failure narratives) |
| Query | Substrate | Lenses | Ownership |
|---|---|---|---|
| “Can this tool help?” | Tool capabilities, user request | Capability, Relevance | Federated (MCP tool metadata) |
| “Is this tool reliable?” | Tool success rate, past performance | Reliability, Performance | Native (tool usage history) |
| “What did tool accomplish?” | Tool invocation result | Effectiveness, Impact | Federated (MCP tool result) |
| “Should I try another tool?” | Tool failure, alternative availability | Situation, Adaptation | Native (orchestration logic) |
Low Priority Rationale: Infrastructure-adjacent integration with limited direct user impact. Apply grammar when tool invocation results are presented to users (e.g., “I used [tool] to find [result]” vs “Tool invocation successful”).
/docs/internal/architecture/current/grammar-compliance-audit.md/docs/internal/architecture/current/ownership-metaphors.md/docs/internal/development/mux-implementation-guide.md/docs/internal/development/mux-experience-tests.md/docs/internal/architecture/current/patterns/grammar-application-patterns.md/dev/2026/01/19/p0-morning-standup-analysis.md (reference)Last Updated: 2026-01-26 (Added Lifecycle Model Wiring Status section post #685) Next Update Trigger: Phase 3 implementation (feature transformations begin) Ownership: @PM (xian) Issue: #406 MUX-VISION-FEATURE-MAP
Update Protocol:
Completion Status:
Phase 1-2 Complete: All 16 features mapped to Object Model (Entity/Moment/Place/Lenses/Situation) Each feature shows current vs target state, canonical queries with lens/substrate tagging, and transformation notes Ready for Phase 3: Feature transformation implementation