RFC 0018 - Document Import/Sync:
- Add content_hash and indexed_at fields to Document
- Implement find_document_with_fallback for filesystem recovery
- Add reconcile() for database/filesystem sync
- Create blue_sync MCP tool
- Update blue_status to show index drift
RFC 0019 - Claude Code Task Integration:
- Expose .plan.md as MCP resource (blue://docs/rfcs/{n}/plan)
- Enhance blue_rfc_get with claude_code_tasks array
- Add 💙 prefix for Blue-synced tasks
- Add knowledge/task-sync.md for session injection
- Automatic sync via injected instructions
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
14 KiB
Alignment Dialogue: Claude Code Task Integration
| Topic | RFC for integrating Blue plan files with Claude Code's task management |
| Source | Spike: Claude Code Task Integration (2026-01-26) |
| Experts | 12 |
| Target | 95% convergence |
| Status | In Progress |
Round 1: Initial Perspectives
Scoreboard
| Expert | Role | Wisdom | Consistency | Truth | Relationships | Total |
|---|---|---|---|---|---|---|
| 1 | Systems Architect | 9 | 9 | 9 | 8 | 35 |
| 2 | Developer Experience | 8 | 9 | 8 | 9 | 34 |
| 3 | File System Philosopher | 10 | 10 | 10 | 7 | 37 |
| 4 | MCP Protocol Expert | 9 | 10 | 9 | 8 | 36 |
| 5 | Workflow Automation | 8 | 8 | 8 | 8 | 32 |
| 6 | Data Sync Expert | 8 | 9 | 9 | 7 | 33 |
| 7 | UI Designer | 9 | 8 | 9 | 9 | 35 |
| 8 | Reliability Engineer | 9 | 9 | 9 | 7 | 34 |
| 9 | Simplicity Advocate | 10 | 9 | 10 | 8 | 37 |
| 10 | Security Analyst | 8 | 9 | 9 | 7 | 33 |
| 11 | Integration Architect | 9 | 8 | 8 | 8 | 33 |
| 12 | Blue ADR Guardian | 9 | 10 | 10 | 9 | 38 |
Convergence Points (100%)
- File Authority:
.plan.mdfiles are the single source of truth (ADR 5) - Ephemeral Tasks: Claude Code tasks are session-local mirrors, not persistent state
- Skill Orchestration: Skills mediate between Blue MCP and Claude Code tasks
- No MCP Push: MCP's request-response nature means Blue cannot initiate sync
Key Perspectives
Expert 3 (File System Philosopher):
"The file must win, always. When divergence is detected, the file's state is ground truth; the database state is an error to be corrected."
Expert 9 (Simplicity Advocate):
"The integration isn't worth the complexity... Strip this down to read-only exposure. If a user wants to update the Blue plan after completing a Claude Code task, they run
blue_rfc_task_completeexplicitly."
Expert 4 (MCP Protocol Expert):
"Pure skill orchestration is sufficient. The MCP server stays pure—it only answers queries about its documents, never tries to manage external task state."
Expert 7 (UI Designer):
"Make task state transitions (not progress updates) the trigger for filesystem writes."
Tensions
| Tension | Position A | Position B | Experts |
|---|---|---|---|
| Integration Scope | Full bidirectional sync | Read-only context only | 1,2,5,6,7,8,11 vs 9 |
| New Blue Tools | Add blue_task_context |
Pure skill orchestration | 11 vs 4,9 |
| Sync Timing | Automatic on completion | Explicit user command | 2,7 vs 5,6,9 |
Round 1 Convergence: ~75%
Strong agreement on principles, divergence on implementation scope.
Round 2: Resolving Tensions
Votes
| Expert | Tension 1 | Tension 2 | Tension 3 |
|---|---|---|---|
| 1 | - | - | - |
| 2 | B | B | B |
| 3 | A | B | B |
| 4 | B | B | B |
| 5 | B | B | B |
| 6 | B | B | B |
| 7 | B | B | B |
| 8 | B | B | B |
| 9 | B | B | B |
| 10 | B | B | B |
| 11 | B | B | B |
| 12 | B | B | B |
Results
| Tension | Position A | Position B | Winner |
|---|---|---|---|
| 1. Integration Scope | 1 (9%) | 10 (91%) | B: Read-only context injection |
| 2. New Blue Tools | 0 (0%) | 11 (100%) | B: Pure skill orchestration |
| 3. Sync Timing | 0 (0%) | 11 (100%) | B: Explicit sync command |
Round 2 Convergence: 97%
Target of 95% achieved.
Consensus
The 12 experts converged on the following RFC specification:
Core Principles
- File Authority:
.plan.mdfiles are the single source of truth for RFC task state - Ephemeral Mirror: Claude Code tasks are session-local projections, not persistent state
- Skill Orchestration: A
/blue-planskill mediates using existing tools only - Explicit Sync: Users invoke
blue_rfc_task_completemanually to persist changes
Architecture
┌─────────────────┐ read ┌─────────────────┐
│ .plan.md │◄──────────────│ /blue-plan │
│ (authority) │ │ skill │
└─────────────────┘ └────────┬────────┘
▲ │
│ │ create
│ explicit ▼
│ blue_rfc_task_complete ┌─────────────────┐
│ │ Claude Code │
└──────────────────────────│ Tasks │
user invokes │ (ephemeral) │
└─────────────────┘
What the Skill Does
-
On
/blue-plan <rfc-title>:- Calls
blue_rfc_getto fetch RFC with plan tasks - Creates Claude Code tasks via
TaskCreatefor each plan task - Stores mapping in task metadata:
{ blue_rfc: "title", blue_task_index: N }
- Calls
-
During work:
- User works normally, Claude marks tasks in_progress/completed
- Claude Code UI shows progress
-
On task completion:
- User (or skill prompt) calls
blue_rfc_task_completeexplicitly - Plan file updated, becomes source of truth for next session
- User (or skill prompt) calls
What We Don't Build
- No automatic writeback from Claude Code to plan files
- No new Blue MCP tools (existing tools sufficient)
- No bidirectional sync machinery
- No watcher processes or polling
ADR Alignment
| ADR | Alignment |
|---|---|
| ADR 5 (Single Source) | .plan.md is sole authority |
| ADR 8 (Honor) | Explicit sync = say what you do |
| ADR 10 (No Dead Code) | No new tools needed |
| ADR 11 (Constraint) | Simple one-way flow |
Status
CONVERGED at 97% - User rejected skills and explicit sync.
Round 3: User Constraints
User Requirements:
- No explicit sync - automatic/implicit instead
- No skills - don't add Claude Code skills
- Use injection - context appears automatically
New Consensus
| Expert | Position | Key Insight |
|---|---|---|
| 1 | MCP Resources | Expose .plan.md as resource, inject on RFC access |
| 2 | Seamless UX | Zero onboarding, tasks appear naturally |
| 3 | Visible Sync | Automatic OK if auditable (git commits) |
| 4 | Tool-Triggered | blue_rfc_get returns _plan_uri for injection |
| 5 | Lazy Injection | Inject on-demand when RFC referenced |
| 6 | Hash Versioning | Content-hash with three-way merge on conflict |
| 7 | Audit Trail | Sync events logged, visible in status |
| 8 | Confirmation | Three-phase handshake for reliability |
| 9 | File Watcher | Session-scoped injection + file watcher |
| 10 | DISSENT | Automatic file writes are security risk |
| 11 | Hooks | Option B+C: tool injection + hook writeback |
| 12 | Observable | Automatic sync honors ADR 8 if transparent |
Convergence: ~92%
Expert 10 dissents on automatic writeback security.
Proposed Architecture
┌─────────────────┐ ┌─────────────────┐
│ .plan.md │◄───── MCP ────────│ blue_rfc_get │
│ (authority) │ Resource │ │
└────────┬────────┘ └────────┬────────┘
│ │
│ auto-inject │ returns tasks +
│ as context │ creates CC tasks
▼ ▼
┌─────────────────┐ ┌─────────────────┐
│ Claude Code │◄───────────────────│ TaskCreate │
│ Context │ auto-populate │ (automatic) │
└────────┬────────┘ └─────────────────┘
│
│ on task complete
│ (hook triggers)
▼
┌─────────────────┐
│ blue_rfc_task │────────► Updates .plan.md
│ _complete │ (automatic writeback)
└─────────────────┘
Implementation Approach
- MCP Resource: Expose
.plan.mdfiles viablue://docs/rfcs/{id}/plan - Tool Enhancement:
blue_rfc_getincludes_plan_uriand auto-creates Claude Code tasks - Hook Integration: Claude Code hook watches task state → calls
blue_rfc_task_complete - Audit Trail: All syncs logged with timestamps, visible in
blue status
Security Mitigation (for Expert 10's concern)
- Writeback only for tasks with valid
blue_rfcmetadata - Content-hash validation before write (detect external changes)
- Audit log in
.plan.mdcomments for forensics - Rate limiting on automatic writes
Round 4: Security Resolution
Question: How to address Expert 10's security concern about automatic file writes?
| Option | Description |
|---|---|
| A | Accept risk with mitigations only |
| B | First-time confirmation per RFC |
| C | Opt-in via config (disabled by default) |
Votes
| Expert | Vote | Justification |
|---|---|---|
| 1 | B | Confirmation friction only hits once per RFC |
| 2 | B | Builds confidence after first sync |
| 3 | B | Establishes implicit consent to manage companion file |
| 9 | B | Sweet spot: informed consent without ongoing friction |
| 10 | B | Hash validation + first confirmation = informed consent |
| 12 | B | ADR 8 requires transparency; confirmation makes behavior knowable |
Result: Option B Unanimous (100%)
First-time confirmation per RFC satisfies security concern while preserving seamless UX.
Final Consensus
Convergence: 97% - Target achieved.
Architecture
┌─────────────────┐ ┌─────────────────┐
│ .plan.md │◄───── MCP ────────│ blue_rfc_get │
│ (authority) │ Resource │ │
└────────┬────────┘ └────────┬────────┘
│ │
│ auto-inject │ auto-creates
│ as context │ Claude Code tasks
▼ ▼
┌─────────────────┐ ┌─────────────────┐
│ Claude Code │◄───────────────────│ TaskCreate │
│ Context │ │ (automatic) │
└────────┬────────┘ └─────────────────┘
│
│ on task complete → hook triggers
▼
┌─────────────────────────────────────────────────────────┐
│ First time for this RFC? │
│ ├─ YES → Confirm: "Enable auto-sync for RFC X?" [Y/n] │
│ └─ NO → Automatic writeback │
└─────────────────────────────────────────────────────────┘
│
▼
┌─────────────────┐
│ blue_rfc_task │────────► Updates .plan.md
│ _complete │
└─────────────────┘
Key Decisions
| Decision | Rationale |
|---|---|
| MCP Resource injection | Context appears automatically, no skills |
| Tool-triggered task creation | blue_rfc_get auto-populates Claude Code tasks |
| Hook-based writeback | Task completion triggers blue_rfc_task_complete |
| First-time confirmation | Balances security with seamlessness |
| Audit trail | All syncs logged, visible in git |
ADR Alignment
| ADR | How Honored |
|---|---|
| ADR 5 (Single Source) | .plan.md remains authoritative |
| ADR 8 (Honor) | First-time confirmation = explicit consent |
| ADR 11 (Constraint) | Automatic flow with minimal friction |
Round 5: User Override
User Decision: Remove first-time confirmation. It adds friction for a low-risk operation.
Rationale:
- User is already in their own project
- Writes are just checkbox updates in
.plan.md - Git provides full audit trail and rollback
- The "security risk" is overstated for this context
Final Architecture: Fully automatic. No prompts, no confirmation.
Round 6: Open Questions
Q1: Visual indicator for auto-created tasks?
User Decision: Yes, use 💙
Q2: Mid-session task additions?
| Expert | Vote | Rationale |
|---|---|---|
| 1 | B | Honors file authority, syncs at natural interaction points |
| 2 | B | Predictable - sync at interaction, not background |
| 3 | B | File is truth, re-read ensures current state |
| 9 | B | Rebuild-on-read already exists, no new complexity |
| 11 | B | Lazy re-read aligns with is_cache_stale() pattern |
| 12 | B | ADR 5 requires trusting .plan.md as authority |
Result: B (Poll on access) - Unanimous
Re-read plan file on next blue_rfc_get, create missing tasks.
Status
CONVERGED - All open questions resolved. RFC 0019 ready.