ai-consultants 2.25.2 → 3.0.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.
@@ -1,4 +1,4 @@
1
- # Cost Rates - AI Consultants v2.25.2
1
+ # Cost Rates - AI Consultants v3.0.0
2
2
 
3
3
  This page documents the per-token rates used by the cost tracking system.
4
4
 
package/docs/RECIPES.md CHANGED
@@ -17,16 +17,13 @@ must be enabled.
17
17
 
18
18
  ## 1. Everyday balanced panel
19
19
 
20
- Use four complementary CLI consultants, synthesize their answers, and keep the
21
- dynamic planner available without forcing debate on every question.
20
+ Use four complementary CLI consultants and synthesize their answers with the
21
+ default coverage strategy.
22
22
 
23
23
  ```dotenv
24
24
  DEFAULT_PRESET=balanced
25
- DEFAULT_STRATEGY=majority
25
+ DEFAULT_STRATEGY=coverage
26
26
  ENABLE_SYNTHESIS=true
27
- ENABLE_DEBATE=true
28
- ORCHESTRATION_MODE=auto
29
- ENABLE_DEBATE_OPTIMIZATION=true
30
27
  ```
31
28
 
32
29
  ```bash
@@ -35,7 +32,7 @@ ai-consultants "Redis or Memcached for a write-heavy session store?"
35
32
 
36
33
  ## 2. Fast and inexpensive check
37
34
 
38
- The `fast` preset selects two consultants, economy models, and no debate.
35
+ The `fast` preset selects two consultants and economy models.
39
36
 
40
37
  ```bash
41
38
  ai-consultants --preset fast "Is this SQL index definition valid?"
@@ -51,57 +48,10 @@ MAX_SESSION_COST=0.10
51
48
  BUDGET_ACTION=stop
52
49
  ```
53
50
 
54
- ## 3. Debate until the panel converges
55
-
56
- Use the dynamic convergence loop for architectural questions. It stops when
57
- consensus reaches the target, progress stalls, or the round cap is reached.
58
-
59
- ```dotenv
60
- ENABLE_DEBATE=true
61
- ORCHESTRATION_MODE=converge
62
- CONVERGENCE_MAX_ROUNDS=4
63
- CONVERGENCE_TARGET_CONSENSUS=75
64
- CONVERGENCE_STALL_EPSILON=5
65
- ENABLE_DEBATE_OPTIMIZATION=true
66
- DEBATE_USE_SUMMARIES=true
67
- ```
68
-
69
- ```bash
70
- ai-consultants --strategy risk_averse \
71
- "Should this service use an event log or mutable relational state?"
72
- ```
73
-
74
- ## 4. Exactly two debate rounds
75
-
76
- Use fixed mode when a benchmark or repeatable workflow requires a predictable
77
- number of calls.
78
-
79
- ```dotenv
80
- ENABLE_DEBATE=true
81
- ORCHESTRATION_MODE=fixed
82
- DEBATE_ROUNDS=2
83
- ENABLE_DEBATE_OPTIMIZATION=false
84
- ```
85
-
86
- ```bash
87
- ai-consultants "Review this migration plan" docs/migration.md@PRIMARY
88
- ```
89
-
90
- `DEBATE_ROUNDS=1` means initial answers only. Values `2` and `3` add one and two
91
- cross-critique rounds respectively.
92
-
93
- ## 5. Security review with an adversarial gate
94
-
95
- The adversarial shape forces critique and enables peer review as a refutation
96
- gate before synthesis.
51
+ ## 3. Security review
97
52
 
98
53
  ```dotenv
99
54
  DEFAULT_STRATEGY=security_first
100
- ENABLE_DEBATE=true
101
- ORCHESTRATION_MODE=adversarial
102
- ENABLE_ADVERSARIAL_VERIFY=true
103
- ENABLE_PEER_REVIEW=true
104
- PEER_REVIEW_MIN_RESPONSES=3
105
55
  ```
106
56
 
107
57
  ```bash
