Assignment-Based Ownership Architecture
Status: In Progress Track Project: 53e19f4c (Multi-Tenant Implementation) Date: 2026-01-03
Problem Statement
Resources (sessions, track projects, contacts, etc.) currently have user ownership baked into Redis keys:
- sess:{user_id}:{session_id} - not transferable
- track:{user}:{ts}:project:{id} - not shareable
- Current session pointer in User env creates cross-env dependency
Solution: Assignment Environment for All Ownership
Remove user_id from resource keys. Use Assignment environment to link users to resources.
Key Pattern Changes
Session (Before -> After)
sess:{user_id}:{session_id} -> sess:{stable_id}
sess:{user_id}:{session_id}:items -> sess:{stable_id}:items
user:{user_id}:session:current -> sess:current:{user_id}
Track (Before -> After)
track:{user}:{ts}:project:{id} -> track:{ts}:project:{stable_id}
track:{user}:projects -> track:index:projects
Assignment Links (New)
assign:access:session:{stable_id}:{user_id} -> {access_level: 'admin'}
assign:access:track:{stable_id}:{user_id} -> {access_level: 'admin'}
AI State: Hybrid Approach
Two-tier AI state within sessions:
Session-Level: sess:{stable_id}:ai_state:{ai}
- Shared context visible to all participants
- Session summary and major accomplishments
User-Level: sess:{stable_id}:ai_state:{ai}:{user_id}
- Active todos for this user's AI
- Working notes specific to current task
Implementation Phases
- DONE - Create assignment_helper.py -
/opt/mcp-servers/shared/assignment_helper.py - NEXT - Update session_helper.py - Remove User env dependency, new key patterns
- PENDING - Update Session MCP server - New tools: join, share, transfer
- PENDING - Update TodoWrite hook - Use new session lookup
- PENDING - Update Track MCP server - Assignment integration
- PENDING - Migration script - Convert existing data
Files
- Plan:
/home/nexus/.claude/plans/enumerated-sniffing-lerdorf.md - Assignment Helper:
/opt/mcp-servers/shared/assignment_helper.py - Session Helper:
/opt/mcp-servers/shared/session_helper.py - Session MCP:
/opt/mcp-servers/session/mcp_session_server.py - Track MCP:
/opt/mcp-servers/track/mcp_track_server.py