the-high-council 0.6.0 → 0.7.5
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.
- package/README.md +39 -2
- package/TROUBLESHOOTING.md +13 -0
- package/chains/eu-only.json +44 -0
- package/chains/local-ollama.json +43 -0
- package/chains/plan-debate-roles-c1.json +5 -62
- package/chains/plan-two-strong.json +74 -0
- package/chains/single-vendor-anthropic.json +43 -0
- package/chains/single-vendor-openai.json +43 -0
- package/chains/us-only.json +49 -0
- package/package.json +1 -1
- package/src/audit.js +188 -0
- package/src/canary.js +85 -0
- package/src/chain-lint.js +240 -3
- package/src/chain.js +657 -37
- package/src/claims.js +135 -0
- package/src/cli.js +157 -5
- package/src/cost.js +8 -0
- package/src/errors.js +14 -0
- package/src/lints.js +135 -0
- package/src/mcp/server.js +43 -1
- package/src/metrics.js +416 -0
- package/src/pii-gate.js +149 -0
- package/src/policy.js +128 -0
- package/src/providers.js +205 -8
- package/src/roles.js +199 -4
- package/src/tools.js +191 -0
- package/src/verdict-stats.js +33 -0
package/README.md
CHANGED
|
@@ -139,7 +139,31 @@ Fill in `.env` with only the keys your chosen chain needs. Supported providers:
|
|
|
139
139
|
`OPENROUTER_API_KEY` · `ZAI_API_KEY` · `XAI_API_KEY`
|
|
140
140
|
|
|
141
141
|
The CLI refuses to start if any seat in the chosen chain is missing its key, rather than failing
|
|
142
|
-
halfway through a paid run.
|
|
142
|
+
halfway through a paid run. `ollama` (below) is the one exception - it needs no key at all.
|
|
143
|
+
|
|
144
|
+
### Local models (Ollama, LM Studio, ...)
|
|
145
|
+
|
|
146
|
+
A seat can run on a model you're hosting yourself instead of a paid API. Set its provider to
|
|
147
|
+
`ollama`:
|
|
148
|
+
|
|
149
|
+
```json
|
|
150
|
+
{ "provider": "ollama", "model": "llama3.1" }
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
This talks to Ollama's own OpenAI-compatibility endpoint (`http://localhost:11434/v1` by
|
|
154
|
+
default) - no `OLLAMA_API_KEY` needed; Ollama's docs describe a key as "required, but unused."
|
|
155
|
+
If your local runner listens somewhere else (LM Studio, a different port, a remote box), add
|
|
156
|
+
`baseUrl` to that seat:
|
|
157
|
+
|
|
158
|
+
```json
|
|
159
|
+
{ "provider": "ollama", "model": "mistral", "baseUrl": "http://localhost:1234/v1" }
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
A local seat prices at $0 in every estimate and run report - `dry_run` shows it as priced, not
|
|
163
|
+
"unpriced," and it can never trip the spend cap. See `chains/local-ollama.json` for a full
|
|
164
|
+
example chain with every seat local. As with every other seat in this project: BYOK is really
|
|
165
|
+
BYO-compute here, and no efficacy claim is made about local models versus hosted ones - nothing
|
|
166
|
+
has been measured.
|
|
143
167
|
|
|
144
168
|
## Quick start (CLI)
|
|
145
169
|
|
|
@@ -280,6 +304,7 @@ Then drive it with these tools:
|
|
|
280
304
|
| `run_status` | Stage reached, panel verdicts, scoreboard, cost, budget remaining |
|
|
281
305
|
| `spend_report` | What every run has cost across a window of days, plus `session_cost_today` (calendar-day, per-model breakdown), derived from disk |
|
|
282
306
|
| `verdict_stats` | How the debate mechanism itself is doing, per chain and per lab: sign-off rate, rounds, objections, dropouts, cost/wall time, largest prompt files - derived from disk |
|
|
307
|
+
| `metrics_report` | Descriptive telemetry only (never an evaluation or baseline): amendment rate, withdrawal rate, objection-follow-through rate, tool-call usage, consensus-induced-regression count - derived from disk. See [`docs/paid-comparison-run.md`](docs/paid-comparison-run.md) for what a *real* comparison against a single model would need - not built, not this metric |
|
|
283
308
|
| `external_prompt` | The prompt a paused external stage is waiting on - **read it with this, not by opening the file**; the prompts are routinely tens of thousands of tokens and most clients silently truncate a file read |
|
|
284
309
|
| `prepare_stage_prompt` | Write a self-contained bundle for a paused stage, so a driving session doing other work at the same time can dispatch it to a fresh subagent instead of authoring it inline - see [`docs/dispatch-pattern.md`](docs/dispatch-pattern.md) |
|
|
285
310
|
| `submit_stage` | Answer a paused stage and resume. Optional `claimed_by` records who's answering; a second submission for an already-answered stage no longer errors - it's kept as `<stage>.late.md` with a warning instead of being rejected |
|
|
@@ -417,6 +442,16 @@ claiming 29 chains and 12 tools when there were 30 and 11.
|
|
|
417
442
|
|
|
418
443
|
No claim is made here that any of this produces better plans. It has not been measured.
|
|
419
444
|
|
|
445
|
+
## Skills
|
|
446
|
+
|
|
447
|
+
`skills/` carries two Claude Code skill files shipped alongside this harness, not part of it:
|
|
448
|
+
`backend-developer` and `frontend-developer` - general backend and frontend engineering rules
|
|
449
|
+
(contract-first design, save/persistence integrity, accessibility, verification discipline) that
|
|
450
|
+
apply to any codebase, not just this one. Same MIT/BYOK ethos as the harness itself. They don't
|
|
451
|
+
claim to make code better; they describe what each rule guards against and why. Point Claude Code
|
|
452
|
+
at this repo's `skills/` directory (or copy the two folders into your own project's
|
|
453
|
+
`.claude/skills/`) to use them.
|
|
454
|
+
|
|
420
455
|
## Known limits, stated plainly
|
|
421
456
|
|
|
422
457
|
- The spend cap is enforced against a **worst case**, not a prediction: the whole prompt billed as
|
|
@@ -425,7 +460,9 @@ No claim is made here that any of this produces better plans. It has not been me
|
|
|
425
460
|
left. That is the intended trade - resume it with a higher ceiling.
|
|
426
461
|
- A seat whose model has no entry in `src/pricing.json` is **unpriced, and therefore uncapped**.
|
|
427
462
|
It contributes $0 to the running total no matter what it really costs. Check `dry_run` output
|
|
428
|
-
for `unpriced` before trusting a ceiling.
|
|
463
|
+
for `unpriced` before trusting a ceiling. `ollama` seats are the one deliberate exception: they
|
|
464
|
+
price at an explicit $0 for any model name (they are genuinely free to run), so they never show
|
|
465
|
+
up in that `unpriced` list and never need a pricing.json entry.
|
|
429
466
|
- Prices in `src/pricing.json` are hand-maintained list prices, last verified 2026-09-06. They are
|
|
430
467
|
estimates, not invoices. Your provider's bill is the real number.
|
|
431
468
|
- Chains with many labs and high round caps get expensive quickly. `plan-unanimous` at three rounds
|
package/TROUBLESHOOTING.md
CHANGED
|
@@ -43,3 +43,16 @@ lab actually returned. The run log also says why it was unreadable: truncated
|
|
|
43
43
|
(hit its token cap), malformed JSON, or the provider itself returned an error
|
|
44
44
|
mid-generation - each needs a different fix (a higher `maxTokens`, a smaller
|
|
45
45
|
prompt, or just retrying).
|
|
46
|
+
|
|
47
|
+
## COUNCIL-E005 - Policy refusal (fatal)
|
|
48
|
+
|
|
49
|
+
Either `policy.json` itself isn't valid JSON, or the chain you're about to run
|
|
50
|
+
violates one of its limits (an unlisted provider or region, over the per-run or
|
|
51
|
+
per-month spend cap, a missing required tag, or an unpriced seat when
|
|
52
|
+
`refuse_unpriced_seats` is set). A policy file is a locked, operator-set set of
|
|
53
|
+
limits checked before any provider is called - a run that would violate it never
|
|
54
|
+
starts, so nothing was spent.
|
|
55
|
+
|
|
56
|
+
**Fix:** if the file itself won't parse, fix its JSON syntax. Otherwise, either
|
|
57
|
+
change the chain so it no longer violates the listed limit(s), or change
|
|
58
|
+
`policy.json` if the limit itself was wrong. See [docs/policy.md](docs/policy.md).
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "eu-only",
|
|
3
|
+
"description": "Compliance chain (v7.x, procurement readiness): touches only anthropic, openai, mistral - none of the non-EU labs (deepseek, zai) the source procurement report flags. Region: EU. Two labs' worth of critique, same shape as verify.",
|
|
4
|
+
"maxRounds": 2,
|
|
5
|
+
"stopOnPass": true,
|
|
6
|
+
"compliance": {
|
|
7
|
+
"regions": ["EU"],
|
|
8
|
+
"providers": ["anthropic", "openai", "mistral"]
|
|
9
|
+
},
|
|
10
|
+
"estimate": {
|
|
11
|
+
"promptTokens": 4000,
|
|
12
|
+
"draftTokens": 6000,
|
|
13
|
+
"critiqueTokens": 1200
|
|
14
|
+
},
|
|
15
|
+
"seats": {
|
|
16
|
+
"criteria": {
|
|
17
|
+
"provider": "anthropic",
|
|
18
|
+
"model": "claude-opus-5",
|
|
19
|
+
"maxTokens": 2000
|
|
20
|
+
},
|
|
21
|
+
"builder": {
|
|
22
|
+
"provider": "anthropic",
|
|
23
|
+
"model": "claude-opus-5",
|
|
24
|
+
"maxTokens": 16000
|
|
25
|
+
},
|
|
26
|
+
"reviser": {
|
|
27
|
+
"provider": "anthropic",
|
|
28
|
+
"model": "claude-opus-5",
|
|
29
|
+
"maxTokens": 16000
|
|
30
|
+
},
|
|
31
|
+
"critics": [
|
|
32
|
+
{
|
|
33
|
+
"provider": "openai",
|
|
34
|
+
"model": "gpt-5",
|
|
35
|
+
"maxTokens": 20000
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"provider": "mistral",
|
|
39
|
+
"model": "mistral-large-latest",
|
|
40
|
+
"maxTokens": 20000
|
|
41
|
+
}
|
|
42
|
+
]
|
|
43
|
+
}
|
|
44
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "local-ollama",
|
|
3
|
+
"description": "BYO-hardware: every seat runs on a local Ollama instance. No API key, no spend - `dry_run` prices this chain at $0. Swap the model names for whatever you've pulled (`ollama pull <model>`); swap `baseUrl` if Ollama (or an LM Studio / other OpenAI-compatible local runner) listens somewhere other than the default `http://localhost:11434/v1`.",
|
|
4
|
+
"maxRounds": 2,
|
|
5
|
+
"stopOnPass": true,
|
|
6
|
+
"estimate": {
|
|
7
|
+
"promptTokens": 4000,
|
|
8
|
+
"draftTokens": 6000,
|
|
9
|
+
"critiqueTokens": 1200
|
|
10
|
+
},
|
|
11
|
+
"seats": {
|
|
12
|
+
"criteria": {
|
|
13
|
+
"provider": "ollama",
|
|
14
|
+
"model": "llama3.1",
|
|
15
|
+
"maxTokens": 2000
|
|
16
|
+
},
|
|
17
|
+
"builder": {
|
|
18
|
+
"provider": "ollama",
|
|
19
|
+
"model": "llama3.1",
|
|
20
|
+
"maxTokens": 16000
|
|
21
|
+
},
|
|
22
|
+
"reviser": {
|
|
23
|
+
"provider": "ollama",
|
|
24
|
+
"model": "llama3.1",
|
|
25
|
+
"maxTokens": 16000
|
|
26
|
+
},
|
|
27
|
+
"critics": [
|
|
28
|
+
{
|
|
29
|
+
"provider": "ollama",
|
|
30
|
+
"model": "qwen2.5",
|
|
31
|
+
"maxTokens": 8000,
|
|
32
|
+
"lab": "ollama-qwen"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"provider": "ollama",
|
|
36
|
+
"model": "mistral",
|
|
37
|
+
"maxTokens": 8000,
|
|
38
|
+
"baseUrl": "http://localhost:1234/v1",
|
|
39
|
+
"lab": "lmstudio-mistral"
|
|
40
|
+
}
|
|
41
|
+
]
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "plan-debate-roles-c1",
|
|
3
|
-
"description": "v6 role-seat plan, phase 5 real-run candidate (docs/v6-decisions.md 'Phase 5 - role debate chain'). Same shape as plan-debate-open-c2, minus Kimi (five seats, not six, to match the plan's five lenses/five personas one-to-one)
|
|
3
|
+
"description": "v6 role-seat plan, phase 5 real-run candidate (docs/v6-decisions.md 'Phase 5 - role debate chain'). Same shape as plan-debate-open-c2, minus Kimi (five critic seats, not six, to match the plan's five lenses/five personas one-to-one) - each critic seat now carries a role: {lens, persona} pair (v6 §1/§2, applied only to the debate-stage system prompt; the panel stage and every pipeline seat below are unaffected by construction). Pipeline seats (criteria/skeleton/builder/reviser/handoff) are untouched external Claude-Code seats, exactly as in the source chain - roles only ever apply to the critics array's debate-stage prompt. Pairings and their reasoning are in docs/v6-decisions.md, not repeated here so there is one place to keep them current.",
|
|
4
4
|
"maxRounds": 3,
|
|
5
5
|
"signoff": "unanimous",
|
|
6
6
|
"proposals": {
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"provider": "external",
|
|
36
36
|
"model": "claude-code-session"
|
|
37
37
|
},
|
|
38
|
-
"
|
|
38
|
+
"critics": [
|
|
39
39
|
{
|
|
40
40
|
"provider": "together",
|
|
41
41
|
"model": "deepseek-ai/DeepSeek-V4-Flash-0731",
|
|
@@ -80,69 +80,12 @@
|
|
|
80
80
|
"role": { "lens": "user-advocate", "persona": "van-gogh" }
|
|
81
81
|
},
|
|
82
82
|
{
|
|
83
|
-
"provider": "
|
|
84
|
-
"model": "
|
|
83
|
+
"provider": "google",
|
|
84
|
+
"model": "gemini-3.6-flash",
|
|
85
85
|
"maxTokens": 20000,
|
|
86
|
-
"
|
|
87
|
-
"reasoning": {
|
|
88
|
-
"enabled": false
|
|
89
|
-
}
|
|
90
|
-
},
|
|
91
|
-
"lab": "minimax",
|
|
86
|
+
"lab": "gemini",
|
|
92
87
|
"role": { "lens": "adversary", "persona": "parzival" }
|
|
93
88
|
}
|
|
94
|
-
],
|
|
95
|
-
"critics": [
|
|
96
|
-
{
|
|
97
|
-
"provider": "together",
|
|
98
|
-
"model": "deepseek-ai/DeepSeek-V4-Flash-0731",
|
|
99
|
-
"maxTokens": 20000,
|
|
100
|
-
"extra": {
|
|
101
|
-
"chat_template_kwargs": {
|
|
102
|
-
"thinking": false
|
|
103
|
-
}
|
|
104
|
-
},
|
|
105
|
-
"lab": "deepseek"
|
|
106
|
-
},
|
|
107
|
-
{
|
|
108
|
-
"provider": "openrouter",
|
|
109
|
-
"model": "qwen/qwen3.5-plus-20260420",
|
|
110
|
-
"maxTokens": 20000,
|
|
111
|
-
"extra": {
|
|
112
|
-
"reasoning": {
|
|
113
|
-
"enabled": false
|
|
114
|
-
}
|
|
115
|
-
},
|
|
116
|
-
"lab": "qwen"
|
|
117
|
-
},
|
|
118
|
-
{
|
|
119
|
-
"provider": "openrouter",
|
|
120
|
-
"model": "z-ai/glm-5.3-flash",
|
|
121
|
-
"maxTokens": 20000,
|
|
122
|
-
"lab": "glm",
|
|
123
|
-
"extra": {
|
|
124
|
-
"reasoning": {
|
|
125
|
-
"effort": "low"
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
},
|
|
129
|
-
{
|
|
130
|
-
"provider": "openrouter",
|
|
131
|
-
"model": "mistralai/mistral-large-2512",
|
|
132
|
-
"maxTokens": 20000,
|
|
133
|
-
"lab": "mistral"
|
|
134
|
-
},
|
|
135
|
-
{
|
|
136
|
-
"provider": "openrouter",
|
|
137
|
-
"model": "minimax/minimax-m3",
|
|
138
|
-
"maxTokens": 20000,
|
|
139
|
-
"extra": {
|
|
140
|
-
"reasoning": {
|
|
141
|
-
"enabled": false
|
|
142
|
-
}
|
|
143
|
-
},
|
|
144
|
-
"lab": "minimax"
|
|
145
|
-
}
|
|
146
89
|
]
|
|
147
90
|
},
|
|
148
91
|
"scope": "open"
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "plan-two-strong",
|
|
3
|
+
"description": "Roster inversion (relay/runs/2026-09-14T14-56-18-834Z/deliverable.md, item 6). Two strong seats from different labs propose and debate one round; one strong adjudicator seat signs off. No cheap-tier critic roster at all. Additive-only - no existing chain references this file.",
|
|
4
|
+
"maxRounds": 1,
|
|
5
|
+
"signoff": "unanimous",
|
|
6
|
+
"roster": {
|
|
7
|
+
"minimal_two_strong": true
|
|
8
|
+
},
|
|
9
|
+
"proposals": {
|
|
10
|
+
"parts": 3,
|
|
11
|
+
"maxTokens": 1500
|
|
12
|
+
},
|
|
13
|
+
"debate": true,
|
|
14
|
+
"handoff": true,
|
|
15
|
+
"estimate": {
|
|
16
|
+
"promptTokens": 12000,
|
|
17
|
+
"draftTokens": 16000,
|
|
18
|
+
"critiqueTokens": 2000
|
|
19
|
+
},
|
|
20
|
+
"seats": {
|
|
21
|
+
"criteria": {
|
|
22
|
+
"provider": "anthropic",
|
|
23
|
+
"model": "claude-opus-5",
|
|
24
|
+
"maxTokens": 2000,
|
|
25
|
+
"lab": "anthropic"
|
|
26
|
+
},
|
|
27
|
+
"skeleton": {
|
|
28
|
+
"provider": "anthropic",
|
|
29
|
+
"model": "claude-opus-5",
|
|
30
|
+
"maxTokens": 6000,
|
|
31
|
+
"lab": "anthropic"
|
|
32
|
+
},
|
|
33
|
+
"builder": {
|
|
34
|
+
"provider": "anthropic",
|
|
35
|
+
"model": "claude-opus-5",
|
|
36
|
+
"maxTokens": 40000,
|
|
37
|
+
"lab": "anthropic"
|
|
38
|
+
},
|
|
39
|
+
"reviser": {
|
|
40
|
+
"provider": "anthropic",
|
|
41
|
+
"model": "claude-opus-5",
|
|
42
|
+
"maxTokens": 40000,
|
|
43
|
+
"lab": "anthropic"
|
|
44
|
+
},
|
|
45
|
+
"handoff": {
|
|
46
|
+
"provider": "anthropic",
|
|
47
|
+
"model": "claude-opus-5",
|
|
48
|
+
"maxTokens": 4000,
|
|
49
|
+
"lab": "anthropic"
|
|
50
|
+
},
|
|
51
|
+
"proposers": [
|
|
52
|
+
{
|
|
53
|
+
"provider": "anthropic",
|
|
54
|
+
"model": "claude-opus-5",
|
|
55
|
+
"maxTokens": 20000,
|
|
56
|
+
"lab": "anthropic"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"provider": "openai",
|
|
60
|
+
"model": "gpt-5",
|
|
61
|
+
"maxTokens": 20000,
|
|
62
|
+
"lab": "openai"
|
|
63
|
+
}
|
|
64
|
+
],
|
|
65
|
+
"critics": [
|
|
66
|
+
{
|
|
67
|
+
"provider": "google",
|
|
68
|
+
"model": "gemini-2.5-pro",
|
|
69
|
+
"maxTokens": 20000,
|
|
70
|
+
"lab": "google"
|
|
71
|
+
}
|
|
72
|
+
]
|
|
73
|
+
}
|
|
74
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "single-vendor-anthropic",
|
|
3
|
+
"description": "Compliance chain (v7.x, procurement readiness): every seat routes through anthropic (models claude-opus-5, claude-sonnet-5, claude-haiku-4-5-20251001), pinned to exact model versions in src/pricing.json - a single vendor account and a single provider key for the whole run.",
|
|
4
|
+
"maxRounds": 2,
|
|
5
|
+
"stopOnPass": true,
|
|
6
|
+
"compliance": {
|
|
7
|
+
"providers": ["anthropic"]
|
|
8
|
+
},
|
|
9
|
+
"estimate": {
|
|
10
|
+
"promptTokens": 4000,
|
|
11
|
+
"draftTokens": 6000,
|
|
12
|
+
"critiqueTokens": 1200
|
|
13
|
+
},
|
|
14
|
+
"seats": {
|
|
15
|
+
"criteria": {
|
|
16
|
+
"provider": "anthropic",
|
|
17
|
+
"model": "claude-opus-5",
|
|
18
|
+
"maxTokens": 2000
|
|
19
|
+
},
|
|
20
|
+
"builder": {
|
|
21
|
+
"provider": "anthropic",
|
|
22
|
+
"model": "claude-opus-5",
|
|
23
|
+
"maxTokens": 16000
|
|
24
|
+
},
|
|
25
|
+
"reviser": {
|
|
26
|
+
"provider": "anthropic",
|
|
27
|
+
"model": "claude-opus-5",
|
|
28
|
+
"maxTokens": 16000
|
|
29
|
+
},
|
|
30
|
+
"critics": [
|
|
31
|
+
{
|
|
32
|
+
"provider": "anthropic",
|
|
33
|
+
"model": "claude-sonnet-5",
|
|
34
|
+
"maxTokens": 20000
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"provider": "anthropic",
|
|
38
|
+
"model": "claude-haiku-4-5-20251001",
|
|
39
|
+
"maxTokens": 20000
|
|
40
|
+
}
|
|
41
|
+
]
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "single-vendor-openai",
|
|
3
|
+
"description": "Compliance chain (v7.x, procurement readiness): every seat routes through openai (models gpt-5, gpt-5-mini, gpt-5-nano), pinned to exact model versions in src/pricing.json - a single vendor account and a single provider key for the whole run.",
|
|
4
|
+
"maxRounds": 2,
|
|
5
|
+
"stopOnPass": true,
|
|
6
|
+
"compliance": {
|
|
7
|
+
"providers": ["openai"]
|
|
8
|
+
},
|
|
9
|
+
"estimate": {
|
|
10
|
+
"promptTokens": 4000,
|
|
11
|
+
"draftTokens": 6000,
|
|
12
|
+
"critiqueTokens": 1200
|
|
13
|
+
},
|
|
14
|
+
"seats": {
|
|
15
|
+
"criteria": {
|
|
16
|
+
"provider": "openai",
|
|
17
|
+
"model": "gpt-5",
|
|
18
|
+
"maxTokens": 2000
|
|
19
|
+
},
|
|
20
|
+
"builder": {
|
|
21
|
+
"provider": "openai",
|
|
22
|
+
"model": "gpt-5",
|
|
23
|
+
"maxTokens": 16000
|
|
24
|
+
},
|
|
25
|
+
"reviser": {
|
|
26
|
+
"provider": "openai",
|
|
27
|
+
"model": "gpt-5",
|
|
28
|
+
"maxTokens": 16000
|
|
29
|
+
},
|
|
30
|
+
"critics": [
|
|
31
|
+
{
|
|
32
|
+
"provider": "openai",
|
|
33
|
+
"model": "gpt-5-mini",
|
|
34
|
+
"maxTokens": 20000
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"provider": "openai",
|
|
38
|
+
"model": "gpt-5-nano",
|
|
39
|
+
"maxTokens": 20000
|
|
40
|
+
}
|
|
41
|
+
]
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "us-only",
|
|
3
|
+
"description": "Compliance chain (v7.x, procurement readiness): touches only anthropic, openai, xai, google - all US-based labs. Region: US. Two labs' worth of critique, same shape as verify.",
|
|
4
|
+
"maxRounds": 2,
|
|
5
|
+
"stopOnPass": true,
|
|
6
|
+
"compliance": {
|
|
7
|
+
"regions": ["US"],
|
|
8
|
+
"providers": ["anthropic", "openai", "xai", "google"]
|
|
9
|
+
},
|
|
10
|
+
"estimate": {
|
|
11
|
+
"promptTokens": 4000,
|
|
12
|
+
"draftTokens": 6000,
|
|
13
|
+
"critiqueTokens": 1200
|
|
14
|
+
},
|
|
15
|
+
"seats": {
|
|
16
|
+
"criteria": {
|
|
17
|
+
"provider": "anthropic",
|
|
18
|
+
"model": "claude-opus-5",
|
|
19
|
+
"maxTokens": 2000
|
|
20
|
+
},
|
|
21
|
+
"builder": {
|
|
22
|
+
"provider": "anthropic",
|
|
23
|
+
"model": "claude-opus-5",
|
|
24
|
+
"maxTokens": 16000
|
|
25
|
+
},
|
|
26
|
+
"reviser": {
|
|
27
|
+
"provider": "anthropic",
|
|
28
|
+
"model": "claude-opus-5",
|
|
29
|
+
"maxTokens": 16000
|
|
30
|
+
},
|
|
31
|
+
"critics": [
|
|
32
|
+
{
|
|
33
|
+
"provider": "openai",
|
|
34
|
+
"model": "gpt-5",
|
|
35
|
+
"maxTokens": 20000
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"provider": "xai",
|
|
39
|
+
"model": "grok-4",
|
|
40
|
+
"maxTokens": 20000
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"provider": "google",
|
|
44
|
+
"model": "gemini-2.5-pro",
|
|
45
|
+
"maxTokens": 20000
|
|
46
|
+
}
|
|
47
|
+
]
|
|
48
|
+
}
|
|
49
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "the-high-council",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.5",
|
|
4
4
|
"description": "The High Council: a multi-model planning harness. One builder, independent critics from other labs, checkable acceptance criteria, a debate on the record, and a hard stop.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|