@@ -112,34 +62,17 @@ ai-consultants --preset security \
112
62
 
113
63
  Never include credentials, tokens, or private keys in consultation context.
114
64
 
115
- ## 6. Compare two approaches and choose one
116
-
117
- Force tournament mode when the answer must end with one winner.
118
-
119
- ```bash
120
- ORCHESTRATION_MODE=tournament \
121
- ENABLE_DEBATE=true \
122
- ai-consultants --strategy majority \
123
- "For this API, choose REST or GraphQL and justify one winner"
124
- ```
125
-
126
- Use `--strategy compare_only` instead when you want the trade-offs without a
127
- recommendation.
128
-
129
- ## 7. Exhaustive audit
65
+ ## 4. Compare two approaches without a recommendation
130
66
 
131
- Continue until a round surfaces no new approach or finding.
67
+ Use `--strategy compare_only` when you want the trade-offs laid out without a
68
+ single winner.
132
69
 
133
70
  ```bash
134
- ORCHESTRATION_MODE=exhaustive \
135
- ENABLE_DEBATE=true \
136
- CONVERGENCE_MAX_ROUNDS=4 \
137
- ai-consultants --preset high-stakes \
138
- "Find all correctness and failure-mode risks in this worker" \
139
- src/worker.ts@PRIMARY src/queue.ts@CONTEXT
71
+ ai-consultants --strategy compare_only \
72
+ "For this API, compare REST and GraphQL"
140
73
  ```
141
74
 
142
- ## 8. Reliable panel with health gate and quorum
75
+ ## 5. Reliable panel with health gate and quorum
143
76
 
144
77
  Ping selected consultants before the full run and stop when too few respond.
145
78
  The health gate adds one small call per selected consultant.
@@ -159,7 +92,7 @@ ai-consultants "Make a release recommendation from the attached evidence" \
159
92
  release-notes.md@PRIMARY test-results.md@CONTEXT
160
93
  ```
161
94
 
162
- ## 9. Hard budget ceiling
95
+ ## 6. Hard budget ceiling
163
96
 
164
97
  Track estimated spend and stop with partial results rather than crossing the
165
98
  session limit.
@@ -179,7 +112,7 @@ ai-consultants --preset cost-capped --strategy cost_capped \
179
112
  "Propose the smallest safe fix for this regression"
180
113
  ```
181
114
 
182
- ## 10. CLI-only operation
115
+ ## 7. CLI-only operation
183
116
 
184
117
  Keep every switchable consultant on its installed CLI. CLI authentication is
185
118
  handled by each provider's own login flow.
@@ -205,7 +138,7 @@ ai-consultants doctor --live
205
138
  `KIMI_MODEL` is passed to the Kimi CLI with `--model`, so this recipe uses K3
206
139
  even when `~/.kimi/config.toml` still names an older default model.
207
140
 
208
- ## 11. Hybrid CLI and API panel
141
+ ## 8. Hybrid CLI and API panel
209
142
 
210
143
  Enable API transport only where needed. Gemini and MiniMax automatically choose
211
144
  API mode when their API key is present unless `*_USE_API` is explicitly set.
@@ -227,22 +160,7 @@ ENABLE_DEEPSEEK=false
227
160
 
228
161
  Keep `~/.config/ai-consultants/.env` at mode `600` because it may contain keys.
229
162
 
230
- ## 12. Exact semantic consensus
231
-
232
- Ask the panel to choose from shared stance options so differently worded answers
233
- can still count as agreement. This adds roughly one LLM call per run.
234
-
235
- ```dotenv
236
- ENABLE_STANCE_CONSENSUS=true
237
- STANCE_MAX_OPTIONS=5
238
- STANCE_TIMEOUT=60
239
- ```
240
-
241
- ```bash
242
- ai-consultants "Should package lockfiles always be committed for applications?"
243
- ```
244
-
245
- ## 13. Large or awkward prompts
163
+ ## 9. Large or awkward prompts
246
164
 
