Status: Proven Category: Grammar Application First Documented: January 20, 2026 Ratified: January 20, 2026 (Grammar Implementation)
Features need to maintain grammar awareness (Entity/Moment/Place) throughout their processing flow, from input collection through execution to result delivery. Common challenges:
This creates “flattened” features that feel mechanical rather than conscious, losing the experiential quality that distinguishes Piper from traditional task management systems.
Implement a Context/Result dataclass pair where:
A Context Dataclass Pair is a two-dataclass structure that maintains grammar consciousness through a feature’s processing flow. The pattern emphasizes:
user_id present in both Context and ResultEntity (user) → Context → Processing → Result → Entity (user)
Moment (request) → Context → Processing → Result → Moment (generation)
Place (sources) → Context → Processing → Result → Place (attribution)
from dataclasses import dataclass, field
from datetime import datetime
from typing import Any, Dict, List
@dataclass
class [Feature]Context:
"""
Input context for [feature] - what we know before processing.
Grammar elements:
- Entity: user_id (who is requesting)
- Moment: timestamp (when request made)
- Place: source_places (where to gather data from)
"""
user_id: str # Entity: The user
timestamp: datetime # Moment: When request occurs
source_places: Dict[str, Any] # Place: Integration sources
session_context: Dict[str, Any] = field(default_factory=dict)
# Feature-specific parameters
# ... add as needed
@dataclass
class [Feature]Result:
"""
Output result from [feature] - what we learned.
Grammar elements:
- Entity: user_id (preserved from Context)
- Moment: generated_at (when result created)
- Place: context_source (where data came from)
"""
user_id: str # Entity preserved
generated_at: datetime # Moment of result creation
findings: List[str] # What was discovered
context_source: str # Place: Attribution
performance_metrics: Dict[str, Any] # Observability
# Feature-specific results
# ... add as needed
File: services/features/morning_standup.py:34-57
@dataclass
class StandupContext:
"""Context for generating morning standup"""
user_id: str # Entity: The user
date: datetime # Moment: When this occurs
session_context: Dict[str, Any] = field(default_factory=dict)
github_repos: List[str] = field(default_factory=list) # Place: Active repositories
@dataclass
class StandupResult:
"""Result of morning standup generation"""
user_id: str # Entity reference maintained
generated_at: datetime # Moment of generation
generation_time_ms: int
yesterday_accomplishments: List[str] # Moments: Past experiences
today_priorities: List[str] # Moments: Anticipated experiences
blockers: List[str] # Moments: Current challenges
context_source: str # Place: Where context came from
github_activity: Dict[str, Any] # Place-specific data
performance_metrics: Dict[str, Any]
time_saved_minutes: int
Grammar embodiment:
user_id) flows from Context → Resultdate (input) vs generated_at (output)github_repos (sources) → context_source (attribution)class FeatureService:
async def execute_feature(self, user_id: str) -> [Feature]Result:
"""Execute feature with grammar-aware flow."""
# 1. Construct Context (capture input state)
context = [Feature]Context(
user_id=user_id,
timestamp=datetime.now(),
source_places={
"github": await self._get_github_repos(user_id),
"calendar": await self._get_calendar_context(user_id),
}
)
# 2. Process with grammar preservation
findings = await self._process_with_context(context)
# 3. Construct Result (capture output state)
result = [Feature]Result(
user_id=context.user_id, # Entity preserved
generated_at=datetime.now(), # Moment of result
findings=findings,
context_source="persistent" if context.session_context else "default",
performance_metrics=self._calculate_metrics()
)
return result
✅ Use Context Dataclass Pair when:
❌ Don’t use when:
user_id in both Context and Resultfield(default_factory=dict) for mutable defaults__post_init__ for validation if neededservices/features/morning_standup.py - StandupContext/StandupResult (reference implementation)High Priority (should adopt pattern):
Medium Priority (good candidates):
[Feature]Context dataclass with Entity/Moment/Place fields[Feature]Result dataclass with Entity/Moment/Place preservedfield(default_factory=dict) for mutable defaultsuser_id from Context → Resultcontext_source or Place attribution in ResultProven Pattern - Successfully implemented in:
services/features/morning_standup.pyGrammar Audit Results:
Transformation Potential:
Pattern Identified: January 19, 2026 (P0 Morning Standup Analysis) Ratified: January 20, 2026 Category: Grammar Application