Commit 94fd7e4
SpecBridge v0.6.0: capability-driven runner platform, Codex CLI and Ollama runners (#6)
Add the capability-driven runner platform with a frozen adapter contract:
versioned capability/operation/event/result/error/usage schemas (17
capability keys, 6 operations, 24 error codes, snapshot-tested), runner
categories and support levels, and a profile-based registry with
deterministic capability-checked selection that refuses incompatible
operations before any process spawn, HTTP request, run record, or file
change.
Configuration gains a v2 multi-runner schema (runnerProfiles,
operationDefaults, runnerPolicy, fallbacks) with URL/command/credential
safety rules. v1 files stay fully readable through a version-transparent
reader; migration is explicit only ("config doctor",
"config migrate --dry-run|--apply") — atomic, backed up, validated, Claude
behavior preserved, new providers left disabled, trusted verification
commands untouched.
New production adapters:
- codex-cli: read-only probes (never a model request, never credential
files), JSONL event normalization with reasoning redaction, JSON Schema
structured output, read-only sandbox for authoring, workspace-write for
task execution (unrestricted modes rejected at three layers),
explicit-session resume, full failure classification.
- ollama: authoring-only model API (loopback default, HTTPS-by-default for
remote, redirects refused), model listing without inference,
schema-validated structured output with ONE bounded correction retry,
input/output limits, thinking-content redaction; task execution refused
by capability.
The existing Claude Code runner implements the shared contract unchanged
(same process safety, permission modes, resume, prompts, configuration
semantics). Authoring supports explicitly configured bounded fallback
chains with append-only per-invocation attempt records
(.specbridge/runs/<id>/attempts/); task execution never retries or
switches providers. A reusable conformance framework
(detection/structured-output/process-control/authoring/task/resume, chosen
by declared capabilities) backs every production claim; mock, claude-code
(fake), and codex-cli (fake) pass all applicable groups, ollama passes the
authoring groups only.
CLI: runner list/matrix/show/doctor/test/conformance/models,
config doctor/migrate, --show-runner-plan, runner plans in dry runs.
Provider claims remain informational; Git snapshots and trusted
verification stay the only completion authority.
Tests: 772 total (60 files) including a process-level fake Codex CLI and a
real loopback fake Ollama HTTP server; no real providers, network, models,
or credentials in CI. All v0.1-v0.5 suites pass unchanged; lint,
typecheck, build, plugin build/validate, and isolated plugin verification
pass; versions consistently 0.6.0. Gemini CLI, OpenAI-compatible,
Antigravity, MCP runner tools, and the runner Skill are deferred to v0.6.1
(documented, not stubbed).
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>1 parent 2ea69a4 commit 94fd7e4
102 files changed
Lines changed: 20079 additions & 1881 deletions
File tree
- .claude-plugin
- docs
- integrations
- claude-code-plugin
- specbridge
- .claude-plugin
- dist
- github-action
- dist
- src
- packages
- cli
- src
- commands
- compat-kiro
- core
- src
- drift
- evidence
- execution
- src
- mcp-server
- src
- reporting
- runners
- src
- claude-code
- codex-cli
- conformance
- contracts
- ollama
- registry
- workflow
- scripts
- tests
- cli
- execution
- fixtures/fake-codex
- mcp
- plugin
- runners
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
12 | | - | |
| 12 | + | |
13 | 13 | | |
14 | 14 | | |
15 | 15 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
3 | 138 | | |
4 | 139 | | |
5 | 140 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
17 | | - | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
18 | 57 | | |
19 | 58 | | |
20 | 59 | | |
| |||
214 | 253 | | |
215 | 254 | | |
216 | 255 | | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
217 | 259 | | |
218 | 260 | | |
219 | 261 | | |
| |||
317 | 359 | | |
318 | 360 | | |
319 | 361 | | |
320 | | - | |
| 362 | + | |
321 | 363 | | |
322 | | - | |
323 | | - | |
324 | | - | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
325 | 368 | | |
326 | 369 | | |
327 | 370 | | |
| 371 | + | |
328 | 372 | | |
329 | | - | |
| 373 | + | |
330 | 374 | | |
331 | 375 | | |
332 | 376 | | |
333 | | - | |
| 377 | + | |
334 | 378 | | |
335 | 379 | | |
336 | 380 | | |
337 | 381 | | |
338 | | - | |
| 382 | + | |
339 | 383 | | |
340 | 384 | | |
341 | 385 | | |
| |||
451 | 495 | | |
452 | 496 | | |
453 | 497 | | |
454 | | - | |
455 | | - | |
456 | | - | |
457 | | - | |
458 | | - | |
459 | | - | |
460 | | - | |
461 | | - | |
462 | | - | |
463 | | - | |
464 | | - | |
465 | | - | |
466 | | - | |
| 498 | + | |
| 499 | + | |
| 500 | + | |
| 501 | + | |
| 502 | + | |
| 503 | + | |
| 504 | + | |
| 505 | + | |
| 506 | + | |
| 507 | + | |
| 508 | + | |
| 509 | + | |
| 510 | + | |
| 511 | + | |
| 512 | + | |
| 513 | + | |
| 514 | + | |
| 515 | + | |
| 516 | + | |
| 517 | + | |
467 | 518 | | |
468 | 519 | | |
469 | 520 | | |
| |||
479 | 530 | | |
480 | 531 | | |
481 | 532 | | |
482 | | - | |
| 533 | + | |
483 | 534 | | |
484 | 535 | | |
485 | 536 | | |
| |||
500 | 551 | | |
501 | 552 | | |
502 | 553 | | |
503 | | - | |
504 | | - | |
| 554 | + | |
| 555 | + | |
| 556 | + | |
| 557 | + | |
| 558 | + | |
| 559 | + | |
| 560 | + | |
| 561 | + | |
| 562 | + | |
| 563 | + | |
| 564 | + | |
| 565 | + | |
505 | 566 | | |
506 | 567 | | |
507 | 568 | | |
| |||
535 | 596 | | |
536 | 597 | | |
537 | 598 | | |
538 | | - | |
539 | | - | |
540 | | - | |
541 | | - | |
| 599 | + | |
| 600 | + | |
| 601 | + | |
| 602 | + | |
| 603 | + | |
| 604 | + | |
| 605 | + | |
| 606 | + | |
| 607 | + | |
542 | 608 | | |
543 | 609 | | |
544 | 610 | | |
| |||
549 | 615 | | |
550 | 616 | | |
551 | 617 | | |
| 618 | + | |
| 619 | + | |
| 620 | + | |
| 621 | + | |
| 622 | + | |
| 623 | + | |
| 624 | + | |
| 625 | + | |
| 626 | + | |
| 627 | + | |
| 628 | + | |
| 629 | + | |
| 630 | + | |
552 | 631 | | |
553 | 632 | | |
554 | 633 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
7 | | - | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
8 | 13 | | |
9 | 14 | | |
10 | 15 | | |
| |||
25 | 30 | | |
26 | 31 | | |
27 | 32 | | |
28 | | - | |
29 | | - | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
30 | 37 | | |
31 | 38 | | |
32 | 39 | | |
| |||
0 commit comments