247
165
  Use `--query-file` to avoid shell quoting and argument-size problems. Mark the
248
166
  main files with `@PRIMARY` and supporting files with `@CONTEXT`.
package/docs/SETUP.md CHANGED
@@ -62,12 +62,11 @@ That's it! You're ready to go.
62
62
 
63
63
  ## Claude Code Slash Commands
64
64
 
65
- AI Consultants provides 3 slash commands:
65
+ AI Consultants provides 2 slash commands:
66
66
 
67
67
  | Command | Description |
68
68
  |---------|-------------|
69
69
  | `/ai-consultants:consult` | Main consultation - ask AI consultants a coding question |
70
- | `/ai-consultants:debate` | Run consultation with multi-round debate |
71
70
  | `/ai-consultants:help` | Show all commands and usage |
72
71
 
73
72
  Configuration can be managed with `ai-consultants configure`, including presets,
@@ -460,8 +459,8 @@ Presets let you quickly configure how many consultants to use.
460
459
  | `minimal` | 2 (Gemini + Codex) | Quick, cheap |
461
460
  | `balanced` | 4 (+ Mistral + Cursor) | Standard |
462
461
  | `thorough` | 4 | Comprehensive |
463
- | `high-stakes` | Expanded panel + debate | Critical decisions |
464
- | `security` | Security-focused + debate | Security reviews |
462
+ | `high-stakes` | Expanded panel | Critical decisions |
463
+ | `security` | Security-focused | Security reviews |
465
464
  | `cost-capped` | Budget-friendly | Low cost |
466
465
 
467
466
  ### Set Default Preset
@@ -491,7 +490,8 @@ Strategies control how consultant responses are combined.
491
490
 
492
491
  | Strategy | Description |
493
492
  |----------|-------------|
494
- | `majority` | Simple voting, most common answer wins (default) |
493
+ | `coverage` | Union of every distinct point/risk across consultants, deduplicated (default) |
494
+ | `majority` | Simple voting, most common answer wins |
495
495
  | `risk_averse` | Weight conservative responses higher |
496
496
  | `security_first` | Prioritize security-focused insights |
497
497
  | `cost_capped` | Prefer simpler, cheaper solutions |
@@ -522,33 +522,9 @@ DEFAULT_STRATEGY=risk_averse
522
522
  These examples can be prefixed to one command or saved in
523
523
  `~/.config/ai-consultants/.env`.
524
524
 
525
- ### Dynamic debate
526
-
527
- ```bash
528
- ENABLE_DEBATE=true \
529
- ORCHESTRATION_MODE=converge \
530
- CONVERGENCE_MAX_ROUNDS=4 \
531
- CONVERGENCE_TARGET_CONSENSUS=75 \
532
- ai-consultants --strategy risk_averse \
533
- "Should this service use an event log or mutable relational state?"
534
- ```
535
-
536
- ### Fixed two-round debate
537
-
538
- ```bash
539
- ENABLE_DEBATE=true \
540
- ORCHESTRATION_MODE=fixed \
541
- DEBATE_ROUNDS=2 \
542
- ENABLE_DEBATE_OPTIMIZATION=false \
543
- ai-consultants "Review this migration plan" docs/migration.md@PRIMARY
544
- ```
545
-
546
525
  ### Security gate with a required quorum
547
526
 
548
527
  ```bash
549
- ENABLE_DEBATE=true \
550
- ORCHESTRATION_MODE=adversarial \
551
- ENABLE_PEER_REVIEW=true \
552
528
  ENABLE_HEALTH_GATE=true \
553
529
  QUORUM_MIN=3 \
554
530
  QUORUM_ACTION=stop \
@@ -556,9 +532,8 @@ ai-consultants --preset security --strategy security_first \
556
532
  "Find authentication bypasses" src/auth.ts@PRIMARY
557
533
  ```
558
534
 
