opencode-sdlc-plugin 0.3.2 → 1.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/README.md +90 -17
  2. package/config/presets/copilot-only.json +12 -5
  3. package/config/presets/enterprise.json +7 -7
  4. package/config/presets/event-modeling.json +6 -6
  5. package/config/presets/minimal.json +2 -2
  6. package/config/presets/solo-quick.json +2 -2
  7. package/config/presets/standard.json +6 -6
  8. package/config/presets/strict-tdd.json +7 -7
  9. package/config/schemas/athena.schema.json +4 -4
  10. package/config/schemas/sdlc.schema.json +101 -5
  11. package/dist/cli/index.js +781 -279
  12. package/dist/cli/index.js.map +1 -1
  13. package/dist/index.d.ts +427 -65
  14. package/dist/index.js +5239 -1924
  15. package/dist/index.js.map +1 -1
  16. package/dist/plugin/index.js +5206 -1930
  17. package/dist/plugin/index.js.map +1 -1
  18. package/package.json +1 -1
  19. package/prompts/agents/adr.md +234 -0
  20. package/prompts/agents/architect.md +204 -0
  21. package/prompts/agents/design-facilitator.md +237 -0
  22. package/prompts/agents/discovery.md +260 -0
  23. package/prompts/agents/domain.md +148 -34
  24. package/prompts/agents/file-updater.md +132 -0
  25. package/prompts/agents/green.md +119 -40
  26. package/prompts/agents/gwt.md +352 -0
  27. package/prompts/agents/model-checker.md +332 -0
  28. package/prompts/agents/red.md +112 -21
  29. package/prompts/agents/story.md +196 -0
  30. package/prompts/agents/ux.md +239 -0
  31. package/prompts/agents/workflow-designer.md +386 -0
  32. package/prompts/modes/architect.md +219 -0
  33. package/prompts/modes/build.md +150 -0
  34. package/prompts/modes/model.md +211 -0
  35. package/prompts/modes/plan.md +186 -0
  36. package/prompts/modes/pm.md +269 -0
  37. package/prompts/modes/prd.md +238 -0
  38. package/commands/sdlc-adr.md +0 -265
  39. package/commands/sdlc-debug.md +0 -376
  40. package/commands/sdlc-design.md +0 -246
  41. package/commands/sdlc-dev.md +0 -544
  42. package/commands/sdlc-info.md +0 -325
  43. package/commands/sdlc-parallel.md +0 -283
  44. package/commands/sdlc-recall.md +0 -213
  45. package/commands/sdlc-remember.md +0 -136
  46. package/commands/sdlc-research.md +0 -343
  47. package/commands/sdlc-review.md +0 -265
  48. package/commands/sdlc-status.md +0 -297
package/README.md CHANGED
@@ -35,7 +35,7 @@ The interactive installer will:
35
35
  1. Ask about your LLM subscriptions (Claude, OpenAI, Google, GitHub Copilot)
36
36
  2. Configure agent models for TDD roles
37
37
  3. Set up GitHub integration
38
- 4. Install bridge commands
38
+ 4. Configure Marvin modes
39
39
 
40
40
  ## Requirements
41
41
 
@@ -48,9 +48,51 @@ The interactive installer will:
48
48
  - Google/Gemini
49
49
  - GitHub Copilot
50
50
 
