-
-
Notifications
You must be signed in to change notification settings - Fork 3
Closed
Labels
featmcp-serverapps/mcp-serverapps/mcp-serverpriority:mustMust Have - 반드시 필요, 없으면 릴리즈 불가Must Have - 반드시 필요, 없으면 릴리즈 불가
Description
Purpose
The current single docs/codingbuddy/context.md file is overwritten when multiple sessions run simultaneously (e.g., taskMaestro conductor + workers, or multiple Claude Code sessions). PLAN mode resets the entire file, destroying other sessions' context.
Problem
Session A (conductor): PLAN → resets context.md
Session B (worker 1): ACT → appends to context.md
Session C (worker 2): ACT → appends to context.md
↓
Session A resets → B and C's context lost
B and C append simultaneously → race condition
Observed in 2026-03-21 parallel execution: worker sessions overwrote conductor's context.
Solution: Session-Isolated Context Files
docs/codingbuddy/
├── context.md ← Index (active session list)
├── sessions/
│ ├── ctx-{session-id-A}.md ← Conductor session
│ ├── ctx-{session-id-B}.md ← Worker 1 session
│ └── ctx-{session-id-C}.md ← Worker 2 session
└── shared/
└── decisions.md ← Cross-session shared decisions (append-only)
Changes
apps/mcp-server/src/— Modifyupdate_contextandparse_modecontext handling- Add
sessionIdparameter toupdate_context - PLAN reset only affects own session file, not others
shared/decisions.mdfor cross-session communication (append-only, no reset)context.mdbecomes an index listing active sessions
Session ID Strategy
- Auto-generated UUID per session (stored in session state)
- Fallback: if no sessionId provided, use legacy single-file behavior (backward compatible)
- taskMaestro integration: session ID derived from
pane-{N}for easy mapping
API Changes
// update_context — add sessionId
update_context({
mode: "ACT",
sessionId: "abc-123", // NEW
progress: [...],
shareDecisions: ["..."] // NEW: also written to shared/decisions.md
})
// parse_mode — returns session-specific path
parse_mode("PLAN: ...") → {
contextFilePath: "docs/codingbuddy/sessions/ctx-abc-123.md",
sharedDecisions: [...], // from shared/decisions.md
}Backward Compatibility
- No sessionId → falls back to single
context.md(existing behavior) sessions/directory auto-created on first session-isolated call- Existing context.md content preserved
Acceptance Criteria
-
update_contextacceptssessionIdparameter - Each session writes to its own file (
sessions/ctx-{id}.md) - PLAN reset only affects own session file
-
shared/decisions.mdfor cross-session append-only data -
context.mdserves as index of active sessions - No sessionId → legacy single-file behavior (backward compatible)
- Race condition free (each session writes to different file)
- TDD: tests first
References
- Current implementation:
apps/mcp-server/src/mcp/(context handling) - context-management skill:
packages/rules/.ai-rules/skills/context-management/ - Related: feat: add session issue tracking to update_context #842 (session issue tracking)
- Incident: 2026-03-21 parallel execution context overwrites
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
featmcp-serverapps/mcp-serverapps/mcp-serverpriority:mustMust Have - 반드시 필요, 없으면 릴리즈 불가Must Have - 반드시 필요, 없으면 릴리즈 불가