559
- More scenarios—including tournament, exhaustive audit, CLI-only, hybrid API,
560
- hard-budget, semantic-consensus, and large-context runs—are in
561
- [`docs/RECIPES.md`](RECIPES.md).
535
+ More scenarios—including CLI-only, hybrid API, hard-budget, and
536
+ large-context runs—are in [`docs/RECIPES.md`](RECIPES.md).
562
537
 
563
538
  ---
564
539
 
@@ -573,7 +548,7 @@ ai-consultants configure
573
548
  # Set any supported parameter non-interactively
574
549
  ai-consultants configure \
575
550
  --set DEFAULT_PRESET=balanced \
576
- --set ENABLE_DEBATE=true
551
+ --set ENABLE_SYNTHESIS=true
577
552
 
578
553
  # Guided or exhaustive review
579
554
  ai-consultants configure --interactive
@@ -643,13 +618,10 @@ MINIMAX_USE_API=false # Default: mmx CLI mode
643
618
 
644
619
  # Defaults (v2.8)
645
620
  DEFAULT_PRESET=balanced
646
- DEFAULT_STRATEGY=majority
621
+ DEFAULT_STRATEGY=coverage
647
622
 
648
623
  # Features
649
- ENABLE_DEBATE=false
650
624
  ENABLE_SYNTHESIS=true
651
- ENABLE_PANIC_MODE=auto
652
- ORCHESTRATION_MODE=auto
653
625
  ENABLE_HEALTH_GATE=false
654
626
  QUORUM_MIN=2
655
627
  QUORUM_ACTION=warn
@@ -49,18 +49,10 @@ customization possible without editing bash.
49
49
  "version": "1.1",
50
50
  "default_score": 5,
51
51
  "general_score": 8,
52
- "capability_default": 5,
53
52
  "known_consultants": ["Gemini", "Codex", "..."],
54
53
  "categories": {
55
54
  "CODE_REVIEW": { "Gemini": 7, "Codex": 10, "..." },
56
55
  "BUG_DEBUG": { "..." }
57
- },
58
- "capabilities": {
59
- "Gemini": { "intelligence": 8, "taste": 8, "cost": 6 },
60
- "Codex": { "intelligence": 8, "taste": 5, "cost": 4 }
61
- },
62
- "category_axis": {
63
- "API_DESIGN": "taste", "CODE_REVIEW": "taste", "ALGORITHM": "intelligence"
64
56
  }
65
57
  }
