- Create Economist SubmissionTracking package correctly: * mainArticle = full blog post content * coverLetter = 216-word SIR— letter * Links to blog post via blogPostId - Archive 'Letter to The Economist' from blog posts (it's the cover letter) - Fix date display on article cards (use published_at) - Target publication already displaying via blue badge Database changes: - Make blogPostId optional in SubmissionTracking model - Economist package ID: 68fa85ae49d4900e7f2ecd83 - Le Monde package ID: 68fa2abd2e6acd5691932150 Next: Enhanced modal with tabs, validation, export 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
982 lines
31 KiB
Markdown
982 lines
31 KiB
Markdown
# Phase 1 Implementation Tickets: Pluralistic Deliberation in Tractatus
|
|
## Single-User Value Conflict Resolution
|
|
|
|
**Project:** Integrate PluralisticDeliberationOrchestrator into Tractatus Framework
|
|
**Timeline:** 2-4 weeks
|
|
**Total Tickets:** 15 (organized by priority)
|
|
|
|
---
|
|
|
|
## Epic: Phase 1 - Single-User Deliberation
|
|
|
|
**Goal:** Enable Tractatus to resolve value conflicts between user's current intent, past instructions, and system boundaries through structured deliberation.
|
|
|
|
**Success Criteria:**
|
|
- ✅ Conflicts automatically detected in pre-action-check.js
|
|
- ✅ 4-round deliberation protocol implemented and tested
|
|
- ✅ Fast path (1-round) implemented for minor conflicts
|
|
- ✅ Outcomes stored in MongoDB and `.claude/deliberation-outcomes/`
|
|
- ✅ 10-20 real conflicts successfully resolved
|
|
- ✅ User satisfaction ≥3.5/5.0 (subjective assessment)
|
|
|
|
---
|
|
|
|
## 🔴 Priority 1: Critical Path (Week 1)
|
|
|
|
### Ticket #1: Create PluralisticDeliberationOrchestrator Component
|
|
|
|
**Priority:** P0 (Blocker)
|
|
**Estimated Effort:** 1 day
|
|
**Depends On:** None
|
|
|
|
**Description:**
|
|
Create the core PluralisticDeliberationOrchestrator component that will manage the deliberation lifecycle.
|
|
|
|
**Tasks:**
|
|
- [ ] Create file: `src/components/PluralisticDeliberationOrchestrator.js`
|
|
- [ ] Implement class structure with core methods:
|
|
- `initiateDeliberation(conflict, protocol)`
|
|
- `identifyStakeholders(conflict)`
|
|
- `run4RoundProtocol(session)`
|
|
- `runFastPath(session)`
|
|
- `round1_positionStatements(session)`
|
|
- `round2_sharedValues(session)`
|
|
- `round3_accommodations(session)`
|
|
- `round4_outcome(session, options)`
|
|
- `saveOutcome(session, outcome)`
|
|
- [ ] Add JSDoc documentation for all methods
|
|
- [ ] Export component in `src/components/index.js`
|
|
|
|
**Acceptance Criteria:**
|
|
- Component can be imported without errors
|
|
- All methods have JSDoc documentation
|
|
- Class structure matches design in executive summary
|
|
- No external dependencies that need installation
|
|
|
|
**Testing:**
|
|
- Unit test: Can instantiate PluralisticDeliberationOrchestrator
|
|
- Unit test: Each method can be called without errors (stub implementations OK for now)
|
|
|
|
**Files:**
|
|
- `src/components/PluralisticDeliberationOrchestrator.js` (NEW)
|
|
- `src/components/index.js` (MODIFIED)
|
|
|
|
---
|
|
|
|
### Ticket #2: Create Conflict Detection Logic in Pre-Action Check
|
|
|
|
**Priority:** P0 (Blocker)
|
|
**Estimated Effort:** 1 day
|
|
**Depends On:** None
|
|
|
|
**Description:**
|
|
Modify `scripts/pre-action-check.js` to detect value conflicts and trigger deliberation when appropriate.
|
|
|
|
**Tasks:**
|
|
- [ ] Add `checkForConflicts(action, context)` function
|
|
- [ ] Integrate with CrossReferenceValidator (detect instruction conflicts)
|
|
- [ ] Integrate with BoundaryEnforcer (detect ethical violations)
|
|
- [ ] Implement conflict classifier (determine severity: CRITICAL/HIGH/MODERATE/LOW)
|
|
- [ ] Determine protocol type (4-round vs fast path vs immediate block)
|
|
- [ ] Return structured conflict object with all relevant data
|
|
|
|
**Acceptance Criteria:**
|
|
- Function detects HIGH persistence instruction conflicts (confidence ≥80%)
|
|
- Function detects MODERATE/HIGH boundary violations
|
|
- Function correctly classifies conflict severity
|
|
- Function returns structured object: `{ needsDeliberation: boolean, protocol: string, conflicts: [], boundaryViolation: {} }`
|
|
- CRITICAL violations return `{ needsDeliberation: false, blocked: true, reason: string }`
|
|
|
|
**Testing:**
|
|
- Unit test: HIGH persistence conflict detected
|
|
- Unit test: MODERATE boundary violation detected
|
|
- Unit test: LOW persistence conflict triggers fast path
|
|
- Unit test: CRITICAL violation blocks immediately (no deliberation)
|
|
- Unit test: No conflict returns `{ needsDeliberation: false }`
|
|
|
|
**Files:**
|
|
- `scripts/pre-action-check.js` (MODIFIED)
|
|
|
|
---
|
|
|
|
### Ticket #3: Create Deliberation Config File
|
|
|
|
**Priority:** P0 (Blocker)
|
|
**Estimated Effort:** 2 hours
|
|
**Depends On:** None
|
|
|
|
**Description:**
|
|
Create configuration file for deliberation trigger thresholds and user preferences.
|
|
|
|
**Tasks:**
|
|
- [ ] Create file: `.claude/deliberation-config.json`
|
|
- [ ] Define trigger thresholds (HIGH persistence confidence, boundary severity levels, etc.)
|
|
- [ ] Define fast path eligibility criteria
|
|
- [ ] Define user preferences (default protocol, auto-document, etc.)
|
|
- [ ] Add JSON schema validation
|
|
- [ ] Document all config options in comments/README
|
|
|
|
**Acceptance Criteria:**
|
|
- File exists at `.claude/deliberation-config.json`
|
|
- Contains all thresholds from executive summary
|
|
- Valid JSON structure
|
|
- Can be loaded and parsed without errors
|
|
- Documented (each field explained)
|
|
|
|
**Config Structure:**
|
|
```json
|
|
{
|
|
"auto_trigger_thresholds": {
|
|
"high_persistence_conflict": 0.8,
|
|
"ethical_violation_severity": "MODERATE",
|
|
"reflection_bypass_confidence": 0.7,
|
|
"accumulated_conflicts_count": 3
|
|
},
|
|
"fast_path_eligible": {
|
|
"low_persistence_conflicts": true,
|
|
"reversible_actions": true,
|
|
"user_has_override_history": true
|
|
},
|
|
"user_preferences": {
|
|
"default_protocol": "4-round",
|
|
"allow_fast_path": true,
|
|
"auto_document_outcomes": true,
|
|
"verbose_output": true
|
|
}
|
|
}
|
|
```
|
|
|
|
**Files:**
|
|
- `.claude/deliberation-config.json` (NEW)
|
|
- `docs/deliberation/CONFIG.md` (NEW - documentation)
|
|
|
|
---
|
|
|
|
### Ticket #4: Create Deliberation Outcomes Directory Structure
|
|
|
|
**Priority:** P0 (Blocker)
|
|
**Estimated Effort:** 1 hour
|
|
**Depends On:** None
|
|
|
|
**Description:**
|
|
Set up directory structure and file format for storing deliberation outcomes.
|
|
|
|
**Tasks:**
|
|
- [ ] Create directory: `.claude/deliberation-outcomes/`
|
|
- [ ] Add `.gitkeep` to track directory in git
|
|
- [ ] Define JSON schema for outcome files
|
|
- [ ] Create README explaining directory purpose
|
|
- [ ] Add to `.gitignore` if outcomes should not be tracked (TBD - discuss with user)
|
|
|
|
**Acceptance Criteria:**
|
|
- Directory exists: `.claude/deliberation-outcomes/`
|
|
- README.md explains purpose and file format
|
|
- JSON schema defined for outcome files
|
|
- Decision made on git tracking (track or ignore)
|
|
|
|
**Outcome File Structure:**
|
|
```json
|
|
{
|
|
"session_id": "local-conflict-[timestamp]",
|
|
"timestamp": "2025-10-17T17:00:00Z",
|
|
"conflict": {
|
|
"type": "instruction_conflict",
|
|
"severity": "HIGH",
|
|
"user_request": "Add inline JavaScript",
|
|
"conflicting_instruction": "inst_008 (HIGH persistence)",
|
|
"boundary_violation": null
|
|
},
|
|
"protocol": "4-round",
|
|
"stakeholders": [...],
|
|
"round_summaries": [...],
|
|
"accommodation_chosen": {...},
|
|
"moral_remainder": "...",
|
|
"instruction_updated": false
|
|
}
|
|
```
|
|
|
|
**Files:**
|
|
- `.claude/deliberation-outcomes/` (NEW directory)
|
|
- `.claude/deliberation-outcomes/README.md` (NEW)
|
|
- `.claude/deliberation-outcomes/.gitkeep` (NEW)
|
|
|
|
---
|
|
|
|
## 🟠 Priority 2: Core Functionality (Week 1-2)
|
|
|
|
### Ticket #5: Implement Stakeholder Identification
|
|
|
|
**Priority:** P1 (High)
|
|
**Estimated Effort:** 1 day
|
|
**Depends On:** Ticket #1
|
|
|
|
**Description:**
|
|
Implement logic to identify stakeholders in a single-user conflict (current user, past instructions, boundaries, principles).
|
|
|
|
**Tasks:**
|
|
- [ ] Implement `identifyStakeholders(conflict)` method in PluralisticDeliberationOrchestrator
|
|
- [ ] Load conflicting instructions from `.claude/instruction-history.json`
|
|
- [ ] Extract user's current intent from conflict object
|
|
- [ ] Load relevant system boundaries from BoundaryEnforcer
|
|
- [ ] Load relevant project principles from CLAUDE.md
|
|
- [ ] Create stakeholder objects with proper structure
|
|
- [ ] Extract values from each stakeholder position (use heuristics or LLM)
|
|
|
|
**Acceptance Criteria:**
|
|
- Method returns array of stakeholder objects
|
|
- Each stakeholder has: `id`, `name`, `position`, `values[]`
|
|
- Stakeholders include: user-current, user-past (for each conflicting instruction), boundary-enforcer, project-principles
|
|
- Values are extracted and listed for each stakeholder
|
|
- Method handles cases where no past instructions conflict (only boundary violation)
|
|
|
|
**Testing:**
|
|
- Unit test: Identifies user-current and user-past stakeholders for instruction conflict
|
|
- Unit test: Identifies boundary-enforcer stakeholder for ethical violation
|
|
- Unit test: Handles conflict with multiple past instructions
|
|
- Unit test: Extracts values from stakeholder positions
|
|
|
|
**Files:**
|
|
- `src/components/PluralisticDeliberationOrchestrator.js` (MODIFIED)
|
|
|
|
---
|
|
|
|
### Ticket #6: Implement Round 1 - Position Statements
|
|
|
|
**Priority:** P1 (High)
|
|
**Estimated Effort:** 1 day
|
|
**Depends On:** Ticket #5
|
|
|
|
**Description:**
|
|
Implement Round 1 of 4-round protocol: Present each stakeholder's position to the user.
|
|
|
|
**Tasks:**
|
|
- [ ] Implement `round1_positionStatements(session)` method
|
|
- [ ] Format stakeholder positions for clear presentation
|
|
- [ ] Use consistent template (title box, position text, values emphasized)
|
|
- [ ] Ask user if positions are accurately characterized
|
|
- [ ] Allow user to correct mischaracterizations
|
|
- [ ] Store Round 1 summary in session
|
|
|
|
**Acceptance Criteria:**
|
|
- All stakeholders presented in clear, neutral format
|
|
- User can see all positions in single output
|
|
- User prompted to validate accuracy
|
|
- Round 1 summary stored in session object
|
|
- Output matches format shown in executive summary example
|
|
|
|
**Output Format:**
|
|
```
|
|
╔═══════════════════════════════════════════════════════╗
|
|
║ STAKEHOLDER POSITIONS ║
|
|
╚═══════════════════════════════════════════════════════╝
|
|
|
|
**You (Current Intent):**
|
|
[user's request text]
|
|
|
|
Values emphasized: [list]
|
|
|
|
**You (Past Instruction, HIGH Persistence - inst_008):**
|
|
[instruction text]
|
|
|
|
Values emphasized: [list]
|
|
|
|
[etc. for all stakeholders]
|
|
```
|
|
|
|
**Testing:**
|
|
- Integration test: Round 1 runs with 3 stakeholders (current, past, boundary)
|
|
- Integration test: User can validate accuracy
|
|
- Integration test: Round 1 summary stored correctly
|
|
|
|
**Files:**
|
|
- `src/components/PluralisticDeliberationOrchestrator.js` (MODIFIED)
|
|
|
|
---
|
|
|
|
### Ticket #7: Implement Round 2 - Shared Values Discovery
|
|
|
|
**Priority:** P1 (High)
|
|
**Estimated Effort:** 1 day
|
|
**Depends On:** Ticket #6
|
|
|
|
**Description:**
|
|
Implement Round 2: Identify values all stakeholders share despite disagreement on priorities.
|
|
|
|
**Tasks:**
|
|
- [ ] Implement `round2_sharedValues(session)` method
|
|
- [ ] Analyze stakeholder values from Round 1
|
|
- [ ] Identify shared values (values that appear in 2+ stakeholder positions)
|
|
- [ ] Identify values in tension (mutually exclusive or conflicting)
|
|
- [ ] Present synthesis to user
|
|
- [ ] Ask user to confirm or adjust shared values
|
|
- [ ] Store Round 2 summary in session
|
|
|
|
**Acceptance Criteria:**
|
|
- Shared values correctly identified (appear in multiple stakeholder positions)
|
|
- Values in tension correctly identified (conflicting priorities)
|
|
- Synthesis presented clearly to user
|
|
- User can confirm or adjust
|
|
- Round 2 summary stored in session object
|
|
|
|
**Output Format:**
|
|
```
|
|
**Shared Values:**
|
|
1. [Value] (everyone values this)
|
|
2. [Value] (everyone values this)
|
|
|
|
**Values in Tension:**
|
|
1. [Value A] (current) vs. [Value B] (past)
|
|
2. [Value C] vs. [Value D]
|
|
|
|
**The Core Question:**
|
|
[Synthesized question highlighting the real conflict]
|
|
```
|
|
|
|
**Testing:**
|
|
- Integration test: Correctly identifies shared values
|
|
- Integration test: Correctly identifies values in tension
|
|
- Integration test: User can adjust synthesis
|
|
|
|
**Files:**
|
|
- `src/components/PluralisticDeliberationOrchestrator.js` (MODIFIED)
|
|
|
|
---
|
|
|
|
### Ticket #8: Implement Accommodation Generator
|
|
|
|
**Priority:** P1 (High)
|
|
**Estimated Effort:** 2 days
|
|
**Depends On:** Ticket #7
|
|
|
|
**Description:**
|
|
Create AccommodationGenerator utility that generates 3-4 accommodation options honoring multiple values.
|
|
|
|
**Tasks:**
|
|
- [ ] Create file: `src/utils/accommodation-generator.js`
|
|
- [ ] Implement `generate(stakeholders, sharedValues, valuesInTension)` function
|
|
- [ ] Generate 3-4 accommodation options
|
|
- [ ] Each option must explicitly state: values honored, values sacrificed, trade-offs
|
|
- [ ] Include at least one "full compliance" option and one "full override" option
|
|
- [ ] Generate middle-ground options that accommodate multiple values
|
|
- [ ] Provide recommendations (which option is most balanced)
|
|
|
|
**Acceptance Criteria:**
|
|
- Generates 3-4 distinct accommodation options
|
|
- Each option has: title, what it honors, what it sacrifices, implementation details, recommendation
|
|
- Options span spectrum (full compliance → compromise → full override)
|
|
- At least one option attempts to honor all stakeholder values
|
|
- Recommendations are neutral (not pushing toward specific option)
|
|
|
|
**Output Format:**
|
|
```
|
|
╔═══════════════════════════════════════════════════════╗
|
|
║ OPTION A: [Title] ║
|
|
╚═══════════════════════════════════════════════════════╝
|
|
|
|
What it honors:
|
|
✓ [Value 1]
|
|
✓ [Value 2]
|
|
|
|
What it sacrifices:
|
|
✗ [Value 3]
|
|
|
|
Implementation: [specific steps]
|
|
|
|
Recommendation: [when this is appropriate]
|
|
```
|
|
|
|
**Testing:**
|
|
- Unit test: Generates 3-4 options
|
|
- Unit test: Each option has all required fields
|
|
- Unit test: Options are distinct (not duplicates)
|
|
- Integration test: Works with real stakeholder data from Round 2
|
|
|
|
**Files:**
|
|
- `src/utils/accommodation-generator.js` (NEW)
|
|
|
|
---
|
|
|
|
### Ticket #9: Implement Round 3 - Accommodation Exploration
|
|
|
|
**Priority:** P1 (High)
|
|
**Estimated Effort:** 1 day
|
|
**Depends On:** Ticket #8
|
|
|
|
**Description:**
|
|
Implement Round 3: Present accommodation options to user and get their choice.
|
|
|
|
**Tasks:**
|
|
- [ ] Implement `round3_accommodations(session)` method
|
|
- [ ] Call AccommodationGenerator to create options
|
|
- [ ] Present all options clearly to user
|
|
- [ ] Ask user which option honors their values best
|
|
- [ ] Allow user to propose alternative accommodation
|
|
- [ ] Store chosen accommodation in session
|
|
|
|
**Acceptance Criteria:**
|
|
- All accommodation options presented in clear format
|
|
- User can choose from options or propose alternative
|
|
- Chosen accommodation stored in session object
|
|
- User understands trade-offs of their choice
|
|
|
|
**Testing:**
|
|
- Integration test: Options generated and presented
|
|
- Integration test: User can choose option
|
|
- Integration test: User can propose alternative
|
|
- Integration test: Choice stored correctly
|
|
|
|
**Files:**
|
|
- `src/components/PluralisticDeliberationOrchestrator.js` (MODIFIED)
|
|
|
|
---
|
|
|
|
### Ticket #10: Implement Round 4 - Outcome Documentation
|
|
|
|
**Priority:** P1 (High)
|
|
**Estimated Effort:** 1 day
|
|
**Depends On:** Ticket #9
|
|
|
|
**Description:**
|
|
Implement Round 4: Document outcome, moral remainders, and any instruction updates.
|
|
|
|
**Tasks:**
|
|
- [ ] Implement `round4_outcome(session, options)` method
|
|
- [ ] Document decision made (which accommodation chosen)
|
|
- [ ] Document values honored and values deprioritized
|
|
- [ ] Identify moral remainders (values not fully satisfied)
|
|
- [ ] Ask user if instruction-history.json should be updated
|
|
- [ ] Present outcome summary to user
|
|
- [ ] Store outcome in session
|
|
|
|
**Acceptance Criteria:**
|
|
- Outcome clearly documents: decision, values honored, values deprioritized, moral remainder
|
|
- User asked if instructions should be updated
|
|
- Outcome summary presented before proceeding
|
|
- Outcome stored in session object
|
|
|
|
**Output Format:**
|
|
```
|
|
╔═══════════════════════════════════════════════════════╗
|
|
║ DELIBERATION OUTCOME ║
|
|
╚═══════════════════════════════════════════════════════╝
|
|
|
|
**Decision:** [accommodation chosen]
|
|
|
|
**Values Honored:**
|
|
✓ [list]
|
|
|
|
**Values Deprioritized:**
|
|
~ [list]
|
|
|
|
**Moral Remainder:**
|
|
[description of values not fully satisfied]
|
|
|
|
**Instruction Update:**
|
|
[whether instruction-history.json will be modified]
|
|
```
|
|
|
|
**Testing:**
|
|
- Integration test: Outcome documented with all fields
|
|
- Integration test: User asked about instruction update
|
|
- Integration test: Outcome summary presented
|
|
|
|
**Files:**
|
|
- `src/components/PluralisticDeliberationOrchestrator.js` (MODIFIED)
|
|
|
|
---
|
|
|
|
### Ticket #11: Implement Outcome Storage
|
|
|
|
**Priority:** P1 (High)
|
|
**Estimated Effort:** 0.5 day
|
|
**Depends On:** Ticket #10
|
|
|
|
**Description:**
|
|
Save deliberation outcomes to both MongoDB and `.claude/deliberation-outcomes/` directory.
|
|
|
|
**Tasks:**
|
|
- [ ] Implement `saveOutcome(session, outcome)` method
|
|
- [ ] Save to MongoDB using DeliberationSession model (if online)
|
|
- [ ] Save to `.claude/deliberation-outcomes/[timestamp].json` (always)
|
|
- [ ] Generate unique filename: `local-conflict-[timestamp]-[type].json`
|
|
- [ ] Handle errors gracefully (if MongoDB unavailable, still save locally)
|
|
|
|
**Acceptance Criteria:**
|
|
- Outcome saved to `.claude/deliberation-outcomes/` directory
|
|
- Filename follows format: `local-conflict-[timestamp]-[type].json`
|
|
- File contains complete outcome with all round summaries
|
|
- If MongoDB available, also saved there
|
|
- Errors handled gracefully (log warning, continue)
|
|
|
|
**Testing:**
|
|
- Unit test: Outcome saved to local file
|
|
- Unit test: Filename format correct
|
|
- Unit test: File contains valid JSON
|
|
- Integration test: MongoDB save works (if online)
|
|
- Integration test: Continues if MongoDB unavailable
|
|
|
|
**Files:**
|
|
- `src/components/PluralisticDeliberationOrchestrator.js` (MODIFIED)
|
|
|
|
---
|
|
|
|
## 🟡 Priority 3: Fast Path & Polish (Week 2)
|
|
|
|
### Ticket #12: Implement Fast Path (1-Round Deliberation)
|
|
|
|
**Priority:** P2 (Medium)
|
|
**Estimated Effort:** 0.5 day
|
|
**Depends On:** Ticket #5
|
|
|
|
**Description:**
|
|
Implement condensed 1-round deliberation for minor conflicts (LOW persistence, reversible actions).
|
|
|
|
**Tasks:**
|
|
- [ ] Implement `runFastPath(session)` method
|
|
- [ ] Surface conflict in single statement
|
|
- [ ] Provide 1-2 quick accommodation options
|
|
- [ ] Allow instant user choice
|
|
- [ ] Document outcome (simplified)
|
|
|
|
**Acceptance Criteria:**
|
|
- Fast path completes in 30 seconds - 2 minutes
|
|
- Presents conflict + 1-2 options concisely
|
|
- User can choose instantly
|
|
- Outcome documented (simplified format)
|
|
- Used for: LOW persistence conflicts, reversible actions
|
|
|
|
**Output Format:**
|
|
```
|
|
⚠️ Conflict detected:
|
|
|
|
Your current request: "[request]"
|
|
Your past instruction (LOW persistence): "[instruction]"
|
|
|
|
Quick options:
|
|
A. [Option 1]
|
|
B. [Option 2]
|
|
C. Override and proceed
|
|
|
|
Which option? [A/B/C]
|
|
```
|
|
|
|
**Testing:**
|
|
- Unit test: Fast path runs in <2 minutes
|
|
- Integration test: Works with LOW persistence conflict
|
|
- Integration test: Outcome documented correctly
|
|
|
|
**Files:**
|
|
- `src/components/PluralisticDeliberationOrchestrator.js` (MODIFIED)
|
|
|
|
---
|
|
|
|
### Ticket #13: Integrate Deliberation into Pre-Action Hook
|
|
|
|
**Priority:** P2 (Medium)
|
|
**Estimated Effort:** 1 day
|
|
**Depends On:** Ticket #2, Ticket #4, Ticket #11
|
|
|
|
**Description:**
|
|
Fully integrate deliberation into the pre-action-check.js hook so it runs automatically before actions.
|
|
|
|
**Tasks:**
|
|
- [ ] Modify `scripts/pre-action-check.js` to call PluralisticDeliberationOrchestrator when conflict detected
|
|
- [ ] Handle deliberation result (proceed, block, or retry)
|
|
- [ ] Update action to reflect accommodation chosen
|
|
- [ ] Log deliberation to session metrics
|
|
- [ ] Handle errors gracefully
|
|
|
|
**Acceptance Criteria:**
|
|
- Pre-action check automatically triggers deliberation when conflict detected
|
|
- Deliberation runs without user having to invoke it manually
|
|
- Action proceeds with chosen accommodation
|
|
- Blocked if user chooses not to proceed
|
|
- Errors logged but don't crash session
|
|
|
|
**Testing:**
|
|
- Integration test: Conflict triggers deliberation automatically
|
|
- Integration test: Action proceeds after accommodation chosen
|
|
- Integration test: Action blocked if user chooses to cancel
|
|
- Integration test: Errors handled gracefully
|
|
|
|
**Files:**
|
|
- `scripts/pre-action-check.js` (MODIFIED)
|
|
|
|
---
|
|
|
|
### Ticket #14: Create Accommodation Pattern Library
|
|
|
|
**Priority:** P2 (Medium)
|
|
**Estimated Effort:** 1 day
|
|
**Depends On:** None (can be done in parallel)
|
|
|
|
**Description:**
|
|
Document common conflict patterns and proven accommodation solutions to guide future deliberations.
|
|
|
|
**Tasks:**
|
|
- [ ] Create file: `docs/deliberation/accommodation-patterns.md`
|
|
- [ ] Document 10-15 common conflict patterns:
|
|
- CSP policy override (inline JavaScript)
|
|
- Test skipping (time pressure)
|
|
- Git commit message requirements
|
|
- Production database access
|
|
- Code quality standards bypass
|
|
- etc.
|
|
- [ ] For each pattern, document:
|
|
- Conflict type
|
|
- Common stakeholder positions
|
|
- Proven accommodation options
|
|
- When each option is appropriate
|
|
- Example outcomes
|
|
- [ ] Include lessons learned from simulation
|
|
|
|
**Acceptance Criteria:**
|
|
- Document contains 10-15 patterns
|
|
- Each pattern has: conflict type, stakeholders, accommodations, when to use, examples
|
|
- Patterns cover diverse conflict types (ethical, instruction, principle, technical)
|
|
- Examples include both successful and unsuccessful outcomes
|
|
|
|
**Files:**
|
|
- `docs/deliberation/accommodation-patterns.md` (NEW)
|
|
|
|
---
|
|
|
|
### Ticket #15: Add Deliberation Metrics to Session Init
|
|
|
|
**Priority:** P2 (Medium)
|
|
**Estimated Effort:** 0.5 day
|
|
**Depends On:** Ticket #11
|
|
|
|
**Description:**
|
|
Track deliberation metrics in session state (count, outcomes, user satisfaction).
|
|
|
|
**Tasks:**
|
|
- [ ] Add deliberation metrics to `.claude/session-state.json`
|
|
- [ ] Track: total deliberations, accommodations chosen, overrides, time spent
|
|
- [ ] Display metrics in session-init.js output
|
|
- [ ] Reset metrics at session start
|
|
- [ ] Persist metrics across session continuations
|
|
|
|
**Metrics to Track:**
|
|
```json
|
|
{
|
|
"deliberation_metrics": {
|
|
"total_deliberations": 0,
|
|
"4_round_count": 0,
|
|
"fast_path_count": 0,
|
|
"accommodations_found": 0,
|
|
"explicit_overrides": 0,
|
|
"average_time_minutes": 0,
|
|
"conflicts_by_type": {
|
|
"instruction_conflict": 0,
|
|
"boundary_violation": 0,
|
|
"principle_conflict": 0
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
**Acceptance Criteria:**
|
|
- Metrics tracked in session-state.json
|
|
- Displayed in session-init.js output
|
|
- Updated after each deliberation
|
|
- Reset at session start (new session only, not continuation)
|
|
|
|
**Testing:**
|
|
- Unit test: Metrics initialized correctly
|
|
- Unit test: Metrics updated after deliberation
|
|
- Integration test: Metrics displayed in session-init output
|
|
|
|
**Files:**
|
|
- `.claude/session-state.json` (MODIFIED - schema update)
|
|
- `scripts/session-init.js` (MODIFIED - display metrics)
|
|
- `src/components/PluralisticDeliberationOrchestrator.js` (MODIFIED - update metrics)
|
|
|
|
---
|
|
|
|
## 🟢 Priority 4: Testing & Documentation (Week 3-4)
|
|
|
|
### Ticket #16: Create Unit Tests for PluralisticDeliberationOrchestrator
|
|
|
|
**Priority:** P3 (Nice to have)
|
|
**Estimated Effort:** 1 day
|
|
**Depends On:** Ticket #1-#11
|
|
|
|
**Description:**
|
|
Write comprehensive unit tests for all PluralisticDeliberationOrchestrator methods.
|
|
|
|
**Tasks:**
|
|
- [ ] Create file: `tests/unit/PluralisticDeliberationOrchestrator.test.js`
|
|
- [ ] Test `identifyStakeholders()` with various conflict types
|
|
- [ ] Test each round method (Round 1-4)
|
|
- [ ] Test `saveOutcome()` with MongoDB online/offline
|
|
- [ ] Test `runFastPath()` for quick conflicts
|
|
- [ ] Mock external dependencies (MongoDB, file system)
|
|
- [ ] Achieve ≥80% code coverage
|
|
|
|
**Acceptance Criteria:**
|
|
- All methods have unit tests
|
|
- Tests cover happy path and error cases
|
|
- Tests use mocks for external dependencies
|
|
- Code coverage ≥80% for PluralisticDeliberationOrchestrator
|
|
- Tests pass in CI/CD pipeline
|
|
|
|
**Testing:**
|
|
Run: `npm test -- PluralisticDeliberationOrchestrator.test.js`
|
|
|
|
**Files:**
|
|
- `tests/unit/PluralisticDeliberationOrchestrator.test.js` (NEW)
|
|
|
|
---
|
|
|
|
### Ticket #17: Create Integration Tests for Full Deliberation Flow
|
|
|
|
**Priority:** P3 (Nice to have)
|
|
**Estimated Effort:** 1 day
|
|
**Depends On:** Ticket #13
|
|
|
|
**Description:**
|
|
Write integration tests that run full deliberation flow from conflict detection to outcome storage.
|
|
|
|
**Tasks:**
|
|
- [ ] Create file: `tests/integration/deliberation-flow.test.js`
|
|
- [ ] Test: HIGH persistence conflict triggers 4-round deliberation
|
|
- [ ] Test: MODERATE boundary violation triggers 4-round deliberation
|
|
- [ ] Test: LOW persistence conflict triggers fast path
|
|
- [ ] Test: Accommodation chosen and action proceeds
|
|
- [ ] Test: User cancels deliberation and action blocked
|
|
- [ ] Test: Outcome saved to file system and MongoDB
|
|
- [ ] Use real instruction-history.json and boundary rules
|
|
|
|
**Acceptance Criteria:**
|
|
- Integration tests cover end-to-end flow
|
|
- Tests use real framework components (not all mocked)
|
|
- Tests verify outcome storage
|
|
- Tests pass reliably
|
|
- Can be run with: `npm test -- deliberation-flow.test.js`
|
|
|
|
**Files:**
|
|
- `tests/integration/deliberation-flow.test.js` (NEW)
|
|
|
|
---
|
|
|
|
### Ticket #18: Document Trigger Conditions
|
|
|
|
**Priority:** P3 (Nice to have)
|
|
**Estimated Effort:** 0.5 day
|
|
**Depends On:** Ticket #2
|
|
|
|
**Description:**
|
|
Create comprehensive documentation of all deliberation trigger conditions.
|
|
|
|
**Tasks:**
|
|
- [ ] Create file: `docs/deliberation/trigger-conditions.md`
|
|
- [ ] Document all 7 triggers (5 automatic + 2 manual)
|
|
- [ ] For each trigger: description, threshold, example, testing instructions
|
|
- [ ] Include decision tree diagram (when deliberation activates)
|
|
- [ ] Document how to customize thresholds in deliberation-config.json
|
|
|
|
**Acceptance Criteria:**
|
|
- All 7 triggers documented
|
|
- Each trigger has: description, threshold, example, testing steps
|
|
- Decision tree helps users understand when deliberation will activate
|
|
- Customization instructions clear
|
|
|
|
**Files:**
|
|
- `docs/deliberation/trigger-conditions.md` (NEW)
|
|
|
|
---
|
|
|
|
### Ticket #19: Run 10-20 Real Conflicts to Validate
|
|
|
|
**Priority:** P1 (High) - but blocked until other tickets complete
|
|
**Estimated Effort:** 2-3 days
|
|
**Depends On:** Ticket #13 (all core functionality)
|
|
|
|
**Description:**
|
|
Use Tractatus in real scenarios to trigger 10-20 conflicts and validate deliberation works.
|
|
|
|
**Tasks:**
|
|
- [ ] Identify 10-20 realistic conflict scenarios
|
|
- [ ] Trigger each conflict deliberately
|
|
- [ ] Run through full deliberation
|
|
- [ ] Document outcome for each
|
|
- [ ] Assess user satisfaction (subjective)
|
|
- [ ] Identify issues or improvements
|
|
- [ ] Calculate metrics: resolution rate, time per deliberation, override rate
|
|
|
|
**Realistic Conflict Scenarios:**
|
|
1. Request inline JavaScript (CSP violation)
|
|
2. Skip tests due to time pressure
|
|
3. Commit without descriptive message
|
|
4. Access production database directly
|
|
5. Override code quality standard
|
|
6. Delete file without backup
|
|
7. Bypass git hook validation
|
|
8. Use unsafe-eval in JavaScript
|
|
9. Skip documentation for "quick fix"
|
|
10. Deploy without staging test
|
|
[+ 10 more varied scenarios]
|
|
|
|
**Acceptance Criteria:**
|
|
- 10-20 conflicts successfully resolved via deliberation
|
|
- Accommodation found in ≥70% of deliberations
|
|
- User satisfaction ≥3.5/5.0 (subjective assessment)
|
|
- Average time ≤15 minutes for 4-round protocol
|
|
- Average time ≤2 minutes for fast path
|
|
- Issues documented in GitHub issues
|
|
- Metrics calculated and documented
|
|
|
|
**Deliverables:**
|
|
- Document: `docs/deliberation/phase-1-validation-results.md`
|
|
- Conflict scenarios tested
|
|
- Outcomes for each
|
|
- Metrics summary
|
|
- Lessons learned
|
|
- Recommended improvements
|
|
|
|
**Files:**
|
|
- `docs/deliberation/phase-1-validation-results.md` (NEW)
|
|
- `.claude/deliberation-outcomes/[20 outcome files]` (NEW)
|
|
|
|
---
|
|
|
|
### Ticket #20: Update CLAUDE.md Documentation
|
|
|
|
**Priority:** P3 (Nice to have)
|
|
**Estimated Effort:** 0.5 day
|
|
**Depends On:** Ticket #19 (after validation)
|
|
|
|
**Description:**
|
|
Update CLAUDE.md to document pluralistic deliberation as core Tractatus functionality.
|
|
|
|
**Tasks:**
|
|
- [ ] Add section to CLAUDE.md: "Pluralistic Deliberation"
|
|
- [ ] Explain when deliberation activates
|
|
- [ ] Link to detailed documentation
|
|
- [ ] Update "Quick Reference" section
|
|
- [ ] Add example command for manual trigger
|
|
- [ ] Update session-init.js to mention deliberation component
|
|
|
|
**Acceptance Criteria:**
|
|
- CLAUDE.md updated with deliberation section
|
|
- Quick reference includes deliberation commands
|
|
- Links to detailed docs work
|
|
- Session-init.js mentions deliberation in component list
|
|
|
|
**Files:**
|
|
- `CLAUDE.md` (MODIFIED)
|
|
- `scripts/session-init.js` (MODIFIED - add to component list)
|
|
|
|
---
|
|
|
|
## Ticket Dependency Graph
|
|
|
|
```
|
|
Priority 0 (Week 1 - Critical Path):
|
|
Ticket #1 (Orchestrator Component) ──┐
|
|
Ticket #2 (Conflict Detection) ├─> Ticket #13 (Integration)
|
|
Ticket #3 (Config File) │
|
|
Ticket #4 (Outcomes Directory) ┘
|
|
|
|
Priority 1 (Week 1-2 - Core Functionality):
|
|
Ticket #5 (Stakeholder ID) ──> depends on #1
|
|
Ticket #6 (Round 1) ──> depends on #5
|
|
Ticket #7 (Round 2) ──> depends on #6
|
|
Ticket #8 (Accommodation Generator) ──> depends on #7
|
|
Ticket #9 (Round 3) ──> depends on #8
|
|
Ticket #10 (Round 4) ──> depends on #9
|
|
Ticket #11 (Outcome Storage) ──> depends on #10
|
|
|
|
Priority 2 (Week 2 - Fast Path & Polish):
|
|
Ticket #12 (Fast Path) ──> depends on #5
|
|
Ticket #13 (Integration) ──> depends on #2, #4, #11
|
|
Ticket #14 (Pattern Library) ──> independent
|
|
Ticket #15 (Metrics) ──> depends on #11
|
|
|
|
Priority 3 (Week 3-4 - Testing & Documentation):
|
|
Ticket #16 (Unit Tests) ──> depends on #1-#11
|
|
Ticket #17 (Integration Tests) ──> depends on #13
|
|
Ticket #18 (Documentation) ──> depends on #2
|
|
Ticket #19 (Validation) ──> depends on #13 (BLOCKER for Phase 1 completion)
|
|
Ticket #20 (CLAUDE.md Update) ──> depends on #19
|
|
```
|
|
|
|
---
|
|
|
|
## Sprint Planning Recommendation
|
|
|
|
### Week 1: Foundation
|
|
**Goal:** Core infrastructure in place
|
|
- Tickets #1-#4 (all P0)
|
|
- Start: Monday
|
|
- End: Friday
|
|
- Milestone: Can detect conflicts and initiate deliberation
|
|
|
|
### Week 2: Core Functionality
|
|
**Goal:** Full 4-round protocol working
|
|
- Tickets #5-#11 (all P1)
|
|
- Start: Monday Week 2
|
|
- End: Friday Week 2
|
|
- Milestone: Can run complete deliberation and store outcomes
|
|
|
|
### Week 3: Fast Path & Integration
|
|
**Goal:** Production-ready integration
|
|
- Tickets #12-#15 (all P2)
|
|
- Start: Monday Week 3
|
|
- End: Friday Week 3
|
|
- Milestone: Deliberation triggers automatically, fast path works
|
|
|
|
### Week 4: Testing & Validation
|
|
**Goal:** Phase 1 complete
|
|
- Tickets #16-#20 (all P3 + validation)
|
|
- Start: Monday Week 4
|
|
- End: Friday Week 4
|
|
- Milestone: 10-20 conflicts validated, documented, metrics calculated
|
|
|
|
---
|
|
|
|
## Definition of Done (Phase 1)
|
|
|
|
Phase 1 is complete when:
|
|
- [ ] All P0 and P1 tickets completed (Tickets #1-#11, #13)
|
|
- [ ] Ticket #19 (Validation) completed: 10-20 real conflicts successfully resolved
|
|
- [ ] Metrics achieved:
|
|
- Accommodation found in ≥70% of deliberations
|
|
- User satisfaction ≥3.5/5.0
|
|
- Average time ≤15 minutes (4-round), ≤2 minutes (fast path)
|
|
- [ ] Documentation complete:
|
|
- CLAUDE.md updated
|
|
- Trigger conditions documented
|
|
- Accommodation patterns documented
|
|
- Validation results documented
|
|
- [ ] Code merged to main branch
|
|
- [ ] Tests passing in CI/CD
|
|
|
|
---
|
|
|
|
## Tracking & Reporting
|
|
|
|
**Daily Standups:**
|
|
- What ticket(s) did you work on yesterday?
|
|
- What ticket(s) will you work on today?
|
|
- Any blockers?
|
|
|
|
**Weekly Review:**
|
|
- Tickets completed vs planned
|
|
- Metrics update (if validation started)
|
|
- Adjust timeline if needed
|
|
|
|
**Phase 1 Completion Report:**
|
|
- Total tickets: 20
|
|
- Completed: [X]/20
|
|
- Validation results: [metrics summary]
|
|
- Lessons learned: [list]
|
|
- Recommended for Phase 2: [list]
|
|
|
|
---
|
|
|
|
**Document Version:** 1.0
|
|
**Date:** October 17, 2025
|
|
**Status:** Ready for Implementation
|
|
**Total Estimated Effort:** 15-20 days (2-4 weeks)
|