roadmodel 0.2.85__tar.gz → 0.2.86__tar.gz
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.
- {roadmodel-0.2.85 → roadmodel-0.2.86}/PKG-INFO +3 -2
- {roadmodel-0.2.85 → roadmodel-0.2.86}/README.md +2 -1
- {roadmodel-0.2.85 → roadmodel-0.2.86}/docs/claude-commands/roadmap-refresh.md +43 -38
- {roadmodel-0.2.85/roadmodel/data → roadmodel-0.2.86/docs/claude-commands}/roadmap-step.md +24 -3
- {roadmodel-0.2.85/roadmodel/data → roadmodel-0.2.86/docs/templates}/phase-roadmap-template.md +86 -40
- {roadmodel-0.2.85 → roadmodel-0.2.86}/docs/templates/planning-kit-how-to-use.md +13 -0
- {roadmodel-0.2.85/roadmodel/data → roadmodel-0.2.86/docs/templates}/project-roadmap-template.md +59 -47
- {roadmodel-0.2.85/roadmodel/data → roadmodel-0.2.86/docs/templates}/prompt-phase-roadmap.md +36 -22
- {roadmodel-0.2.85 → roadmodel-0.2.86}/docs/templates/prompt-project-roadmap.md +21 -16
- {roadmodel-0.2.85 → roadmodel-0.2.86}/pyproject.toml +3 -1
- {roadmodel-0.2.85/docs/templates → roadmodel-0.2.86/roadmodel/data}/phase-roadmap-template.md +86 -40
- {roadmodel-0.2.85 → roadmodel-0.2.86}/roadmodel/data/planning-kit-how-to-use.md +13 -0
- {roadmodel-0.2.85/docs/templates → roadmodel-0.2.86/roadmodel/data}/project-roadmap-template.md +59 -47
- {roadmodel-0.2.85/docs/templates → roadmodel-0.2.86/roadmodel/data}/prompt-phase-roadmap.md +36 -22
- {roadmodel-0.2.85 → roadmodel-0.2.86}/roadmodel/data/prompt-project-roadmap.md +21 -16
- {roadmodel-0.2.85 → roadmodel-0.2.86}/roadmodel/data/roadmap-refresh.md +43 -38
- {roadmodel-0.2.85/docs/claude-commands → roadmodel-0.2.86/roadmodel/data}/roadmap-step.md +24 -3
- {roadmodel-0.2.85 → roadmodel-0.2.86}/scripts/update_projects.py +60 -0
- {roadmodel-0.2.85 → roadmodel-0.2.86}/src/roadmodel/__init__.py +1 -1
- {roadmodel-0.2.85 → roadmodel-0.2.86}/src/roadmodel/cli.py +89 -9
- {roadmodel-0.2.85 → roadmodel-0.2.86}/src/roadmodel/mcp_server.py +44 -3
- {roadmodel-0.2.85 → roadmodel-0.2.86}/src/roadmodel/recommend.py +43 -2
- {roadmodel-0.2.85 → roadmodel-0.2.86}/src/roadmodel/scoring.py +212 -66
- roadmodel-0.2.86/src/roadmodel/series.py +51 -0
- {roadmodel-0.2.85 → roadmodel-0.2.86}/.github/README.md +0 -0
- {roadmodel-0.2.85 → roadmodel-0.2.86}/.gitignore +0 -0
- {roadmodel-0.2.85 → roadmodel-0.2.86}/LICENSE +0 -0
- {roadmodel-0.2.85 → roadmodel-0.2.86}/NOTICE +0 -0
- {roadmodel-0.2.85 → roadmodel-0.2.86}/docs/benchmarks.json +0 -0
- {roadmodel-0.2.85 → roadmodel-0.2.86}/docs/catalog.json +0 -0
- {roadmodel-0.2.85 → roadmodel-0.2.86}/docs/claude-commands/roadmap-phase.md +0 -0
- {roadmodel-0.2.85 → roadmodel-0.2.86}/docs/claude-commands/roadmap-project.md +0 -0
- {roadmodel-0.2.85 → roadmodel-0.2.86}/docs/claude-commands/roadmodel-upgrade.md +0 -0
- {roadmodel-0.2.85 → roadmodel-0.2.86}/docs/context-windows.json +0 -0
- {roadmodel-0.2.85 → roadmodel-0.2.86}/docs/effort-tokens.json +0 -0
- {roadmodel-0.2.85 → roadmodel-0.2.86}/docs/model-selector.txt +0 -0
- {roadmodel-0.2.85 → roadmodel-0.2.86}/docs/model-tier-cost-scale.md +0 -0
- {roadmodel-0.2.85 → roadmodel-0.2.86}/docs/settings-display.md +0 -0
- {roadmodel-0.2.85 → roadmodel-0.2.86}/docs/user-context.example.md +0 -0
- {roadmodel-0.2.85 → roadmodel-0.2.86}/hatch_build.py +0 -0
- {roadmodel-0.2.85 → roadmodel-0.2.86}/infra/README.md +0 -0
- {roadmodel-0.2.85 → roadmodel-0.2.86}/infra/gcp-killswitch/README.md +0 -0
- {roadmodel-0.2.85 → roadmodel-0.2.86}/infra/supabase/README.md +0 -0
- {roadmodel-0.2.85 → roadmodel-0.2.86}/roadmodel/data/benchmarks.json +0 -0
- {roadmodel-0.2.85 → roadmodel-0.2.86}/roadmodel/data/catalog.json +0 -0
- {roadmodel-0.2.85 → roadmodel-0.2.86}/roadmodel/data/context-windows.json +0 -0
- {roadmodel-0.2.85 → roadmodel-0.2.86}/roadmodel/data/effort-tokens.json +0 -0
- {roadmodel-0.2.85 → roadmodel-0.2.86}/roadmodel/data/model-selector.txt +0 -0
- {roadmodel-0.2.85 → roadmodel-0.2.86}/roadmodel/data/model-tier-cost-scale.md +0 -0
- {roadmodel-0.2.85 → roadmodel-0.2.86}/roadmodel/data/roadmap-phase.md +0 -0
- {roadmodel-0.2.85 → roadmodel-0.2.86}/roadmodel/data/roadmap-project.md +0 -0
- {roadmodel-0.2.85 → roadmodel-0.2.86}/roadmodel/data/roadmodel-upgrade.md +0 -0
- {roadmodel-0.2.85 → roadmodel-0.2.86}/roadmodel/data/settings-display.md +0 -0
- {roadmodel-0.2.85 → roadmodel-0.2.86}/roadmodel/data/user-context.example.md +0 -0
- {roadmodel-0.2.85 → roadmodel-0.2.86}/scripts/agent_context.py +0 -0
- {roadmodel-0.2.85 → roadmodel-0.2.86}/scripts/agent_rules.py +0 -0
- {roadmodel-0.2.85 → roadmodel-0.2.86}/scripts/updater_lock.py +0 -0
- {roadmodel-0.2.85 → roadmodel-0.2.86}/scripts/upgrade_fleet.py +0 -0
- {roadmodel-0.2.85 → roadmodel-0.2.86}/scripts/worktree_memory.py +0 -0
- {roadmodel-0.2.85 → roadmodel-0.2.86}/src/roadmodel/__main__.py +0 -0
- {roadmodel-0.2.85 → roadmodel-0.2.86}/src/roadmodel/config.py +0 -0
- {roadmodel-0.2.85 → roadmodel-0.2.86}/src/roadmodel/cost.py +0 -0
- {roadmodel-0.2.85 → roadmodel-0.2.86}/src/roadmodel/errors.py +0 -0
- {roadmodel-0.2.85 → roadmodel-0.2.86}/src/roadmodel/private_files.py +0 -0
- {roadmodel-0.2.85 → roadmodel-0.2.86}/src/roadmodel/providers/__init__.py +0 -0
- {roadmodel-0.2.85 → roadmodel-0.2.86}/src/roadmodel/providers/_safety.py +0 -0
- {roadmodel-0.2.85 → roadmodel-0.2.86}/src/roadmodel/providers/anthropic.py +0 -0
- {roadmodel-0.2.85 → roadmodel-0.2.86}/src/roadmodel/providers/google.py +0 -0
- {roadmodel-0.2.85 → roadmodel-0.2.86}/src/roadmodel/providers/openai.py +0 -0
- {roadmodel-0.2.85 → roadmodel-0.2.86}/src/roadmodel/providers/openai_compatible.py +0 -0
- {roadmodel-0.2.85 → roadmodel-0.2.86}/src/roadmodel/providers/registry.py +0 -0
- {roadmodel-0.2.85 → roadmodel-0.2.86}/src/roadmodel/usage.py +0 -0
- {roadmodel-0.2.85 → roadmodel-0.2.86}/src/roadmodel/user_context.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: roadmodel
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.86
|
|
4
4
|
Summary: BYO-key CLI that recommends the right AI model, platform, and settings for a prompt.
|
|
5
5
|
Project-URL: Homepage, https://roadmodel.ai
|
|
6
6
|
Project-URL: Repository, https://github.com/nathanramoscfa/roadmodel
|
|
@@ -607,7 +607,8 @@ server and the reasoning-effort default in parity automatically.
|
|
|
607
607
|
| `roadmodel recommend --model` | Override the specific model ID on the chosen provider. |
|
|
608
608
|
| `roadmodel recommend --user-context PATH` | Override the user-context.md location for this invocation. |
|
|
609
609
|
| `roadmodel score --category C --complexity X` | Rank (model, platform, effort) candidates in code for a classified task — no engine call. See [docs/scoring-model.md](docs/scoring-model.md). |
|
|
610
|
-
| `roadmodel backup --category C --complexity X --model M --effort E` | Name the cross-maker backup for a pick, by the rule /recommend uses — no engine call. Prints the roadmap Settings Backup cell, and first a `MODEL` cell when
|
|
610
|
+
| `roadmodel backup --category C --complexity X --model M --effort E` | Name the cross-maker backup for a pick, by the rule /recommend uses — no engine call. Prints the roadmap Settings Backup cell, and first a `MODEL` cell when the pick's platform offers a newer version of its model (GPT-6 Sol → GPT-6.1 Sol). |
|
|
611
|
+
| `roadmodel ladder --category C --complexity X [--novel] [--phase]` | Print a roadmap Settings table as the full ladder: Cost / Balanced / Quality, each with its effort and a cross-maker backup, plus the column the step runs and the rule for a tight or exhausted pool — no engine call. |
|
|
611
612
|
| `roadmodel catalog show` | Print the bundled `model-selector.txt` (use `--doc tier-cost-scale` for the price doc). |
|
|
612
613
|
| `roadmodel catalog path` | Print the on-disk path of the bundled catalog document (same `--doc` flag). |
|
|
613
614
|
| `roadmodel context show` | Print the resolved `user-context.md` file. |
|
|
@@ -356,7 +356,8 @@ server and the reasoning-effort default in parity automatically.
|
|
|
356
356
|
| `roadmodel recommend --model` | Override the specific model ID on the chosen provider. |
|
|
357
357
|
| `roadmodel recommend --user-context PATH` | Override the user-context.md location for this invocation. |
|
|
358
358
|
| `roadmodel score --category C --complexity X` | Rank (model, platform, effort) candidates in code for a classified task — no engine call. See [docs/scoring-model.md](docs/scoring-model.md). |
|
|
359
|
-
| `roadmodel backup --category C --complexity X --model M --effort E` | Name the cross-maker backup for a pick, by the rule /recommend uses — no engine call. Prints the roadmap Settings Backup cell, and first a `MODEL` cell when
|
|
359
|
+
| `roadmodel backup --category C --complexity X --model M --effort E` | Name the cross-maker backup for a pick, by the rule /recommend uses — no engine call. Prints the roadmap Settings Backup cell, and first a `MODEL` cell when the pick's platform offers a newer version of its model (GPT-6 Sol → GPT-6.1 Sol). |
|
|
360
|
+
| `roadmodel ladder --category C --complexity X [--novel] [--phase]` | Print a roadmap Settings table as the full ladder: Cost / Balanced / Quality, each with its effort and a cross-maker backup, plus the column the step runs and the rule for a tight or exhausted pool — no engine call. |
|
|
360
361
|
| `roadmodel catalog show` | Print the bundled `model-selector.txt` (use `--doc tier-cost-scale` for the price doc). |
|
|
361
362
|
| `roadmodel catalog path` | Print the on-disk path of the bundled catalog document (same `--doc` flag). |
|
|
362
363
|
| `roadmodel context show` | Print the resolved `user-context.md` file. |
|
|
@@ -167,39 +167,42 @@ Print the phase · step · status table.
|
|
|
167
167
|
|
|
168
168
|
The current step is the first step, in phase order, that does not read
|
|
169
169
|
`Complete`. For the current step and every step after it, in every phase
|
|
170
|
-
roadmap that exists, re-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
`planning/settings-display.md`, against `planning/user-context.md`. You
|
|
174
|
-
are the engine — do not call any external API. Honor every availability
|
|
175
|
-
exclusion in the selector, and include a backup model.
|
|
170
|
+
roadmap that exists, re-select its Settings the way a phase roadmap is
|
|
171
|
+
written now. Classify the step (its PRIMARY and SECONDARY category, its
|
|
172
|
+
complexity, novel or not; its Model rationale names them), then:
|
|
176
173
|
|
|
174
|
+
- Where `roadmodel` is installed, the Settings table is the ladder
|
|
175
|
+
`roadmodel ladder --category <c> --complexity <x> [--novel]` prints
|
|
176
|
+
for that classification (MCP tool: `roadmap_settings`), pasted as
|
|
177
|
+
printed with its **Runs:** line: Cost, Balanced and Quality, each with
|
|
178
|
+
its own effort and a backup from another maker, read with every usage
|
|
179
|
+
pool at headroom, so the step's runner picks the column from the pools
|
|
180
|
+
on the day. A single-column table becomes the ladder: that is a
|
|
181
|
+
difference. Its models are always the latest version of their series.
|
|
182
|
+
- Where `roadmodel` cannot be reached, re-run the model selector as the
|
|
183
|
+
roadmap was written: `planning/model-selector.txt`, with prices from
|
|
184
|
+
`planning/model-tier-cost-scale.md` and display rules from
|
|
185
|
+
`planning/settings-display.md`, against `planning/user-context.md`.
|
|
186
|
+
You are the engine — do not call any external API. Honor every
|
|
187
|
+
availability exclusion in the selector, include a backup model, and
|
|
188
|
+
never name an older version of a series (GPT-6 Sol where GPT-6.1 Sol
|
|
189
|
+
runs, Opus 5 where Opus 5.5 does).
|
|
177
190
|
- If the result differs from the step's Settings table, rewrite the
|
|
178
191
|
table and its Model rationale, and add one line beneath the table:
|
|
179
192
|
`> Settings updated <YYYY-MM-DD> (refresh): was <old model> · <old effort>. <why>.`
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
the rule /recommend backs a pick up by, which takes the cheaper of two
|
|
188
|
-
substitutes the benchmarks cannot tell apart — and it outranks the
|
|
189
|
-
selector's BACKUP. When the command also prints a `MODEL` line, that
|
|
190
|
-
cell replaces the step's model — a newer version of the same model
|
|
191
|
-
(GPT-6 Sol → GPT-6.1 Sol), on the same platform, no dearer, that
|
|
192
|
-
scores level or better at the step's effort; the selector's letters
|
|
193
|
-
are measured at each model's top effort, and a step that runs lower
|
|
194
|
-
can reverse them. That is a difference: rewrite the table, its Model
|
|
195
|
-
rationale and its selection block with the `MODEL` cell, keep the
|
|
196
|
-
Backup cell printed with it, and add the `Settings updated` line.
|
|
197
|
-
A table written before roadmodel 0.2.41 has no such row: add it from the
|
|
193
|
+
For a ladder, the old model and effort are the column the step ran
|
|
194
|
+
(its **Runs:** line), or the single column it replaced. A changed
|
|
195
|
+
backup alone counts as a difference; name it in that line.
|
|
196
|
+
- Every table carries a `Backup` row directly under `Model`, each cell
|
|
197
|
+
a backup with its own platform and dial
|
|
198
|
+
(`GPT-6.1 Sol — Codex · Intelligence Medium`), or `None`. A table
|
|
199
|
+
written before roadmodel 0.2.41 has no such row: add it from the
|
|
198
200
|
backup the step already names (its Model rationale's closing
|
|
199
201
|
sentence, or its entry in the Model selection blocks) — a layout
|
|
200
202
|
fix, not a new pick, so it takes no `Settings updated` line.
|
|
201
|
-
- Keep the step's
|
|
202
|
-
its
|
|
203
|
+
- Keep the step's selection block in the Model selection blocks equal
|
|
204
|
+
to the column its **Runs:** line names (its `BACKUP:` line to that
|
|
205
|
+
column's Backup), and its Summary Table row to the same column.
|
|
203
206
|
- If it matches, leave the step exactly as it is.
|
|
204
207
|
- **Never touch a step that reads `Complete`.** Its settings are the
|
|
205
208
|
record of what ran.
|
|
@@ -214,18 +217,20 @@ roadmap settings** table (roadmodel 0.2.54 on): the model and dials for
|
|
|
214
217
|
the session that writes that phase's roadmap with `/roadmap-phase N`.
|
|
215
218
|
For every phase whose roadmap does not exist yet — no
|
|
216
219
|
`phaseNN-roadmap.md` or `phaseNN-<slug>-roadmap.md` for it — re-run the
|
|
217
|
-
selector for that session, quality first: the
|
|
218
|
-
model the operator's access methods reach, at
|
|
219
|
-
rung it exposes on its platform (`Max` in Claude
|
|
220
|
-
never `Ultracode`, with a backup on its own platform
|
|
221
|
-
`planning/user-context.md` states a rule for
|
|
222
|
-
which wins. Where `roadmodel` is installed,
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
it ranks on measured benchmarks, so a stale catalog letter cannot
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
220
|
+
selector for that session, quality first: it runs the Quality column,
|
|
221
|
+
the strongest `planning` model the operator's access methods reach, at
|
|
222
|
+
the deepest reasoning rung it exposes on its platform (`Max` in Claude
|
|
223
|
+
Code), thinking on, never `Ultracode`, with a backup on its own platform
|
|
224
|
+
and dial — unless `planning/user-context.md` states a rule for
|
|
225
|
+
roadmap-writing sessions, which wins. Where `roadmodel` is installed,
|
|
226
|
+
the table is the ladder `roadmodel ladder --category planning
|
|
227
|
+
--complexity high --phase` prints, pasted as printed with its **Runs:**
|
|
228
|
+
line: it ranks on measured benchmarks, so a stale catalog letter cannot
|
|
229
|
+
steer it, and a model the user-context names for these sessions still
|
|
230
|
+
wins. A single-column table becomes the ladder: that is a difference.
|
|
231
|
+
Without roadmodel, the table takes its platform's single-column shape,
|
|
232
|
+
as a step's does. Conversation is **New**, followed by one or two
|
|
233
|
+
sentences on why.
|
|
229
234
|
|
|
230
235
|
- No table yet ⇒ add one. It is the phase's first pick, so it takes no
|
|
231
236
|
`Settings updated` line.
|
|
@@ -101,6 +101,23 @@ Print one line: `Step {{STEP}} requires: Model <M> · Platform <P> ·
|
|
|
101
101
|
<the dials the table carries, e.g. Effort <E> · Thinking <T>, or
|
|
102
102
|
Intelligence <I>>. This session: <your own model> on <this surface>.`
|
|
103
103
|
|
|
104
|
+
- **Ladder tables** (Cost / Balanced / Quality columns, roadmodel 0.2.86
|
|
105
|
+
on) carry every column the step may run, so pick one before the checks
|
|
106
|
+
below. The table's **Runs:** line names the column. Apply its rule to
|
|
107
|
+
the Usage-pool status table in `planning/user-context.md` (a row whose
|
|
108
|
+
reset time has passed reads `headroom`). Read the pool of the
|
|
109
|
+
subscription that pays for that column's platform:
|
|
110
|
+
- `headroom`: run that column.
|
|
111
|
+
- `tight`: run that column's Backup when the Backup's pool reads
|
|
112
|
+
`headroom`, else the Cost column.
|
|
113
|
+
- `exhausted`: run that column's Backup.
|
|
114
|
+
|
|
115
|
+
The chosen column (or Backup) is what the printed line names as
|
|
116
|
+
required, with the column named (`… · Balanced column`, or `… ·
|
|
117
|
+
Balanced column's Backup — Claude pool tight`). Any column's model on
|
|
118
|
+
that column's platform, or any column's Backup on its own platform,
|
|
119
|
+
continues too. Say which column you are, and which column the rule
|
|
120
|
+
selected.
|
|
104
121
|
- **Backup.** The table's `Backup` row (roadmaps from roadmodel 0.2.41
|
|
105
122
|
on) names the model to run when the primary is unavailable, with its
|
|
106
123
|
own platform and dial. If you are that backup model on that platform,
|
|
@@ -155,9 +172,13 @@ Intelligence <I>>. This session: <your own model> on <this surface>.`
|
|
|
155
172
|
rollout's `"effort"` is the dial the session runs on, so print it. If
|
|
156
173
|
it differs from the table's, name the value to set. Continue.
|
|
157
174
|
|
|
158
|
-
**Record what ran.**
|
|
159
|
-
|
|
160
|
-
|
|
175
|
+
**Record what ran.** With a ladder table, running one of its columns or
|
|
176
|
+
Backups changes nothing in it: the step's own PR adds one line beneath
|
|
177
|
+
it, `> Ran <YYYY-MM-DD>: <column> — <model · effort>. <why>.` (why: the
|
|
178
|
+
**Runs:** column, or the pool that moved it). When what ran is in none of
|
|
179
|
+
its cells, or the table has a single column, and the model or effort you
|
|
180
|
+
proceed with differs from the table, the step's own PR rewrites its
|
|
181
|
+
Settings table to match (§5), with one line beneath it:
|
|
161
182
|
`> Settings updated <YYYY-MM-DD>: was <old model> · <old effort>. <why>.`
|
|
162
183
|
The roadmap on `main` is the ledger, so it must say what actually ran.
|
|
163
184
|
Never rewrite the table of a step that reads `Complete`: that is history.
|
{roadmodel-0.2.85/roadmodel/data → roadmodel-0.2.86/docs/templates}/phase-roadmap-template.md
RENAMED
|
@@ -737,6 +737,30 @@ that owns it.}}
|
|
|
737
737
|
"Sonnet 4.6 via Claude Code" reads very differently
|
|
738
738
|
from "Sonnet 4.6 via Anthropic API" on the cost line.
|
|
739
739
|
|
|
740
|
+
THE LADDER — the default wherever roadmodel is
|
|
741
|
+
installed. A step's Settings table carries the full
|
|
742
|
+
recommendation /recommend shows: Cost, Balanced and
|
|
743
|
+
Quality, each with its own model, platform and effort
|
|
744
|
+
and a backup from another maker. The roadmap then
|
|
745
|
+
outlives a usage pool's state: when a pool reads
|
|
746
|
+
`tight` or `exhausted`, the step's runner picks
|
|
747
|
+
another column (the **Runs:** line's rule) instead of
|
|
748
|
+
the roadmap being refreshed. Paste the table and its
|
|
749
|
+
**Runs:** line exactly as `roadmodel ladder --category
|
|
750
|
+
<c> --complexity <x> [--novel]` prints them for the
|
|
751
|
+
step's classification (MCP tool: `roadmap_settings`).
|
|
752
|
+
Rows: Model / Backup / Platform / Effort / Thinking /
|
|
753
|
+
Conversation. The Effort cell names each column's own
|
|
754
|
+
dial (`Intelligence Medium` on Codex, `Effort High` on
|
|
755
|
+
Claude Code); a column whose surface has no such
|
|
756
|
+
control reads `—` there. Every model is the latest
|
|
757
|
+
version of its series, never an older one (GPT-6 Sol
|
|
758
|
+
where GPT-6.1 Sol runs, Opus 5 where Opus 5.5 does).
|
|
759
|
+
Set Conversation to **Continue** in every column only
|
|
760
|
+
when the step continues the previous one's session.
|
|
761
|
+
The single-column shapes below are the fallback where
|
|
762
|
+
roadmodel cannot be reached.
|
|
763
|
+
|
|
740
764
|
SETTINGS TABLE SHAPE IS PLATFORM-SPECIFIC. Each
|
|
741
765
|
surface exposes a different tuning UI, and the table
|
|
742
766
|
MUST mirror what the operator will actually see in
|
|
@@ -824,6 +848,24 @@ that owns it.}}
|
|
|
824
848
|
cannot apply.
|
|
825
849
|
-->
|
|
826
850
|
|
|
851
|
+
Settings table — ladder ({{the default wherever roadmodel is
|
|
852
|
+
installed: the table and **Runs:** line `roadmodel ladder
|
|
853
|
+
--category <c> --complexity <x> [--novel]` prints for the
|
|
854
|
+
step's classification, pasted as printed. The three shapes
|
|
855
|
+
after it are the fallback where roadmodel cannot be
|
|
856
|
+
reached}}):
|
|
857
|
+
|
|
858
|
+
| Setting | Cost | Balanced | Quality |
|
|
859
|
+
| ------------ | --------------------------- | --------------------------- | --------------------------- |
|
|
860
|
+
| Model | {{Model}} | {{Model}} | {{Model}} |
|
|
861
|
+
| Backup | {{Backup — platform · dial}} | {{Backup — platform · dial}} | {{Backup — platform · dial}} |
|
|
862
|
+
| Platform | {{Access method}} | {{Access method}} | {{Access method}} |
|
|
863
|
+
| Effort | {{Its dial and level}} | {{Its dial and level}} | {{Its dial and level}} |
|
|
864
|
+
| Thinking | {{On, or — with no toggle}} | {{On, or — with no toggle}} | {{On, or — with no toggle}} |
|
|
865
|
+
| Conversation | **{{New or Continue}}** | **{{New or Continue}}** | **{{New or Continue}}** |
|
|
866
|
+
|
|
867
|
+
**Runs:** {{Cost / Balanced / Quality}} — the user-context's Budget priority is `{{cheap / balanced / best}}`. If that column's usage pool reads `tight`, run its Backup when the Backup's pool has headroom, else the Cost column; if it reads `exhausted`, run its Backup.
|
|
868
|
+
|
|
827
869
|
Settings table — Effort + Thinking variant ({{use this
|
|
828
870
|
shape when PLATFORM is "Claude Code" or any other
|
|
829
871
|
reasoning-dial surface that is not Codex — ChatGPT app,
|
|
@@ -1228,29 +1270,28 @@ hygiene").}}
|
|
|
1228
1270
|
|
|
1229
1271
|
**Deploys:** {{surface → environment, or "nothing beyond merge"}}
|
|
1230
1272
|
|
|
1231
|
-
{{Settings table —
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
|
1244
|
-
|
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
the subscription or API key that pays for it. For Claude
|
|
1273
|
+
{{Settings table — the ladder `roadmodel ladder` prints for
|
|
1274
|
+
this step's classification (the Step 1 guidance), pasted as
|
|
1275
|
+
printed with its **Runs:** line. Where roadmodel cannot be
|
|
1276
|
+
reached, the single-column variant that matches PLATFORM,
|
|
1277
|
+
carrying ONLY the rows that platform's panel exposes.}}
|
|
1278
|
+
|
|
1279
|
+
| Setting | Cost | Balanced | Quality |
|
|
1280
|
+
| ------------ | --------------------------- | --------------------------- | --------------------------- |
|
|
1281
|
+
| Model | {{Model}} | {{Model}} | {{Model}} |
|
|
1282
|
+
| Backup | {{Backup — platform · dial}} | {{Backup — platform · dial}} | {{Backup — platform · dial}} |
|
|
1283
|
+
| Platform | {{Access method}} | {{Access method}} | {{Access method}} |
|
|
1284
|
+
| Effort | {{Its dial and level}} | {{Its dial and level}} | {{Its dial and level}} |
|
|
1285
|
+
| Thinking | {{On, or — with no toggle}} | {{On, or — with no toggle}} | {{On, or — with no toggle}} |
|
|
1286
|
+
| Conversation | **{{New or Continue}}** | **{{New or Continue}}** | **{{New or Continue}}** |
|
|
1287
|
+
|
|
1288
|
+
**Runs:** {{the line `roadmodel ladder` prints}}
|
|
1289
|
+
|
|
1290
|
+
**Model rationale:** 3-5 sentences. With the ladder: the
|
|
1291
|
+
classification it was printed for (PRIMARY and SECONDARY
|
|
1292
|
+
category, complexity, novel or not) and why, then what sets
|
|
1293
|
+
the three columns apart for this step. Otherwise: name the
|
|
1294
|
+
PLATFORM and the subscription or API key that pays for it. For Claude
|
|
1254
1295
|
Code and the other reasoning-dial surfaces, state why
|
|
1255
1296
|
EFFORT is at the stated level and why THINKING is on or
|
|
1256
1297
|
off. For Codex, state why INTELLIGENCE is at the stated
|
|
@@ -1366,23 +1407,21 @@ mechanically rather than left to memory.
|
|
|
1366
1407
|
**Deploys:** nothing beyond merge — the CI matrix entry is live
|
|
1367
1408
|
on merge.
|
|
1368
1409
|
|
|
1369
|
-
{{Settings table —
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
reasoning-dial surface), the Codex variant (Intelligence
|
|
1374
|
-
alone — no Max Mode, no Thinking row), and the Cursor
|
|
1375
|
-
variant (Max Mode alone — no Effort row, no Thinking row).
|
|
1376
|
-
The shape below is the Effort + Thinking variant.}}
|
|
1410
|
+
{{Settings table — the ladder `roadmodel ladder` prints for
|
|
1411
|
+
this step's classification, pasted as printed with its
|
|
1412
|
+
**Runs:** line; where roadmodel cannot be reached, the
|
|
1413
|
+
single-column variant that matches PLATFORM.}}
|
|
1377
1414
|
|
|
1378
|
-
| Setting |
|
|
1379
|
-
| ------------ |
|
|
1380
|
-
| Model | {{Model}}
|
|
1381
|
-
| Backup | {{Backup
|
|
1382
|
-
| Platform | {{Access method
|
|
1383
|
-
| Effort | {{
|
|
1384
|
-
| Thinking | {{On or
|
|
1385
|
-
| Conversation | **New**
|
|
1415
|
+
| Setting | Cost | Balanced | Quality |
|
|
1416
|
+
| ------------ | --------------------------- | --------------------------- | --------------------------- |
|
|
1417
|
+
| Model | {{Model}} | {{Model}} | {{Model}} |
|
|
1418
|
+
| Backup | {{Backup — platform · dial}} | {{Backup — platform · dial}} | {{Backup — platform · dial}} |
|
|
1419
|
+
| Platform | {{Access method}} | {{Access method}} | {{Access method}} |
|
|
1420
|
+
| Effort | {{Its dial and level}} | {{Its dial and level}} | {{Its dial and level}} |
|
|
1421
|
+
| Thinking | {{On, or — with no toggle}} | {{On, or — with no toggle}} | {{On, or — with no toggle}} |
|
|
1422
|
+
| Conversation | **New** | **New** | **New** |
|
|
1423
|
+
|
|
1424
|
+
**Runs:** {{the line `roadmodel ladder` prints}}
|
|
1386
1425
|
|
|
1387
1426
|
**Model rationale:** Why this model fits the mechanical
|
|
1388
1427
|
translation of the prior verify-script template into this
|
|
@@ -1868,7 +1907,12 @@ corresponding row below.
|
|
|
1868
1907
|
|
|
1869
1908
|
## Summary Table
|
|
1870
1909
|
|
|
1871
|
-
<!--
|
|
1910
|
+
<!-- With ladder Settings tables, each step's row shows the
|
|
1911
|
+
column its **Runs:** line names (the Model, Platform
|
|
1912
|
+
and dial of that column); the other two columns live
|
|
1913
|
+
in the step's own table.
|
|
1914
|
+
|
|
1915
|
+
Summary Table column "Reasoning dial" carries
|
|
1872
1916
|
whichever dial the step's PLATFORM exposes, written
|
|
1873
1917
|
in the surface's native vocabulary so reviewers can
|
|
1874
1918
|
audit each row 1:1 against the panel. The per-step
|
|
@@ -1928,6 +1972,8 @@ output format for ease of audit by a roadmodel script.
|
|
|
1928
1972
|
|
|
1929
1973
|
Include this section if your project has a roadmodel
|
|
1930
1974
|
audit tool that consumes the text format. Skip it if not.
|
|
1975
|
+
With ladder Settings tables, each block restates the column
|
|
1976
|
+
the step's **Runs:** line names.
|
|
1931
1977
|
-->
|
|
1932
1978
|
|
|
1933
1979
|
<!-- These blocks follow OUTPUT CONTRACT VERSION 2 of
|
|
@@ -28,6 +28,19 @@ MCP tool, or web service — the operator's editor session already pays for your
|
|
|
28
28
|
reasoning (e.g. Claude Code funded by a flat Max plan = $0 marginal). Calling
|
|
29
29
|
out would add cost for no benefit.
|
|
30
30
|
|
|
31
|
+
**Where `roadmodel` is installed, the Settings table comes from it.** Classify
|
|
32
|
+
the step (step 1 below), then paste the table and **Runs:** line
|
|
33
|
+
`roadmodel ladder --category <c> --complexity <x> [--novel]` prints: the
|
|
34
|
+
Cost / Balanced / Quality picks /recommend shows, each with its effort and a
|
|
35
|
+
backup from another maker. It is local code — no API call, no engine — and it
|
|
36
|
+
reads every usage pool at headroom, so the table outlives a pool's state: when
|
|
37
|
+
a pool reads `tight` or `exhausted`, `/roadmap-step` runs another column
|
|
38
|
+
instead of the roadmap being refreshed. Its models are always the latest
|
|
39
|
+
version of their series (GPT-6.1 Sol, never GPT-6 Sol where both run). The
|
|
40
|
+
project roadmap's phase tables come from `roadmodel ladder --category
|
|
41
|
+
planning --complexity high --phase`. Steps 2–4 are the fallback where
|
|
42
|
+
`roadmodel` cannot be reached.
|
|
43
|
+
|
|
31
44
|
Concretely, for each roadmap step:
|
|
32
45
|
|
|
33
46
|
1. **Classify** the step's task with the selector's
|
{roadmodel-0.2.85/roadmodel/data → roadmodel-0.2.86/docs/templates}/project-roadmap-template.md
RENAMED
|
@@ -38,25 +38,29 @@ STYLE RULES (the AI MUST follow)
|
|
|
38
38
|
own tables in the phase roadmap. Pick it with the model
|
|
39
39
|
selector, quality first. A phase roadmap fixes every step's
|
|
40
40
|
scope, task prompt, acceptance criteria and Settings, so it
|
|
41
|
-
is the phase's highest-leverage session, and it runs once
|
|
42
|
-
|
|
43
|
-
methods reach, at the deepest
|
|
44
|
-
exposes on its platform (`Max`
|
|
45
|
-
`/roadmap-phase` sets by itself),
|
|
46
|
-
`roadmodel` is installed,
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
41
|
+
is the phase's highest-leverage session, and it runs once:
|
|
42
|
+
it runs the Quality column, the strongest `planning` model
|
|
43
|
+
the operator's access methods reach, at the deepest
|
|
44
|
+
reasoning rung that model exposes on its platform (`Max`
|
|
45
|
+
in Claude Code, which `/roadmap-phase` sets by itself),
|
|
46
|
+
with thinking on. Where `roadmodel` is installed, the table
|
|
47
|
+
is the ladder `roadmodel ladder --category planning
|
|
48
|
+
--complexity high --phase` prints, pasted as printed with
|
|
49
|
+
its **Runs:** line: Cost, Balanced and Quality, each with a
|
|
50
|
+
backup from another maker, so a pool that reads `tight` or
|
|
51
|
+
`exhausted` on the day moves the session to another column
|
|
52
|
+
instead of the table being refreshed. It ranks on measured
|
|
53
|
+
benchmarks, so a stale catalog letter cannot steer it, and
|
|
54
|
+
a model the user-context names for these sessions still
|
|
55
|
+
wins. Never `Ultracode`: it reasons at `Extra high` and
|
|
56
|
+
adds parallel agents, which one planning document does not
|
|
57
|
+
need. A rule for roadmap-writing sessions in the
|
|
58
|
+
user-context overrides this default. Without roadmodel, the
|
|
59
|
+
table takes its platform's single-column shape (the phase
|
|
60
|
+
roadmap template's Settings variants) with a Backup row.
|
|
61
|
+
Its Conversation is always **New**. Once the phase roadmap
|
|
62
|
+
exists, the table is history: only a phase not yet written
|
|
63
|
+
is ever re-picked.
|
|
60
64
|
- Every phase carries a `**Status:**` line directly under its
|
|
61
65
|
`### Phase` heading, before its **Goal:** — `Not started`
|
|
62
66
|
when this roadmap is written. The phase's FIRST step flips it
|
|
@@ -242,19 +246,23 @@ dependency graph in §5 is honoured.
|
|
|
242
246
|
**Phase roadmap settings** — the session that writes
|
|
243
247
|
`phase01-roadmap.md` (`/roadmap-phase 1`):
|
|
244
248
|
|
|
245
|
-
| Setting |
|
|
246
|
-
|
|
247
|
-
| Model | <Model
|
|
248
|
-
| Backup | <Backup
|
|
249
|
-
| Platform | <Claude Code, or the access method that pays>
|
|
250
|
-
| Effort | <Deepest
|
|
251
|
-
| Thinking | On
|
|
252
|
-
| Conversation | **New**
|
|
249
|
+
| Setting | Cost | Balanced | Quality |
|
|
250
|
+
|--------------|------------------------|------------------------|------------------------------------------|
|
|
251
|
+
| Model | <Model> | <Model> | <The strongest planning model> |
|
|
252
|
+
| Backup | <Backup — its platform · its dial> | <Backup — its platform · its dial> | <Backup — its platform · its dial> |
|
|
253
|
+
| Platform | <Access method> | <Access method> | <Claude Code, or the access method that pays> |
|
|
254
|
+
| Effort | <Its dial and level> | <Its dial and level> | <Deepest rung there — Effort Max in Claude Code> |
|
|
255
|
+
| Thinking | <On, or — with no toggle> | <On, or — with no toggle> | On |
|
|
256
|
+
| Conversation | **New** | **New** | **New** |
|
|
253
257
|
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
+
**Runs:** Quality — a phase-roadmap session runs Quality (quality first). If that column's usage pool reads `tight`, run its Backup when the Backup's pool has headroom, else the Cost column; if it reads `exhausted`, run its Backup.
|
|
259
|
+
|
|
260
|
+
<!-- The ladder `roadmodel ladder --category planning
|
|
261
|
+
--complexity high --phase` prints, pasted as printed. Without
|
|
262
|
+
roadmodel, a single-column table in its platform's shape from
|
|
263
|
+
the phase roadmap template's Settings variants: Codex carries
|
|
264
|
+
Intelligence and no Thinking row; Cursor carries Max Mode
|
|
265
|
+
alone. -->
|
|
258
266
|
|
|
259
267
|
<One or two sentences: what this phase's roadmap must get
|
|
260
268
|
right, why this model at this rung, and which subscription or
|
|
@@ -298,14 +306,16 @@ key pays for the platform.>
|
|
|
298
306
|
**Phase roadmap settings** — the session that writes
|
|
299
307
|
`phase02-roadmap.md` (`/roadmap-phase 2`):
|
|
300
308
|
|
|
301
|
-
| Setting |
|
|
302
|
-
|
|
303
|
-
| Model | … |
|
|
304
|
-
| Backup | … |
|
|
305
|
-
| Platform | … |
|
|
306
|
-
| Effort | … |
|
|
307
|
-
| Thinking | On |
|
|
308
|
-
| Conversation | **New** |
|
|
309
|
+
| Setting | Cost | Balanced | Quality |
|
|
310
|
+
|--------------|---------|----------|---------|
|
|
311
|
+
| Model | … | … | … |
|
|
312
|
+
| Backup | … | … | … |
|
|
313
|
+
| Platform | … | … | … |
|
|
314
|
+
| Effort | … | … | … |
|
|
315
|
+
| Thinking | … | … | On |
|
|
316
|
+
| Conversation | **New** | **New** | **New** |
|
|
317
|
+
|
|
318
|
+
**Runs:** Quality — <the line `roadmodel ladder` prints>
|
|
309
319
|
|
|
310
320
|
<Why, in one or two sentences.>
|
|
311
321
|
|
|
@@ -333,14 +343,16 @@ key pays for the platform.>
|
|
|
333
343
|
**Phase roadmap settings** — the session that writes
|
|
334
344
|
`phaseNN-roadmap.md` (`/roadmap-phase N`):
|
|
335
345
|
|
|
336
|
-
| Setting |
|
|
337
|
-
|
|
338
|
-
| Model | … |
|
|
339
|
-
| Backup | … |
|
|
340
|
-
| Platform | … |
|
|
341
|
-
| Effort | … |
|
|
342
|
-
| Thinking | On |
|
|
343
|
-
| Conversation | **New** |
|
|
346
|
+
| Setting | Cost | Balanced | Quality |
|
|
347
|
+
|--------------|---------|----------|---------|
|
|
348
|
+
| Model | … | … | … |
|
|
349
|
+
| Backup | … | … | … |
|
|
350
|
+
| Platform | … | … | … |
|
|
351
|
+
| Effort | … | … | … |
|
|
352
|
+
| Thinking | … | … | On |
|
|
353
|
+
| Conversation | **New** | **New** | **New** |
|
|
354
|
+
|
|
355
|
+
**Runs:** Quality — <the line `roadmodel ladder` prints>
|
|
344
356
|
|
|
345
357
|
<Why, in one or two sentences.>
|
|
346
358
|
|
|
@@ -68,9 +68,19 @@ own model> on <this surface>.`
|
|
|
68
68
|
take a rollout from another directory. Where no source names
|
|
69
69
|
the model, print `unverified`, ask me which I picked, and go on with my
|
|
70
70
|
answer.
|
|
71
|
+
- A ladder table (Cost / Balanced / Quality columns): its **Runs:**
|
|
72
|
+
line names the column this session runs (Quality, for a phase
|
|
73
|
+
roadmap). Apply that line's rule to the Usage-pool status table in
|
|
74
|
+
`planning/user-context.md`: a pool that reads `tight` moves the run
|
|
75
|
+
to the column's Backup when the Backup's pool has headroom, else to
|
|
76
|
+
the Cost column; `exhausted` moves it to the column's Backup. That
|
|
77
|
+
column's Model, Platform and dials are the ones checked below; print
|
|
78
|
+
which column it is.
|
|
71
79
|
- You are its Model on its Platform, or a newer version in the same
|
|
72
80
|
line (Opus 5 → Opus 5.5, Fable 5 → Fable 5.1, GPT-6 Sol → GPT-6.1
|
|
73
|
-
Sol): continue, and say so on the line.
|
|
81
|
+
Sol): continue, and say so on the line. In a ladder table, any
|
|
82
|
+
column's model on that column's platform continues too; when it is
|
|
83
|
+
not the column the rule selects, say which one is.
|
|
74
84
|
- You are its Backup on the backup's platform: continue — I have
|
|
75
85
|
switched to it — and say so on the line.
|
|
76
86
|
- Anything else — a different line, an older version, another
|
|
@@ -96,27 +106,31 @@ Carry forward anything `{{PRIOR}}` hands to this phase (its closing
|
|
|
96
106
|
"inherits" line, its Not-in-scope items owned by this phase, and any
|
|
97
107
|
carry-over checklist).
|
|
98
108
|
|
|
99
|
-
For **each step's** Settings table
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
`@planning/
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
109
|
+
For **each step's** Settings table, classify the step first: its
|
|
110
|
+
PRIMARY and SECONDARY category, its complexity, and whether it is novel
|
|
111
|
+
problem-solving (the model selector's Steps 1 and 2 in
|
|
112
|
+
`@planning/model-selector.txt`, against `@planning/user-context.md`).
|
|
113
|
+
Where `roadmodel` is installed, the Settings table is the ladder
|
|
114
|
+
`roadmodel ladder --category <c> --complexity <x> [--novel]` prints for
|
|
115
|
+
that classification (MCP tool: `roadmap_settings`), pasted as printed
|
|
116
|
+
with its **Runs:** line. It carries the full recommendation /recommend
|
|
117
|
+
shows: Cost, Balanced and Quality, each with its own effort and a
|
|
118
|
+
backup from another maker. The step's runner picks the column from the
|
|
119
|
+
usage pools on the day, so the roadmap needs no refresh when a pool
|
|
120
|
+
tightens. Its models are always the latest version of their series.
|
|
121
|
+
The Model rationale explains the classification and what sets the
|
|
122
|
+
columns apart for the step; the Summary Table row and the step's
|
|
123
|
+
selection block restate the column the **Runs:** line names.
|
|
124
|
+
|
|
125
|
+
Where `roadmodel` cannot be reached, run the model selector as the
|
|
126
|
+
engine instead (prices from `@planning/model-tier-cost-scale.md`,
|
|
127
|
+
display rules from `@planning/settings-display.md`) and write the
|
|
128
|
+
single-column variant that matches the step's platform. You are the
|
|
129
|
+
engine — do not call any external API. Honor every availability
|
|
130
|
+
exclusion in the selector, write each step's backup model into its
|
|
131
|
+
Settings table's Backup row with the backup's own platform and dial,
|
|
132
|
+
and never name an older version of a series (GPT-6 Sol where GPT-6.1
|
|
133
|
+
Sol runs, Opus 5 where Opus 5.5 does).
|
|
120
134
|
|
|
121
135
|
Honor the template's style rules: 80-column prose, zero `{{...}}`
|
|
122
136
|
tokens left, `**Status:** Not started` directly under the title and
|