66
58
  ```
@@ -127,112 +119,6 @@ COMPLEXITY_THRESHOLD_MEDIUM=6 # Score 4-6 = use standard models
127
119
 
128
120
  See [COST_RATES.md](COST_RATES.md) for model pricing by tier.
129
121
 
130
- ## Capability-Aware Routing & Voting (v2.20+)
131
-
132
- Beyond category *fit* (the affinity matrix), v1.1 of `affinity.json` adds a
133
- per-consultant **capability** score on three axes (1-10): `intelligence`,
134
- `taste`, and `cost`. A `category_axis` map names the quality axis each category
135
- stresses — **taste** for design-shaped work (API_DESIGN, ARCHITECTURE,
136
- CODE_REVIEW, GENERAL), **intelligence** otherwise.
137
-
138
- Two opt-in features consume this:
139
-
140
- - **`ENABLE_CAPABILITY_WEIGHTING`** — a consultant's vote weight becomes
141
- `confidence × (S + capability) / S` (`S = CAPABILITY_WEIGHT_STRENGTH`, default
142
- 10), so on a taste-shaped question a high-taste model's opinion counts for more.
143
- - **`ENABLE_CAPABILITY_ROUTING`** — panel *eligibility* still uses raw affinity,
144
- but the *sort rank* becomes `affinity + (capability − CAPABILITY_DEFAULT)`, so
145
- under a size limit the quality axis reorders which eligible consultants make
146
- the cut.
147
-
148
- `cost` is an efficiency axis for budget-aware composition only — **never** a
149
- vote weight (tie-break order: intelligence > taste > cost). Scores are
150
- subjective, point-in-time seeds — re-derive them for your own panel. Helpers:
151
- `get_capability <consultant> <axis>` and `get_category_axis <category>` in
152
- `lib/routing.sh`.
153
-
154
- ## Roster Audit — Uncorrelated Value (v2.20+)
155
-
156
- Adding a consultant only helps if it says something the others don't. The
157
- `scripts/roster_audit.sh` tool measures this across past consultations: a
158
- consultant's approach is *distinct* in a round when its keyword set has low
159
- Jaccard overlap (`< --threshold`, default 20%) with **every** other consultant
160
- that round. A consultant that is rarely distinct is correlated with the panel —
161
- a candidate to drop or down-weight; one that is often distinct earns its seat on
162
- diversity.
163
-
164
- ```bash
165
- # audit specific consultation output dirs
166
- ./scripts/roster_audit.sh /path/to/consultation_dir ...
167
-
168
- # or the N most recent under the consultations base
169
- ./scripts/roster_audit.sh --recent 30
170
-
171
- # machine-readable
172
- ./scripts/roster_audit.sh --json --recent 30
173
- ```
174
-
175
- Read-only; reuses the `voting.sh` keyword/Jaccard machinery. Consultations with
176
- fewer than two responders are skipped (correlation is undefined). This is the
177
- model-routing "before a new model earns a row" bar (contribute >=1 thing the
178
- incumbents miss) applied to the consultation panel instead of a review lane.
179
-
180
- ## Measured Calibration — Replacing the Heuristic Seeds (v2.20+)
181
-
182
- The `capabilities` scores in `affinity.json` ship as subjective seeds. To
183
- **measure** them instead of guessing, three tools derive each axis from data the
184
- tool already produces — sliced by the same `category_axis` that consumes them:
185
-
186
- | Tool | Derives | From |
187
- |---|---|---|
188
- | `scripts/roster_calibrate.sh` | intelligence, taste, cost (**Tier A**) | blind peer-review scores (sliced by axis) + observed `tokens_used` × catalog rate |
189
- | `scripts/taste_elo.sh` | taste (**Tier B**) | pairwise LLM-as-judge Elo over taste-axis answers (removes peer self-bias) |
190
- | `references/calibration_benchmark.json` | the question set | 50 questions, 5 per category, balanced across the two axes |
191
- | `scripts/run_calibration.sh` | the data | runs the benchmark through the panel with `ENABLE_PEER_REVIEW=true`, then calibrates |
192
-
193
- ### Workflow
194
-
195
- ```bash
196
- # 1. Collect data: run the benchmark through the full panel (real calls — costs money).
197
- ./scripts/run_calibration.sh --limit 10 --dry-run # preview
198
- ./scripts/run_calibration.sh # full 50-question run
199
-
200
- # 2. Tier A: measured intelligence/taste/cost -> capabilities block
201
- ./scripts/roster_calibrate.sh --recent 50 # print measured block
202
- ./scripts/roster_calibrate.sh --recent 50 --write # merge into affinity.json (keeps unmeasured cells)
203
-
204
- # 3. Tier B (optional): refine taste via pairwise-judge Elo
205
- ./scripts/taste_elo.sh --recent 50 --write
206
- ```
207
-
208
- Both `roster_calibrate.sh` and `taste_elo.sh` also accept explicit consultation
209
- dirs and `--json`, and back up `affinity.json` to `.bak` before `--write`.
210
-
211
- ### How each axis is measured
212
-
213
- - **cost** — mean *observed* `$/response` (`tokens_used` × catalog rate, 60/40
214
- input/output split), rank-normalized so the cheapest = 10. This is cost per
215
- *task* (verbosity + completion), not per-token sticker price — a terse pricey
216
- model can still rank cheap.
217
- - **intelligence / taste** — mean **blind peer-review** `quality_score` (already
218
- 1-10), sliced by `category_axis`: intelligence = performance on
219
- intelligence-axis categories, taste = on taste-axis categories.
220
- - **taste (Tier B)** — taste has no ground truth, so `taste_elo.sh` measures it
221
- *relative to a chosen judge*. Each pair of answers on a taste-axis question is
222
- shown to the judge, which picks the better one on design taste only; wins feed
223
- an Elo ranking. The judge is pluggable:
224
- - `JUDGE_CLI` — CLI for the built-in judge (default `claude`).
225
- - `TASTE_JUDGE_CMD` — external judge `cmd <ctx> <A.json> <B.json>` printing
226
- `A`/`B` (used by tests and custom judges).
227
-
228
- ### Companion: which consultants earn a seat
229
-
230
- `roster_audit.sh` (above) answers *who to keep*; calibration answers *how much
231
- each is worth per axis*. Together they make the roster data-driven: audit to
232
- prune redundant consultants, calibrate to score the survivors, then enable
233
- `ENABLE_CAPABILITY_WEIGHTING` / `ENABLE_CAPABILITY_ROUTING` to act on the
234
- measured scores.
235
-
236
122
  ## Timeout per Category
237
123
 
238
124
  Timeouts optimized based on category complexity:
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "2.25.2",
2
+ "version": "3.0.0",
3
3
  "updated": "2026-07-16",
4
4
  "models": {
5
5
  "_comment_units": "All rates are USD per 1,000 tokens (per-1K). lib/costs.sh computes cost as (token_count / 1000) * rate, so every value here MUST be a per-1K rate = (provider $/1M price) / 1000. Do NOT paste $/MTok figures directly.",
@@ -0,0 +1,71 @@
1
+ # Release v3.0.0
2
+
3
+ **Date:** 2026-07-23
4
+ **Type:** Major — removes the deliberation/consensus machinery; default output is now the coverage union
5
+ **Previous:** v2.25.2
6
+
7
+ ## Highlights
8
+
9
+ - **The panel premise was tested and the answer is task-dependent.** A held-out coverage experiment found a single strong model saturates *convergent* defect-finding (it caught 19/19 hard bugs, including real CVEs and a concurrency bug found by formal verification), while a diverse cross-vendor panel materially out-covers it on *breadth* questions — "what could go wrong?", enumerate the risks — winning as a **union of distinct answers**, not through deliberation.
10
+ - **Default output is now the `coverage` union** — the deduplicated set of every distinct point, recommendation, risk, and edge case across the panel, preserving what only one model raised. No more voted single recommendation by default.
11
+ - **The deliberation/consensus machinery is gone**: multi-round debate, dynamic orchestration, voting/consensus scoring, capability weighting, panic mode, peer review, stance consensus, and the capability-calibration tooling.
12
+ - **What made the panel good is kept**: diverse parallel fan-out to all 11 consultants, category-affinity routing, doctor, cost tracking, quorum/health gate, and every adapter.
13
+ - **Simpler and smaller**: 19 files removed (~-4,600 lines), `npm test` 22 → 15 suites, all green.
14
+
15
+ ## What's New
16
+
17
+ ### Coverage synthesis (the new default)
18
+
19
+ The pipeline is now **classify → route → parallel fan-out → coverage synthesis**. Every selected consultant answers once, in parallel; the synthesizer returns the *union* of their distinct points rather than picking a winner or averaging a vote.
20
+
21
+ | Strategy | Behavior |
22
+ |---|---|
23
+ | `coverage` (default) | Union of every distinct point/recommendation/risk across the panel; credits what only one model raised |
24
+ | `compare_only` | Each consultant side-by-side, no synthesized union |
25
+ | `majority` | A single blended recommendation, weighting all equally |
26
+ | `risk_averse` / `security_first` / `cost_capped` | Emphasis variants |
27
+
28
+ Override per run with `--strategy`, or persist with `DEFAULT_STRATEGY`.
29
+
30
+ ### Why
31
+
32
+ Two independent reviews had judged the panel's premise weak: voting and consensus measure *agreement*, not correctness, and the repo had no held-out comparison against one strong model. The A/W/C coverage experiment (maintainer instrumentation, not shipped) measured, on deep 60-point rubrics across three domains:
33
+
34
+ | task | single model | self-consistency (same model ×k) | diverse panel (union) |
35
+ |---|---|---|---|
36
+ | convergent defect-finding | 19/19 (saturates) | — | no headroom to add |
37
+ | breadth / enumeration | 51% | 70% | **93%** |
38
+
39
+ The panel wins on breadth, and it wins as the raw union with deliberation **off** — so the diverse fan-out is the value and the averaging machinery is not.
40
+
41
+ ## Breaking Changes
42
+
43
+ - **Default output shape changed** from a voted recommendation to the coverage union.
44
+ - **Removed features and their config** (setting any of these via `configure --set` now fails closed): `ENABLE_DEBATE`/`DEBATE_ROUNDS`, `ORCHESTRATION_MODE`/`CONVERGENCE_*`, `ENABLE_DEBATE_OPTIMIZATION`, `ENABLE_PANIC_MODE`/`PANIC_*`, `ENABLE_ADVERSARIAL_VERIFY`, `ENABLE_PEER_REVIEW`/`PEER_REVIEW_MIN_RESPONSES`, `ENABLE_CAPABILITY_WEIGHTING`/`ENABLE_CAPABILITY_ROUTING`/`CAPABILITY_*`, `ENABLE_STANCE_CONSENSUS`/`STANCE_*`.
45
+ - **Removed outputs**: `voting.json`, `round_N/`, `panic_diagnosis.json`.
46
+ - **Removed slash commands**: `/ai-consultants:debate`, `/ai-consultants:roster-audit` (installers prune them on update).
47
+ - **Removed tooling**: `roster_audit.sh`, `roster_calibrate.sh`, `run_calibration.sh`, `taste_elo.sh`, `doctor --roster-audit`.
48
+ - The affinity matrix keeps its category→consultant routing scores; the `capabilities`/`category_axis` axes are removed.
49
+
50
+ ## Upgrade Guide
51
+
52
+ ```bash
53
+ # If installed via git clone
54
+ cd ~/.claude/skills/ai-consultants && git pull
55
+
56
+ # If installed via curl | bash
57
+ curl -fsSL https://raw.githubusercontent.com/matteoscurati/ai-consultants/main/scripts/install.sh | bash
58
+
59
+ # If installed via npx (no install step)
60
+ npx ai-consultants@latest "your question"
61
+ ```
62
+
63
+ No configuration change is required. If your `.env` sets a removed variable, delete it — the tool now fans out and returns the coverage union by default. To get a single recommendation instead, use `--strategy majority`; for a raw side-by-side, `--strategy compare_only`.
64
+
65
+ ## Note on the evidence
66
+
67
+ The breadth result is **directional** (n=3, hand-validated) alongside the n=19 defect-finding result. The cut is a considered bet on that evidence; a statistically binding breadth claim would need n≥15–20 deep-rubric items (the experiment harness exists on the `experiment/coverage-metric` branch).
68
+
69
+ ## Contributors
70
+
71
+ - matteoscurati
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ai-consultants",
3
- "version": "2.25.2",
3
+ "version": "3.0.0",
4
4
  "description": "A harness for every question - a panel of up to 11 AI models that picks its own deliberation strategy per question (convergence, adversarial verification, tournament) and checks its work before answering",
5
5
  "bin": {
6
6
  "ai-consultants": "bin/ai-consultants"
@@ -12,6 +12,7 @@
12
12
  "!scripts/test_fixtures/",
13
13
  "!scripts/lib/test_helpers.sh",
14
14
  "!scripts/release.sh",
15
+ "!scripts/experiment/",
15
16
  "templates/",
16
17
  ".env.example",
17
18
  ".claude/commands/",