51
+ ## Marvin: The Orchestrator
52
+
53
+ Marvin is the unified orchestrator that coordinates all development work. Instead of separate commands, Marvin operates in different **modes** that you switch between using the **Tab key** in OpenCode.
54
+
55
+ ### Available Modes
56
+
57
+ | Mode | Purpose | Key Activities |
58
+ |------|---------|----------------|
59
+ | **Build** | Implementation | TDD cycle, code changes via subagents |
60
+ | **Discover** | Exploration | Problem understanding, user journeys, assumptions |
61
+ | **Model** | Event Modeling | Event discovery, workflow design, GWT specs |
62
+ | **Architect** | Design Decisions | ADRs, technology evaluation, tradeoffs |
63
+ | **PRD** | Specifications | User stories, acceptance criteria, requirements |
64
+ | **PM** | Project Management | Issues, branches, PRs, board management |
65
+
66
+ ### Mode Switching
67
+
68
+ Press **Tab** in OpenCode to switch modes. Marvin will:
69
+ - Suggest the appropriate mode for your request
70
+ - Carry context between modes when relevant
71
+ - Enforce mode-specific constraints (e.g., Build mode cannot skip TDD)
72
+
73
+ ```
74
+ User: I need to add user authentication
75
+
76
+ Marvin (Discover): Let me understand the requirements first...
77
+ - Who are the users?
78
+ - What authentication methods needed?
79
+
80
+ [Tab → Model mode]
81
+
82
+ Marvin (Model): Let me design the events...
83
+ - UserRegistered, UserLoggedIn, TokenRefreshed
84
+
85
+ [Tab → Build mode]
86
+
87
+ Marvin (Build): Starting TDD cycle for AC1...
88
+ - RED: Writing failing test for registration
89
+ - DOMAIN: Creating Email, Password types
90
+ - GREEN: Implementing registration service
91
+ ```
92
+
51
93
  ## TDD Cycle Enforcement
52
94
 
53
- The plugin enforces a strict 4-phase TDD cycle:
95
+ The plugin enforces a strict 4-phase TDD cycle in Build mode:
54
96
 
55
97
  ```
56
98
  RED → DOMAIN → GREEN → DOMAIN → [repeat or refactor]
@@ -60,10 +102,10 @@ RED → DOMAIN → GREEN → DOMAIN → [repeat or refactor]
60
102
 
61
103
  | Phase | Agent | Purpose | Can Edit |
62
104
  |-------|-------|---------|----------|
63
- | **RED** | `sdlc_red` | Write ONE failing test | Test files only |
64
- | **DOMAIN** (after RED) | `sdlc_domain` | Review test, create types | Type definitions |
65
- | **GREEN** | `sdlc_green` | Make test pass | Source files only |
66
- | **DOMAIN** (after GREEN) | `sdlc_domain` | Verify domain integrity | Type definitions |
105
+ | **RED** | Red Agent | Write ONE failing test | Test files only |
106
+ | **DOMAIN** (after RED) | Domain Agent | Review test, create types | Type definitions |
107
+ | **GREEN** | Green Agent | Make test pass | Source files only |
108
+ | **DOMAIN** (after GREEN) | Domain Agent | Verify domain integrity | Type definitions |
67
109
 
68
110
  ### Domain Agent Veto Power
69
111
 
@@ -73,18 +115,15 @@ The domain agent can block workflow for:
73
115
  - **Invalid states representable** - Using boolean flags instead of enum variants
74
116
  - **Parse-don't-validate violations** - Checking email in business logic instead of at boundary
75
117
 
76
- ## Commands
118
+ ### File Ownership
77
119
 
78
- After installation, these commands are available in OpenCode:
120
+ In Build mode, the orchestrator cannot directly edit files. All changes go through specialized subagents:
79
121
 
80
- | Command | Description |
81
- |---------|-------------|
82
- | `/sdlc-dev` | Start/continue work on current issue |
83
- | `/sdlc-review` | 3-stage PR review (spec, quality, domain) |
84
- | `/sdlc-debug` | Debug with Oracle (deep reasoning) |
85
- | `/sdlc-research` | Research with Librarian + MCPs |
86
- | `/sdlc-status` | View/update issue status |
87
- | `/sdlc-info` | Show toolkit configuration |
122
+ | Agent | Can Edit | Cannot Edit |
123
+ |-------|----------|-------------|
124
+ | Red Agent | `*.test.*`, `*.spec.*` | Source files |
125
+ | Green Agent | Source files | Test files |
126
+ | Domain Agent | Type definitions | Tests, implementation |
88
127
 
89
128
  ## GitHub Issues Integration
90
129
 
@@ -102,6 +141,8 @@ Work items are tracked via GitHub Issues instead of local files:
102
141
  [#42ΔAC2] Add rate limiting
103
142
  ```
104
143
 
144
+ Todos automatically sync with issue body checkboxes when marked complete.
145
+
105
146
  ## Configuration
