feat: add Conductor plugin for Context-Driven Development

Add comprehensive Conductor plugin implementing Context-Driven Development
methodology with tracks, specs, and phased implementation plans.

Components:
- 5 commands: setup, new-track, implement, status, revert
- 1 agent: conductor-validator
- 3 skills: context-driven-development, track-management, workflow-patterns
- 18 templates for project artifacts

Documentation updates:
- README.md: Updated counts (68 plugins, 100 agents, 110 skills, 76 tools)
- docs/plugins.md: Added Conductor to Workflows section
- docs/agents.md: Added conductor-validator agent
- docs/agent-skills.md: Added Conductor skills section

Also includes Prettier formatting across all project files.
This commit is contained in:
Seth Hobson
2026-01-15 17:38:21 -05:00
parent 87231b828d
commit f662524f9a
94 changed files with 11610 additions and 1728 deletions

View File

@@ -51,6 +51,7 @@ async def test_workflow_with_mocked_activity(workflow_env):
### Dynamic Mock Responses
**Scenario-Based Mocking**:
```python
@pytest.mark.asyncio
async def test_workflow_multiple_mock_scenarios(workflow_env):
@@ -106,6 +107,7 @@ async def test_workflow_multiple_mock_scenarios(workflow_env):
### Testing Transient Failures
**Retry Behavior**:
```python
@pytest.mark.asyncio
async def test_workflow_transient_errors(workflow_env):
@@ -154,6 +156,7 @@ async def test_workflow_transient_errors(workflow_env):
### Testing Non-Retryable Errors
**Business Validation Failures**:
```python
@pytest.mark.asyncio
async def test_workflow_non_retryable_error(workflow_env):

View File

@@ -519,6 +519,7 @@ async def test_workflow_with_breakpoint(workflow_env):
## Troubleshooting
**Issue: Temporal server not starting**
```bash
# Check logs
docker-compose logs temporal
@@ -529,12 +530,14 @@ docker-compose up -d
```
**Issue: Tests timing out**
```python
# Increase timeout in pytest.ini
asyncio_default_timeout = 30
```
**Issue: Port already in use**
```bash
# Find process using port 7233
lsof -i :7233

View File

@@ -7,12 +7,14 @@ Comprehensive guide for validating workflow determinism and ensuring safe code c
**Purpose**: Verify that workflow code changes are backward-compatible with existing workflow executions
**How it works**:
1. Temporal records every workflow decision as Event History
2. Replay testing re-executes workflow code against recorded history
3. If new code makes same decisions → deterministic (safe to deploy)
4. If decisions differ → non-deterministic (breaking change)
**Critical Use Cases**:
- Deploying workflow code changes to production
- Validating refactoring doesn't break running workflows
- CI/CD automated compatibility checks
@@ -78,6 +80,7 @@ async def test_replay_multiple_workflows():
### Common Non-Deterministic Patterns
**Problem: Random Number Generation**
```python
# ❌ Non-deterministic (breaks replay)
@workflow.defn
@@ -95,6 +98,7 @@ class GoodWorkflow:
```
**Problem: Current Time**
```python
# ❌ Non-deterministic
@workflow.defn
@@ -114,6 +118,7 @@ class GoodWorkflow:
```
**Problem: Direct External Calls**
```python
# ❌ Non-deterministic
@workflow.defn
@@ -432,6 +437,7 @@ class MigratedWorkflow:
## Common Replay Errors
**Non-Deterministic Error**:
```
WorkflowNonDeterministicError: Workflow command mismatch at position 5
Expected: ScheduleActivityTask(activity_id='activity-1')
@@ -441,6 +447,7 @@ Got: ScheduleActivityTask(activity_id='activity-2')
**Solution**: Code change altered workflow decision sequence
**Version Mismatch Error**:
```
WorkflowVersionError: Workflow version changed from 1 to 2 without using get_version()
```

View File

@@ -39,6 +39,7 @@ async def test_workflow_execution(workflow_env):
```
**Key Benefits**:
- `workflow.sleep(timedelta(days=30))` completes instantly
- Fast feedback loop (milliseconds vs hours)
- Deterministic test execution
@@ -46,6 +47,7 @@ async def test_workflow_execution(workflow_env):
### Time-Skipping Examples
**Sleep Advancement**:
```python
@pytest.mark.asyncio
async def test_workflow_with_delays(workflow_env):
@@ -72,6 +74,7 @@ async def test_workflow_with_delays(workflow_env):
```
**Manual Time Control**:
```python
@pytest.mark.asyncio
async def test_workflow_manual_time(workflow_env):
@@ -99,6 +102,7 @@ async def test_workflow_manual_time(workflow_env):
### Testing Workflow Logic
**Decision Testing**:
```python
@pytest.mark.asyncio
async def test_workflow_branching(workflow_env):
@@ -160,6 +164,7 @@ async def test_activity_basic():
### Testing Activity Context
**Heartbeat Testing**:
```python
async def test_activity_heartbeat():
"""Verify heartbeat calls"""
@@ -177,6 +182,7 @@ async def test_activity_heartbeat():
```
**Cancellation Testing**:
```python
async def test_activity_cancellation():
"""Test activity cancellation handling"""
@@ -199,6 +205,7 @@ async def test_activity_cancellation():
### Testing Error Handling
**Exception Propagation**:
```python
async def test_activity_error():
"""Test activity error handling"""
@@ -270,6 +277,7 @@ async def test_activity_parameterized(activity_env, input, expected):
## Common Patterns
**Testing Retry Logic**:
```python
@pytest.mark.asyncio
async def test_workflow_with_retries(workflow_env):