106
147
 
107
148
  Configuration files are stored in `~/.config/opencode/`:
@@ -123,6 +164,18 @@ npx opencode-sdlc install --preset event-modeling # Standard + event modeling
123
164
 
124
165
  Create `.opencode/sdlc.json` in your project root to override global settings.
125
166
 
167
+ ## CLI Commands
168
+
169
+ ```bash
170
+ npx opencode-sdlc install # Install or reconfigure
171
+ npx opencode-sdlc upgrade # Upgrade to latest version
172
+ npx opencode-sdlc upgrade --check # Check for updates without installing
173
+ npx opencode-sdlc doctor # Diagnose issues
174
+ npx opencode-sdlc doctor --fix # Auto-fix common problems
175
+ npx opencode-sdlc info # Show current configuration
176
+ npx opencode-sdlc uninstall # Remove SDLC plugin
177
+ ```
178
+
126
179
  ## Troubleshooting
127
180
 
128
181
  ```bash
@@ -130,12 +183,32 @@ npx opencode-sdlc doctor # Diagnose issues
130
183
  npx opencode-sdlc doctor --fix # Auto-fix common problems
131
184
  ```
132
185
 
186
+ Common issues:
187
+ - **"No LLM provider configured"** - Run installer and enable at least one subscription
188
+ - **"GitHub CLI not authenticated"** - Run `gh auth login`
189
+ - **"oh-my-opencode not installed"** - Run `npx opencode-sdlc doctor --fix`
190
+
133
191
  ## Development Status
134
192
 
135
- This project is currently in active development for v0.3.0. See [AGENTS.md](AGENTS.md) for the implementation plan and GitHub issues.
193
+ This project is in active development for v1.0.0. See [AGENTS.md](AGENTS.md) for architecture details.
136
194
 
137
195
  **Project Board:** https://github.com/users/jwilger/projects/27
138
196
 
197
+ ## Migration from v0.x
198
+
199
+ If you're upgrading from v0.x (which used bridge commands like `/sdlc-dev`), see [MIGRATING-TO-V1.md](MIGRATING-TO-V1.md) for migration instructions.
200
+
201
+ ### Quick Migration Reference
202
+
203
+ | Old Command | New Approach |
204
+ |-------------|--------------|
205
+ | `/sdlc-dev` | Build mode (Tab) |
206
+ | `/sdlc-debug` | Build mode + invoke Oracle |
207
+ | `/sdlc-research` | Discover mode |
208
+ | `/sdlc-design` | Model or Architect mode |
209
+ | `/sdlc-info` | `npx opencode-sdlc info` |
210
+ | `/sdlc-status` | PM mode |
211
+
139
212
  ## Credits
140
213
 
141
214
  Built on top of:
@@ -9,13 +9,20 @@
9
9
  "githubCopilot": { "enabled": true, "plan": "business" }
10
10
  },
11
11
  "models": {
12
- "sisyphus": "github-copilot/claude-sonnet-4.5",
13
- "oracle": "github-copilot/gpt-5.1",
12
+ "marvin": "github-copilot/gpt-5.2-codex",
13
+ "oracle": "github-copilot/gpt-5.2",
14
14
  "librarian": "github-copilot/claude-haiku-4.5",
15
15
  "frontend": "github-copilot/claude-sonnet-4.5",
16
- "documentWriter": "github-copilot/gemini-2.5-pro",
17
- "multimodalLooker": "github-copilot/gemini-2.5-pro",
18
- "explore": "github-copilot/gpt-5-mini"
16
+ "documentWriter": "github-copilot/gemini-3-pro",
17
+ "multimodalLooker": "github-copilot/gemini-3-flash",
18
+ "explore": "github-copilot/gemini-3-flash",
19
+ "settings": {
20
+ "marvin": { "temperature": 0.2 },
21
+ "oracle": { "temperature": 0.1 },
22
+ "documentWriter": { "temperature": 0.4 },
23
+ "multimodalLooker": { "temperature": 0.2 },
24
+ "explore": { "temperature": 0.2 }
25
+ }
19
26
  },
20
27
  "tdd": {
21
28
  "enabled": true,
@@ -9,15 +9,15 @@
9
9
  "githubCopilot": { "enabled": false, "plan": "none" }
10
10
  },
11
11
  "models": {
12
- "sisyphus": "anthropic/claude-opus-4-5-thinking",
13
- "oracle": "openai/gpt-5.1-high",
12
+ "marvin": "anthropic/claude-opus-4-5-thinking",
13
+ "oracle": "openai/gpt-5.2",
14
14
  "librarian": "anthropic/claude-sonnet-4-5-thinking",
15
- "frontend": "google/gemini-2.5-pro",
15
+ "frontend": "google/gemini-3-pro-preview",
16
16
  "documentWriter": "anthropic/claude-opus-4-5",
17
- "multimodalLooker": "google/gemini-2.5-pro",
18
- "explore": "google/gemini-2.5-flash",
17
+ "multimodalLooker": "google/gemini-3-flash-preview",
18
+ "explore": "google/gemini-3-flash-preview",
19
19
  "settings": {
20
- "sisyphus": { "thinkingLevel": "high" },
20
+ "marvin": { "thinkingLevel": "high" },
21
21
  "oracle": { "thinkingLevel": "high" },
22
22
  "librarian": { "thinkingLevel": "medium" },
23
23
  "frontend": { "temperature": 0.5 },
@@ -68,7 +68,7 @@
68
68
  },
69
69
  "agentOverrides": {
70
70
  "oracle": { "requiresThinking": true },
71
- "sisyphus": { "requiresThinking": true }
71
+ "marvin": { "requiresThinking": true }
72
72
  },
73
73
  "fallbackBehavior": {
74
74
  "autoFallback": true,
@@ -9,15 +9,15 @@
9
9
  "githubCopilot": { "enabled": false, "plan": "none" }
10
10
  },
11
11
  "models": {
12
- "sisyphus": "anthropic/claude-sonnet-4-5-thinking",
13
- "oracle": "openai/gpt-5.1-high",
12
+ "marvin": "openai/gpt-5.2-codex",
13
+ "oracle": "openai/gpt-5.2",
14
14
  "librarian": "anthropic/claude-sonnet-4-5",
15
15
  "frontend": "anthropic/claude-sonnet-4-5",
16
- "documentWriter": "google/gemini-2.5-pro",
17
- "multimodalLooker": "google/gemini-2.5-flash",
18
- "explore": "google/gemini-2.5-flash",
16
+ "documentWriter": "google/gemini-3-pro-preview",
17
+ "multimodalLooker": "google/gemini-3-flash-preview",
18
+ "explore": "google/gemini-3-flash-preview",
19
19
  "settings": {
20
- "sisyphus": { "thinkingLevel": "medium" },
20
+ "marvin": { "thinkingLevel": "medium" },
21
21
  "oracle": { "thinkingLevel": "high" },
22
22
  "librarian": { "thinkingLevel": "low" },
23
23
  "frontend": { "temperature": 0.5 },
@@ -9,12 +9,12 @@
9
9
  "githubCopilot": { "enabled": false, "plan": "none" }
10
10
  },
11
11
  "models": {
12
- "sisyphus": "anthropic/claude-sonnet-4-5",
12
+ "marvin": "anthropic/claude-sonnet-4-5",
13
13
  "oracle": "anthropic/claude-sonnet-4-5-thinking",
14
14
  "librarian": "anthropic/claude-sonnet-4-5",
15
15
  "explore": "anthropic/claude-sonnet-4-5",
16
16
  "settings": {
17
- "sisyphus": { "temperature": 0.2 },
17
+ "marvin": { "temperature": 0.2 },
18
18
  "oracle": { "thinkingLevel": "medium" },
19
19
  "librarian": { "temperature": 0.3 },
20
20
  "explore": { "temperature": 0.2 }
@@ -9,12 +9,12 @@
9
9
  "githubCopilot": { "enabled": false, "plan": "none" }
10
10
  },
11
11
  "models": {
12
- "sisyphus": "anthropic/claude-sonnet-4-5-thinking",
12
+ "marvin": "anthropic/claude-sonnet-4-5-thinking",
13
13
  "oracle": "anthropic/claude-sonnet-4-5-thinking",
14
14
  "librarian": "anthropic/claude-sonnet-4-5",
15
15
  "explore": "anthropic/claude-sonnet-4-5",
16
16
  "settings": {
17
- "sisyphus": { "thinkingLevel": "medium" },
17
+ "marvin": { "thinkingLevel": "medium" },
18
18
  "oracle": { "thinkingLevel": "high" },
19
19
  "librarian": { "temperature": 0.3 },
20
20
  "explore": { "temperature": 0.2 }
@@ -9,15 +9,15 @@
9
9
  "githubCopilot": { "enabled": false, "plan": "none" }
10
10
  },
11
11
  "models": {
12
- "sisyphus": "anthropic/claude-sonnet-4-5-thinking",
13
- "oracle": "openai/gpt-5.1-high",
12
+ "marvin": "openai/gpt-5.2-codex",
13
+ "oracle": "openai/gpt-5.2",
14
14
  "librarian": "anthropic/claude-sonnet-4-5",
15
15
  "frontend": "anthropic/claude-sonnet-4-5",
16
- "documentWriter": "google/gemini-2.5-pro",
17
- "multimodalLooker": "google/gemini-2.5-flash",
18
- "explore": "google/gemini-2.5-flash",
16
+ "documentWriter": "google/gemini-3-pro-preview",
17
+ "multimodalLooker": "google/gemini-3-flash-preview",
18
+ "explore": "google/gemini-3-flash-preview",
19
19
  "settings": {
20
- "sisyphus": { "thinkingLevel": "medium" },
20
+ "marvin": { "thinkingLevel": "medium" },
21
21
  "oracle": { "thinkingLevel": "high" },
22
22
  "librarian": { "thinkingLevel": "low" },
23
23
  "frontend": { "temperature": 0.5 },
@@ -9,15 +9,15 @@
9
9
  "githubCopilot": { "enabled": false, "plan": "none" }
10
10
  },
11
11
  "models": {
12
- "sisyphus": "anthropic/claude-sonnet-4-5-thinking",
13
- "oracle": "openai/gpt-5.1-high",
12
+ "marvin": "anthropic/claude-sonnet-4-5-thinking",
13
+ "oracle": "openai/gpt-5.2",
14
14
  "librarian": "anthropic/claude-sonnet-4-5",
15
15
  "frontend": "anthropic/claude-sonnet-4-5",
16
- "documentWriter": "google/gemini-2.5-pro",
17
- "multimodalLooker": "google/gemini-2.5-flash",
18
- "explore": "google/gemini-2.5-flash",
16
+ "documentWriter": "google/gemini-3-pro-preview",
17
+ "multimodalLooker": "google/gemini-3-flash-preview",
18
+ "explore": "google/gemini-3-flash-preview",
19
19
  "settings": {
20
- "sisyphus": { "thinkingLevel": "high" },
20
+ "marvin": { "thinkingLevel": "high" },
21
21
  "oracle": { "thinkingLevel": "high" },
22
22
  "librarian": { "thinkingLevel": "medium" },
23
23
  "frontend": { "temperature": 0.3 },
@@ -68,7 +68,7 @@
68
68
  },
69
69
  "agentOverrides": {
70
70
  "oracle": { "requiresThinking": true },
71
- "sisyphus": { "requiresThinking": true }
71
+ "marvin": { "requiresThinking": true }
72
72
  },
73
73
  "fallbackBehavior": {
74
74
  "autoFallback": false,
@@ -68,7 +68,7 @@
68
68
  "type": "object",
69
69
  "description": "Agent model assignments",
70
70
  "properties": {
71
- "sisyphus": {
71
+ "marvin": {
72
72
  "type": "string",
73
73
  "description": "Model for main orchestrator agent"
74
74
  },
@@ -100,7 +100,7 @@
100
100
  "type": "object",
101
101
  "description": "Optional agent-specific settings for temperature and thinking level",
102
102
  "properties": {
103
- "sisyphus": { "$ref": "#/definitions/agentSettings" },
103
+ "marvin": { "$ref": "#/definitions/agentSettings" },
104
104
  "oracle": { "$ref": "#/definitions/agentSettings" },
105
105
  "librarian": { "$ref": "#/definitions/agentSettings" },
106
106
  "frontend": { "$ref": "#/definitions/agentSettings" },
@@ -120,7 +120,7 @@
120
120
  "items": { "$ref": "#/definitions/customModel" }
121
121
  }
122
122
  },
123
- "required": ["sisyphus", "oracle", "librarian"]
123
+ "required": ["marvin", "oracle", "librarian"]
124
124
  },
125
125
  "bmad": {
126
126
  "type": "object",
@@ -232,7 +232,7 @@
232
232
  "type": "object",
233
233
  "description": "Per-agent routing overrides",
234
234
  "properties": {
235
- "sisyphus": { "$ref": "#/definitions/agentRouting" },
235
+ "marvin": { "$ref": "#/definitions/agentRouting" },
236
236
  "oracle": { "$ref": "#/definitions/agentRouting" },
237
237
  "librarian": { "$ref": "#/definitions/agentRouting" },
238
238
  "frontend": { "$ref": "#/definitions/agentRouting" },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "http://json-schema.org/draft-07/schema#",
3
3
  "title": "OpenCode SDLC Configuration",
4
- "description": "Configuration schema for OpenCode SDLC Plugin - Strict TDD with domain modeling and event sourcing",
4
+ "description": "Configuration schema for OpenCode SDLC Plugin v1.0 - Strict TDD with domain modeling and event sourcing",
5
5
  "type": "object",
6
6
  "properties": {
7
7
  "$schema": {
@@ -12,6 +12,50 @@
12
12
  "type": "string",
13
13
  "description": "OpenCode SDLC Plugin version"
14
14
  },
15
+ "modes": {
16
+ "type": "object",
17
+ "description": "Mode configuration (v1.0.0+)",
18
+ "properties": {
19
+ "default": {
20
+ "type": "string",
21
+ "enum": ["discover", "model", "architect", "pm", "build"],
22
+ "default": "build",
23
+ "description": "Default mode on startup"
24
+ },
25
+ "eventModeling": {
26
+ "type": "boolean",
27
+ "default": true,
28
+ "description": "true=Model mode (Event Modeling), false=PRD mode"
29
+ },
30
+ "enabled": {
31
+ "type": "array",
32
+ "items": {
33
+ "type": "string",
34
+ "enum": ["discover", "model", "architect", "pm", "build"]
35
+ },
36
+ "default": ["discover", "model", "architect", "pm", "build"],
37
+ "description": "Array of enabled modes"
38
+ }
39
+ }
40
+ },
41
+ "memory": {
42
+ "type": "object",
43
+ "description": "Memory configuration (v1.0.0+)",
44
+ "properties": {
45
+ "backend": {
46
+ "type": "string",
47
+ "enum": ["memento", "stateless"],
48
+ "default": "stateless",
49
+ "description": "Memory backend type"
50
+ },
51
+ "checkpointTtl": {
52
+ "type": "number",
53
+ "minimum": 1,
54
+ "default": 86400,
55
+ "description": "How long to keep checkpoints in seconds"
56
+ }
57
+ }
58
+ },
15
59
  "subscriptions": {
16
60
  "type": "object",
17
61
  "description": "LLM subscription configuration",
@@ -68,7 +112,7 @@
68
112
  "type": "object",
69
113
  "description": "Agent model assignments",
70
114
  "properties": {
71
- "sisyphus": {
115
+ "marvin": {
72
116
  "type": "string",
73
117
  "description": "Model for main orchestrator agent"
74
118
  },
@@ -96,11 +140,25 @@
96
140
  "type": "string",
97
141
  "description": "Model for fast codebase exploration agent"
98
142
  },
143
+ "subagents": {
144
+ "type": "object",
145
+ "description": "Per-subagent model overrides (v1.0.0+)",
146
+ "properties": {
147
+ "red": { "$ref": "#/definitions/subagentModel" },
148
+ "green": { "$ref": "#/definitions/subagentModel" },
149
+ "domain": { "$ref": "#/definitions/subagentModel" },
150
+ "refactor": { "$ref": "#/definitions/subagentModel" },
151
+ "architect": { "$ref": "#/definitions/subagentModel" },
152
+ "pm": { "$ref": "#/definitions/subagentModel" },
153
+ "analyst": { "$ref": "#/definitions/subagentModel" },
154
+ "reviewer": { "$ref": "#/definitions/subagentModel" }
155
+ }
156
+ },
99
157
  "settings": {
100
158
  "type": "object",
101
159
  "description": "Optional agent-specific settings for temperature and thinking level",
102
160
  "properties": {
103
- "sisyphus": { "$ref": "#/definitions/agentSettings" },
161
+ "marvin": { "$ref": "#/definitions/agentSettings" },
104
162
  "oracle": { "$ref": "#/definitions/agentSettings" },
105
163
  "librarian": { "$ref": "#/definitions/agentSettings" },
106
164
  "frontend": { "$ref": "#/definitions/agentSettings" },
@@ -120,7 +178,7 @@
120
178
  "items": { "$ref": "#/definitions/customModel" }
121
179
  }
122
180
  },
123
- "required": ["sisyphus", "oracle", "librarian"]
181
+ "required": ["marvin", "oracle", "librarian"]
124
182
  },
125
183
  "github": {
126
184
  "type": "object",
@@ -188,6 +246,23 @@
188
246
  "description": "Minimum mutation score required (0-100)"
189
247
  }
190
248
  }
249
+ },
250
+ "domainVetoEnabled": {
251
+ "type": "boolean",
252
+ "default": true,
253
+ "description": "Enable domain agent veto power over type changes (v1.0.0+)"
254
+ },
255
+ "debateRounds": {
256
+ "type": "number",
257
+ "minimum": 1,
258
+ "maximum": 5,
259
+ "default": 2,
260
+ "description": "Max debate rounds before escalation to user (v1.0.0+)"
261
+ },
262
+ "requireVerification": {
263
+ "type": "boolean",
264
+ "default": true,
265
+ "description": "Require test output evidence before phase transitions (v1.0.0+)"
191
266
  }
192
267
  }
193
268
  },
@@ -358,7 +433,7 @@
358
433
  "type": "object",
359
434
  "description": "Per-agent routing overrides",
360
435
  "properties": {
361
- "sisyphus": { "$ref": "#/definitions/agentRouting" },
436
+ "marvin": { "$ref": "#/definitions/agentRouting" },
362
437
  "oracle": { "$ref": "#/definitions/agentRouting" },
363
438
  "librarian": { "$ref": "#/definitions/agentRouting" },
364
439
  "frontend": { "$ref": "#/definitions/agentRouting" },
@@ -388,6 +463,11 @@
388
463
  }
389
464
  },
390
465
  "required": ["autoFallback", "retryPeriodMs", "notifyOnRateLimit"]
466
+ },
467
+ "classifierModel": {
468
+ "type": "string",
469
+ "default": "anthropic/claude-haiku",
470
+ "description": "Model for sdlc_classify_request tool (v1.0.0+)"
391
471
  }
392
472
  },
393
473
  "required": ["providerPriority", "modelFamilyPriority", "agentOverrides", "fallbackBehavior"]
@@ -459,6 +539,22 @@
459
539
  "description": "Preferred provider for this agent"
460
540
  }
461
541
  }
542
+ },
543
+ "subagentModel": {
544
+ "oneOf": [
545
+ {
546
+ "type": "string",
547
+ "const": "inherit",
548
+ "description": "Inherit model from marvin"
549
+ },
550
+ {
551
+ "type": "string",
552
+ "pattern": "^[a-z-]+/[a-z0-9-]+",
553
+ "description": "Full model identifier (e.g., 'anthropic/claude-sonnet-4-20250514')"
554
+ }
555
+ ],
556
+ "default": "inherit",
557
+ "description": "Subagent model value - either a model string or 'inherit' to use marvin model"
462
558
  }
463
559
  }
464
560
  }