roadmodel 0.2.96__tar.gz → 0.2.98__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.
Files changed (74) hide show
  1. {roadmodel-0.2.96 → roadmodel-0.2.98}/PKG-INFO +1 -1
  2. {roadmodel-0.2.96/roadmodel/data → roadmodel-0.2.98/docs/claude-commands}/roadmap-refresh.md +18 -5
  3. {roadmodel-0.2.96/roadmodel/data → roadmodel-0.2.98/docs/claude-commands}/roadmap-step.md +9 -4
  4. {roadmodel-0.2.96/roadmodel/data → roadmodel-0.2.98/docs/templates}/phase-roadmap-template.md +66 -67
  5. {roadmodel-0.2.96/roadmodel/data → roadmodel-0.2.98/docs/templates}/project-roadmap-template.md +51 -60
  6. {roadmodel-0.2.96 → roadmodel-0.2.98}/docs/templates/prompt-phase-roadmap.md +1 -1
  7. {roadmodel-0.2.96 → roadmodel-0.2.98}/pyproject.toml +1 -1
  8. {roadmodel-0.2.96/docs/templates → roadmodel-0.2.98/roadmodel/data}/phase-roadmap-template.md +66 -67
  9. {roadmodel-0.2.96/docs/templates → roadmodel-0.2.98/roadmodel/data}/project-roadmap-template.md +51 -60
  10. {roadmodel-0.2.96 → roadmodel-0.2.98}/roadmodel/data/prompt-phase-roadmap.md +1 -1
  11. {roadmodel-0.2.96/docs/claude-commands → roadmodel-0.2.98/roadmodel/data}/roadmap-refresh.md +18 -5
  12. {roadmodel-0.2.96/docs/claude-commands → roadmodel-0.2.98/roadmodel/data}/roadmap-step.md +9 -4
  13. {roadmodel-0.2.96 → roadmodel-0.2.98}/src/roadmodel/__init__.py +1 -1
  14. {roadmodel-0.2.96 → roadmodel-0.2.98}/src/roadmodel/cli.py +174 -0
  15. {roadmodel-0.2.96 → roadmodel-0.2.98}/src/roadmodel/ladder_layout.py +295 -30
  16. {roadmodel-0.2.96 → roadmodel-0.2.98}/src/roadmodel/scoring.py +78 -81
  17. {roadmodel-0.2.96 → roadmodel-0.2.98}/.github/README.md +0 -0
  18. {roadmodel-0.2.96 → roadmodel-0.2.98}/.gitignore +0 -0
  19. {roadmodel-0.2.96 → roadmodel-0.2.98}/LICENSE +0 -0
  20. {roadmodel-0.2.96 → roadmodel-0.2.98}/NOTICE +0 -0
  21. {roadmodel-0.2.96 → roadmodel-0.2.98}/README.md +0 -0
  22. {roadmodel-0.2.96 → roadmodel-0.2.98}/docs/benchmarks.json +0 -0
  23. {roadmodel-0.2.96 → roadmodel-0.2.98}/docs/catalog.json +0 -0
  24. {roadmodel-0.2.96 → roadmodel-0.2.98}/docs/claude-commands/roadmap-phase.md +0 -0
  25. {roadmodel-0.2.96 → roadmodel-0.2.98}/docs/claude-commands/roadmap-project.md +0 -0
  26. {roadmodel-0.2.96 → roadmodel-0.2.98}/docs/claude-commands/roadmodel-upgrade.md +0 -0
  27. {roadmodel-0.2.96 → roadmodel-0.2.98}/docs/context-windows.json +0 -0
  28. {roadmodel-0.2.96 → roadmodel-0.2.98}/docs/effort-tokens.json +0 -0
  29. {roadmodel-0.2.96 → roadmodel-0.2.98}/docs/model-selector.txt +0 -0
  30. {roadmodel-0.2.96 → roadmodel-0.2.98}/docs/model-tier-cost-scale.md +0 -0
  31. {roadmodel-0.2.96 → roadmodel-0.2.98}/docs/settings-display.md +0 -0
  32. {roadmodel-0.2.96 → roadmodel-0.2.98}/docs/templates/planning-kit-how-to-use.md +0 -0
  33. {roadmodel-0.2.96 → roadmodel-0.2.98}/docs/templates/prompt-project-roadmap.md +0 -0
  34. {roadmodel-0.2.96 → roadmodel-0.2.98}/docs/user-context.example.md +0 -0
  35. {roadmodel-0.2.96 → roadmodel-0.2.98}/hatch_build.py +0 -0
  36. {roadmodel-0.2.96 → roadmodel-0.2.98}/infra/README.md +0 -0
  37. {roadmodel-0.2.96 → roadmodel-0.2.98}/infra/gcp-killswitch/README.md +0 -0
  38. {roadmodel-0.2.96 → roadmodel-0.2.98}/infra/supabase/README.md +0 -0
  39. {roadmodel-0.2.96 → roadmodel-0.2.98}/roadmodel/data/benchmarks.json +0 -0
  40. {roadmodel-0.2.96 → roadmodel-0.2.98}/roadmodel/data/catalog.json +0 -0
  41. {roadmodel-0.2.96 → roadmodel-0.2.98}/roadmodel/data/context-windows.json +0 -0
  42. {roadmodel-0.2.96 → roadmodel-0.2.98}/roadmodel/data/effort-tokens.json +0 -0
  43. {roadmodel-0.2.96 → roadmodel-0.2.98}/roadmodel/data/model-selector.txt +0 -0
  44. {roadmodel-0.2.96 → roadmodel-0.2.98}/roadmodel/data/model-tier-cost-scale.md +0 -0
  45. {roadmodel-0.2.96 → roadmodel-0.2.98}/roadmodel/data/planning-kit-how-to-use.md +0 -0
  46. {roadmodel-0.2.96 → roadmodel-0.2.98}/roadmodel/data/prompt-project-roadmap.md +0 -0
  47. {roadmodel-0.2.96 → roadmodel-0.2.98}/roadmodel/data/roadmap-phase.md +0 -0
  48. {roadmodel-0.2.96 → roadmodel-0.2.98}/roadmodel/data/roadmap-project.md +0 -0
  49. {roadmodel-0.2.96 → roadmodel-0.2.98}/roadmodel/data/roadmodel-upgrade.md +0 -0
  50. {roadmodel-0.2.96 → roadmodel-0.2.98}/roadmodel/data/settings-display.md +0 -0
  51. {roadmodel-0.2.96 → roadmodel-0.2.98}/roadmodel/data/user-context.example.md +0 -0
  52. {roadmodel-0.2.96 → roadmodel-0.2.98}/scripts/agent_context.py +0 -0
  53. {roadmodel-0.2.96 → roadmodel-0.2.98}/scripts/agent_rules.py +0 -0
  54. {roadmodel-0.2.96 → roadmodel-0.2.98}/scripts/update_projects.py +0 -0
  55. {roadmodel-0.2.96 → roadmodel-0.2.98}/scripts/updater_lock.py +0 -0
  56. {roadmodel-0.2.96 → roadmodel-0.2.98}/scripts/upgrade_fleet.py +0 -0
  57. {roadmodel-0.2.96 → roadmodel-0.2.98}/scripts/worktree_memory.py +0 -0
  58. {roadmodel-0.2.96 → roadmodel-0.2.98}/src/roadmodel/__main__.py +0 -0
  59. {roadmodel-0.2.96 → roadmodel-0.2.98}/src/roadmodel/config.py +0 -0
  60. {roadmodel-0.2.96 → roadmodel-0.2.98}/src/roadmodel/cost.py +0 -0
  61. {roadmodel-0.2.96 → roadmodel-0.2.98}/src/roadmodel/errors.py +0 -0
  62. {roadmodel-0.2.96 → roadmodel-0.2.98}/src/roadmodel/mcp_server.py +0 -0
  63. {roadmodel-0.2.96 → roadmodel-0.2.98}/src/roadmodel/private_files.py +0 -0
  64. {roadmodel-0.2.96 → roadmodel-0.2.98}/src/roadmodel/providers/__init__.py +0 -0
  65. {roadmodel-0.2.96 → roadmodel-0.2.98}/src/roadmodel/providers/_safety.py +0 -0
  66. {roadmodel-0.2.96 → roadmodel-0.2.98}/src/roadmodel/providers/anthropic.py +0 -0
  67. {roadmodel-0.2.96 → roadmodel-0.2.98}/src/roadmodel/providers/google.py +0 -0
  68. {roadmodel-0.2.96 → roadmodel-0.2.98}/src/roadmodel/providers/openai.py +0 -0
  69. {roadmodel-0.2.96 → roadmodel-0.2.98}/src/roadmodel/providers/openai_compatible.py +0 -0
  70. {roadmodel-0.2.96 → roadmodel-0.2.98}/src/roadmodel/providers/registry.py +0 -0
  71. {roadmodel-0.2.96 → roadmodel-0.2.98}/src/roadmodel/recommend.py +0 -0
  72. {roadmodel-0.2.96 → roadmodel-0.2.98}/src/roadmodel/series.py +0 -0
  73. {roadmodel-0.2.96 → roadmodel-0.2.98}/src/roadmodel/usage.py +0 -0
  74. {roadmodel-0.2.96 → roadmodel-0.2.98}/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.96
3
+ Version: 0.2.98
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
@@ -205,8 +205,8 @@ complexity, novel or not; its Model rationale names them), then:
205
205
  - Every ladder, a step's Settings and a phase's Phase roadmap settings
206
206
  alike, takes the table layout (roadmodel 0.2.95 on), as `roadmodel
207
207
  ladder` prints it: Cost, Balanced and Quality columns (the one its
208
- **Runs:** line names marked ✓), each rank a bold group row (**Pick**,
209
- **Runner‑up**, **Backup**) over indented Model / Platform / Level / AA /
208
+ **Runs:** line names marked ✓), each rank (**Pick**, **Runner‑up**,
209
+ **Backup**) in a column of its own beside its Model / Platform / Level / AA /
210
210
  Price rows — Level the bare level of the platform's own dial, AA its AA
211
211
  Intelligence Index there (`not measured` where AA has no row), Price its
212
212
  blended list price per 1M tokens times the tokens it uses at that level —
@@ -220,8 +220,20 @@ complexity, novel or not; its Model rationale names them), then:
220
220
  reaches only steps that read `Not started` and phases whose roadmap does
221
221
  not exist: a Complete step's ladder is the record of what ran, an `In
222
222
  progress` step's is what an agent is running, and a written phase's
223
- records what wrote its roadmap, so those keep their layout. That is a
224
- layout fix, not a new pick, and takes no `Settings updated` line. A
223
+ records what wrote its roadmap, so those keep their layout. One
224
+ exception reaches every section: a 0.2.95–0.2.97 table, whose fields are
225
+ indented with ` ` (some viewers draw each as a highlighted blob),
226
+ takes the rank column wherever it stands, Complete steps included, every
227
+ cell kept. That is a layout fix, not a new pick, and takes no `Settings
228
+ updated` line. Then
229
+ run `roadmodel rerank <every roadmap file>` (roadmodel 0.2.97 on): it
230
+ gives each of those ladder tables the ranks this release computes, so a
231
+ change to how roadmodel ranks reaches every step not yet run. It reads
232
+ the classification from the ladder's note (`Ranked for …`), else from the
233
+ only classification whose ladder has the same Picks. It adds a `Settings
234
+ updated` line where a rank changed. It reports any ladder it cannot
235
+ place: classify that step from its Model rationale and re-run with
236
+ `--hint FILE:SECTION=category/complexity[/novel]`. A
225
237
  ladder written before roadmodel 0.2.93 has Model / Backup / Platform /
226
238
  Effort (/ AA Index) / Thinking rows and no Runner-up: on a step that has
227
239
  not shipped, or a phase not yet written, replace it with the ladder
@@ -230,7 +242,8 @@ complexity, novel or not; its Model rationale names them), then:
230
242
  unless the Pick of the column its **Runs:** line names changed. Without
231
243
  roadmodel, leave every ladder as it is.
232
244
  - A Complete step's ladder keeps its values and its layout (see below),
233
- with its `> Ran` and `> Settings updated` lines beneath it.
245
+ with its `> Ran` and `> Settings updated` lines beneath it, except the
246
+ `&nbsp;`-indent display fix above.
234
247
  - Keep the step's selection block in the Model selection blocks equal
235
248
  to the column its **Runs:** line names (its `BACKUP:` line to that
236
249
  column's Backup), and its Summary Table row's Model to that column's
@@ -110,12 +110,16 @@ the dials and make sure it is set.
110
110
  - **Ladders** (Cost / Balanced / Quality columns, roadmodel 0.2.86
111
111
  on) carry every column the step may run, so pick one before the checks
112
112
  below. From roadmodel 0.2.95 a ladder is one table: Cost, Balanced and
113
- Quality are its columns, and each rank is a bold group row (**Pick**,
114
- **Runner‑up**, **Backup**) over indented Model, Platform, Level, AA and
113
+ Quality are its columns, and each rank (**Pick**, **Runner‑up**,
114
+ **Backup**) sits in a column of its own beside its Model, Platform, Level, AA and
115
115
  Price rows. Level is the bare level of that platform's own dial (`High`
116
116
  is Intelligence High on Codex, Effort High on Claude Code and
117
117
  Antigravity). The ✓ in a column's header marks the one its **Runs:**
118
- line names. A 0.2.94 ladder is three lists instead (`- Pick:`,
118
+ line names. From roadmodel 0.2.97 the three ranks of a column come from
119
+ three makers (a tight pool is a maker's); where too few are funded, a
120
+ missing rank is the Pick one level lower, its Level marked ↓, and the
121
+ note line says which classification the ladder was ranked for. A 0.2.94
122
+ ladder is three lists instead (`- Pick:`,
119
123
  `- Runner-up:`, `- Backup:` under each column's bold heading), and a
120
124
  0.2.93 one a table with rows `1 · Pick`, `2 · Runner-up` and
121
125
  `3 · Backup`, each followed by Platform, Effort, Thinking and AA Index
@@ -129,7 +133,8 @@ the dials and make sure it is set.
129
133
  subscription that pays for that column's Pick's platform:
130
134
  - `headroom`: run that column's Pick.
131
135
  - `tight`: run the first of that column's Runner-up and Backup whose
132
- pool reads `headroom`, else the Cost column's Pick.
136
+ pool reads `headroom` or that is marked ↓ (the Pick one level lower,
137
+ which uses less of the tight pool), else the Cost column's Pick.
133
138
  - `exhausted`: run the first of that column's Runner-up and Backup
134
139
  whose pool reads `headroom`, else its Backup.
135
140
 
@@ -759,8 +759,9 @@ that owns it.}}
759
759
  step's classification (MCP tool: `roadmap_settings`).
760
760
  Layout (roadmodel 0.2.95 on): one table whose columns
761
761
  are Cost, Balanced and Quality (the column the **Runs:**
762
- line names marked ✓). Each rank is a bold group row —
763
- **Pick**, **Runner‑up**, **Backup** — over indented
762
+ line names marked ✓). Each rank — **Pick**, **Runner‑up**,
763
+ **Backup** — names the first of its rows from a column of
764
+ its own (blank below it, no `&nbsp;`), beside
764
765
  field rows: Model (bold); Platform; Level, the bare
765
766
  level the platform's own dial sets (`High` is
766
767
  Intelligence High on Codex and Effort High on Claude
@@ -774,11 +775,18 @@ that owns it.}}
774
775
  platform has the toggle, and every AA Index and Price
775
776
  already assumes it. A note line under the table explains
776
777
  ✓ and Price, and a `**Conversation:**` line closes the
777
- ladder. The ranks follow the column's own rule, not the
778
- AA Index: Cost ranks the cheapest first, so its AA Index
779
- may rise down the column. The Backup reads `none` when
780
- the Runner-up already holds the
781
- only other maker's models. Every model is the latest
778
+ ladder. Each rank comes from its own maker (roadmodel
779
+ 0.2.97 on), because a tight usage pool is a maker's: the
780
+ Runner-up is the column's recommendation with the Pick's
781
+ maker left out, and the Backup leaves out both makers
782
+ above it. Where the user-context funds too few makers, a
783
+ missing rank is the Pick's own model one level lower,
784
+ its Level marked ↓ (it uses less of a tight pool), and
785
+ `none` below the dial's lowest level. The note line
786
+ names the classification the ladder was ranked for. The
787
+ ranks follow the column's own rule, not the AA Index:
788
+ Cost ranks each maker's cheapest adequate option, so its
789
+ AA Index may rise down the column. Every model is the latest
782
790
  version of its series, never an older one (GPT-6 Sol
783
791
  where GPT-6.1 Sol runs, Opus 5 where Opus 5.5 does).
784
792
  Set the Conversation line to **Continue** only when the
@@ -884,26 +892,23 @@ step's classification, pasted as printed. The three table
884
892
  shapes after it are the fallback where roadmodel cannot be
885
893
  reached}}):
886
894
 
887
- | | Cost | Balanced ✓ | Quality |
888
- | -------------------------------- | --------------------- | --------------------- | --------------------- |
889
- | **Pick** | | | |
890
- | &nbsp;&nbsp;&nbsp;&nbsp;Model | **{{Model}}** | **{{Model}}** | **{{Model}}** |
891
- | &nbsp;&nbsp;&nbsp;&nbsp;Platform | {{Platform}} | {{Platform}} | {{Platform}} |
892
- | &nbsp;&nbsp;&nbsp;&nbsp;Level | {{Level}} | {{Level}} | {{Level}} |
893
- | &nbsp;&nbsp;&nbsp;&nbsp;AA | {{AA Index}} | {{AA Index}} | {{AA Index}} |
894
- | &nbsp;&nbsp;&nbsp;&nbsp;Price | {{$ per 1M}} | {{$ per 1M}} | {{$ per 1M}} |
895
- | **Runner‑up** | | | |
896
- | &nbsp;&nbsp;&nbsp;&nbsp;Model | **{{Model}}** | **{{Model}}** | **{{Model}}** |
897
- | &nbsp;&nbsp;&nbsp;&nbsp;Platform | {{Platform}} | {{Platform}} | {{Platform}} |
898
- | &nbsp;&nbsp;&nbsp;&nbsp;Level | {{Level}} | {{Level}} | {{Level}} |
899
- | &nbsp;&nbsp;&nbsp;&nbsp;AA | {{AA Index}} | {{AA Index}} | {{AA Index}} |
900
- | &nbsp;&nbsp;&nbsp;&nbsp;Price | {{$ per 1M}} | {{$ per 1M}} | {{$ per 1M}} |
901
- | **Backup** | | | |
902
- | &nbsp;&nbsp;&nbsp;&nbsp;Model | **{{Model or none}}** | **{{Model or none}}** | **{{Model or none}}** |
903
- | &nbsp;&nbsp;&nbsp;&nbsp;Platform | {{Platform}} | {{Platform}} | {{Platform}} |
904
- | &nbsp;&nbsp;&nbsp;&nbsp;Level | {{Level}} | {{Level}} | {{Level}} |
905
- | &nbsp;&nbsp;&nbsp;&nbsp;AA | {{AA Index}} | {{AA Index}} | {{AA Index}} |
906
- | &nbsp;&nbsp;&nbsp;&nbsp;Price | {{$ per 1M}} | {{$ per 1M}} | {{$ per 1M}} |
895
+ | | | Cost | Balanced ✓ | Quality |
896
+ | ------------- | -------- | --------------------- | --------------------- | --------------------- |
897
+ | **Pick** | Model | **{{Model}}** | **{{Model}}** | **{{Model}}** |
898
+ | | Platform | {{Platform}} | {{Platform}} | {{Platform}} |
899
+ | | Level | {{Level}} | {{Level}} | {{Level}} |
900
+ | | AA | {{AA Index}} | {{AA Index}} | {{AA Index}} |
901
+ | | Price | {{$ per 1M}} | {{$ per 1M}} | {{$ per 1M}} |
902
+ | **Runner‑up** | Model | **{{Model}}** | **{{Model}}** | **{{Model}}** |
903
+ | | Platform | {{Platform}} | {{Platform}} | {{Platform}} |
904
+ | | Level | {{Level}} | {{Level}} | {{Level}} |
905
+ | | AA | {{AA Index}} | {{AA Index}} | {{AA Index}} |
906
+ | | Price | {{$ per 1M}} | {{$ per 1M}} | {{$ per 1M}} |
907
+ | **Backup** | Model | **{{Model or none}}** | **{{Model or none}}** | **{{Model or none}}** |
908
+ | | Platform | {{Platform}} | {{Platform}} | {{Platform}} |
909
+ | | Level | {{Level}} | {{Level}} | {{Level}} |
910
+ | | AA | {{AA Index}} | {{AA Index}} | {{AA Index}} |
911
+ | | Price | {{$ per 1M}} | {{$ per 1M}} | {{$ per 1M}} |
907
912
 
908
913
  ✓ runs by default. Price: list $ per 1M tokens (3 in : 1 out) × the tokens the
909
914
  model uses at that level.
@@ -1326,26 +1331,23 @@ printed with its **Runs:** line. Where roadmodel cannot be
1326
1331
  reached, the single-column variant that matches PLATFORM,
1327
1332
  carrying ONLY the rows that platform's panel exposes.}}
1328
1333
 
1329
- | | Cost | Balanced ✓ | Quality |
1330
- | -------------------------------- | --------------------- | --------------------- | --------------------- |
1331
- | **Pick** | | | |
1332
- | &nbsp;&nbsp;&nbsp;&nbsp;Model | **{{Model}}** | **{{Model}}** | **{{Model}}** |
1333
- | &nbsp;&nbsp;&nbsp;&nbsp;Platform | {{Platform}} | {{Platform}} | {{Platform}} |
1334
- | &nbsp;&nbsp;&nbsp;&nbsp;Level | {{Level}} | {{Level}} | {{Level}} |
1335
- | &nbsp;&nbsp;&nbsp;&nbsp;AA | {{AA Index}} | {{AA Index}} | {{AA Index}} |
1336
- | &nbsp;&nbsp;&nbsp;&nbsp;Price | {{$ per 1M}} | {{$ per 1M}} | {{$ per 1M}} |
1337
- | **Runner‑up** | | | |
1338
- | &nbsp;&nbsp;&nbsp;&nbsp;Model | **{{Model}}** | **{{Model}}** | **{{Model}}** |
1339
- | &nbsp;&nbsp;&nbsp;&nbsp;Platform | {{Platform}} | {{Platform}} | {{Platform}} |
1340
- | &nbsp;&nbsp;&nbsp;&nbsp;Level | {{Level}} | {{Level}} | {{Level}} |
1341
- | &nbsp;&nbsp;&nbsp;&nbsp;AA | {{AA Index}} | {{AA Index}} | {{AA Index}} |
1342
- | &nbsp;&nbsp;&nbsp;&nbsp;Price | {{$ per 1M}} | {{$ per 1M}} | {{$ per 1M}} |
1343
- | **Backup** | | | |
1344
- | &nbsp;&nbsp;&nbsp;&nbsp;Model | **{{Model or none}}** | **{{Model or none}}** | **{{Model or none}}** |
1345
- | &nbsp;&nbsp;&nbsp;&nbsp;Platform | {{Platform}} | {{Platform}} | {{Platform}} |
1346
- | &nbsp;&nbsp;&nbsp;&nbsp;Level | {{Level}} | {{Level}} | {{Level}} |
1347
- | &nbsp;&nbsp;&nbsp;&nbsp;AA | {{AA Index}} | {{AA Index}} | {{AA Index}} |
1348
- | &nbsp;&nbsp;&nbsp;&nbsp;Price | {{$ per 1M}} | {{$ per 1M}} | {{$ per 1M}} |
1334
+ | | | Cost | Balanced ✓ | Quality |
1335
+ | ------------- | -------- | --------------------- | --------------------- | --------------------- |
1336
+ | **Pick** | Model | **{{Model}}** | **{{Model}}** | **{{Model}}** |
1337
+ | | Platform | {{Platform}} | {{Platform}} | {{Platform}} |
1338
+ | | Level | {{Level}} | {{Level}} | {{Level}} |
1339
+ | | AA | {{AA Index}} | {{AA Index}} | {{AA Index}} |
1340
+ | | Price | {{$ per 1M}} | {{$ per 1M}} | {{$ per 1M}} |
1341
+ | **Runner‑up** | Model | **{{Model}}** | **{{Model}}** | **{{Model}}** |
1342
+ | | Platform | {{Platform}} | {{Platform}} | {{Platform}} |
1343
+ | | Level | {{Level}} | {{Level}} | {{Level}} |
1344
+ | | AA | {{AA Index}} | {{AA Index}} | {{AA Index}} |
1345
+ | | Price | {{$ per 1M}} | {{$ per 1M}} | {{$ per 1M}} |
1346
+ | **Backup** | Model | **{{Model or none}}** | **{{Model or none}}** | **{{Model or none}}** |
1347
+ | | Platform | {{Platform}} | {{Platform}} | {{Platform}} |
1348
+ | | Level | {{Level}} | {{Level}} | {{Level}} |
1349
+ | | AA | {{AA Index}} | {{AA Index}} | {{AA Index}} |
1350
+ | | Price | {{$ per 1M}} | {{$ per 1M}} | {{$ per 1M}} |
1349
1351
 
1350
1352
  ✓ runs by default. Price: list $ per 1M tokens (3 in : 1 out) × the tokens the
1351
1353
  model uses at that level.
@@ -1479,26 +1481,23 @@ this step's classification, pasted as printed with its
1479
1481
  **Runs:** line; where roadmodel cannot be reached, the
1480
1482
  single-column variant that matches PLATFORM.}}
1481
1483
 
1482
- | | Cost | Balanced ✓ | Quality |
1483
- | -------------------------------- | --------------------- | --------------------- | --------------------- |
1484
- | **Pick** | | | |
1485
- | &nbsp;&nbsp;&nbsp;&nbsp;Model | **{{Model}}** | **{{Model}}** | **{{Model}}** |
1486
- | &nbsp;&nbsp;&nbsp;&nbsp;Platform | {{Platform}} | {{Platform}} | {{Platform}} |
1487
- | &nbsp;&nbsp;&nbsp;&nbsp;Level | {{Level}} | {{Level}} | {{Level}} |
1488
- | &nbsp;&nbsp;&nbsp;&nbsp;AA | {{AA Index}} | {{AA Index}} | {{AA Index}} |
1489
- | &nbsp;&nbsp;&nbsp;&nbsp;Price | {{$ per 1M}} | {{$ per 1M}} | {{$ per 1M}} |
1490
- | **Runner‑up** | | | |
1491
- | &nbsp;&nbsp;&nbsp;&nbsp;Model | **{{Model}}** | **{{Model}}** | **{{Model}}** |
1492
- | &nbsp;&nbsp;&nbsp;&nbsp;Platform | {{Platform}} | {{Platform}} | {{Platform}} |
1493
- | &nbsp;&nbsp;&nbsp;&nbsp;Level | {{Level}} | {{Level}} | {{Level}} |
1494
- | &nbsp;&nbsp;&nbsp;&nbsp;AA | {{AA Index}} | {{AA Index}} | {{AA Index}} |
1495
- | &nbsp;&nbsp;&nbsp;&nbsp;Price | {{$ per 1M}} | {{$ per 1M}} | {{$ per 1M}} |
1496
- | **Backup** | | | |
1497
- | &nbsp;&nbsp;&nbsp;&nbsp;Model | **{{Model or none}}** | **{{Model or none}}** | **{{Model or none}}** |
1498
- | &nbsp;&nbsp;&nbsp;&nbsp;Platform | {{Platform}} | {{Platform}} | {{Platform}} |
1499
- | &nbsp;&nbsp;&nbsp;&nbsp;Level | {{Level}} | {{Level}} | {{Level}} |
1500
- | &nbsp;&nbsp;&nbsp;&nbsp;AA | {{AA Index}} | {{AA Index}} | {{AA Index}} |
1501
- | &nbsp;&nbsp;&nbsp;&nbsp;Price | {{$ per 1M}} | {{$ per 1M}} | {{$ per 1M}} |
1484
+ | | | Cost | Balanced ✓ | Quality |
1485
+ | ------------- | -------- | --------------------- | --------------------- | --------------------- |
1486
+ | **Pick** | Model | **{{Model}}** | **{{Model}}** | **{{Model}}** |
1487
+ | | Platform | {{Platform}} | {{Platform}} | {{Platform}} |
1488
+ | | Level | {{Level}} | {{Level}} | {{Level}} |
1489
+ | | AA | {{AA Index}} | {{AA Index}} | {{AA Index}} |
1490
+ | | Price | {{$ per 1M}} | {{$ per 1M}} | {{$ per 1M}} |
1491
+ | **Runner‑up** | Model | **{{Model}}** | **{{Model}}** | **{{Model}}** |
1492
+ | | Platform | {{Platform}} | {{Platform}} | {{Platform}} |
1493
+ | | Level | {{Level}} | {{Level}} | {{Level}} |
1494
+ | | AA | {{AA Index}} | {{AA Index}} | {{AA Index}} |
1495
+ | | Price | {{$ per 1M}} | {{$ per 1M}} | {{$ per 1M}} |
1496
+ | **Backup** | Model | **{{Model or none}}** | **{{Model or none}}** | **{{Model or none}}** |
1497
+ | | Platform | {{Platform}} | {{Platform}} | {{Platform}} |
1498
+ | | Level | {{Level}} | {{Level}} | {{Level}} |
1499
+ | | AA | {{AA Index}} | {{AA Index}} | {{AA Index}} |
1500
+ | | Price | {{$ per 1M}} | {{$ per 1M}} | {{$ per 1M}} |
1502
1501
 
1503
1502
  ✓ runs by default. Price: list $ per 1M tokens (3 in : 1 out) × the tokens the
1504
1503
  model uses at that level.
@@ -250,26 +250,23 @@ dependency graph in §5 is honoured.
250
250
  **Phase roadmap settings** — the session that writes
251
251
  `phase01-roadmap.md` (`/roadmap-phase 1`):
252
252
 
253
- | | Cost | Balanced | Quality ✓ |
254
- | -------------------------------- | ------------------- | ------------------- | ------------------- |
255
- | **Pick** | | | |
256
- | &nbsp;&nbsp;&nbsp;&nbsp;Model | **<Model>** | **<Model>** | **<Model>** |
257
- | &nbsp;&nbsp;&nbsp;&nbsp;Platform | <Platform> | <Platform> | <Platform> |
258
- | &nbsp;&nbsp;&nbsp;&nbsp;Level | <Level> | <Level> | <Level> |
259
- | &nbsp;&nbsp;&nbsp;&nbsp;AA | <AA Index> | <AA Index> | <AA Index> |
260
- | &nbsp;&nbsp;&nbsp;&nbsp;Price | <$ per 1M> | <$ per 1M> | <$ per 1M> |
261
- | **Runner‑up** | | | |
262
- | &nbsp;&nbsp;&nbsp;&nbsp;Model | **<Model>** | **<Model>** | **<Model>** |
263
- | &nbsp;&nbsp;&nbsp;&nbsp;Platform | <Platform> | <Platform> | <Platform> |
264
- | &nbsp;&nbsp;&nbsp;&nbsp;Level | <Level> | <Level> | <Level> |
265
- | &nbsp;&nbsp;&nbsp;&nbsp;AA | <AA Index> | <AA Index> | <AA Index> |
266
- | &nbsp;&nbsp;&nbsp;&nbsp;Price | <$ per 1M> | <$ per 1M> | <$ per 1M> |
267
- | **Backup** | | | |
268
- | &nbsp;&nbsp;&nbsp;&nbsp;Model | **<Model or none>** | **<Model or none>** | **<Model or none>** |
269
- | &nbsp;&nbsp;&nbsp;&nbsp;Platform | <Platform> | <Platform> | <Platform> |
270
- | &nbsp;&nbsp;&nbsp;&nbsp;Level | <Level> | <Level> | <Level> |
271
- | &nbsp;&nbsp;&nbsp;&nbsp;AA | <AA Index> | <AA Index> | <AA Index> |
272
- | &nbsp;&nbsp;&nbsp;&nbsp;Price | <$ per 1M> | <$ per 1M> | <$ per 1M> |
253
+ | | | Cost | Balanced | Quality ✓ |
254
+ | ------------- | -------- | ------------------- | ------------------- | ------------------- |
255
+ | **Pick** | Model | **<Model>** | **<Model>** | **<Model>** |
256
+ | | Platform | <Platform> | <Platform> | <Platform> |
257
+ | | Level | <Level> | <Level> | <Level> |
258
+ | | AA | <AA Index> | <AA Index> | <AA Index> |
259
+ | | Price | <$ per 1M> | <$ per 1M> | <$ per 1M> |
260
+ | **Runner‑up** | Model | **<Model>** | **<Model>** | **<Model>** |
261
+ | | Platform | <Platform> | <Platform> | <Platform> |
262
+ | | Level | <Level> | <Level> | <Level> |
263
+ | | AA | <AA Index> | <AA Index> | <AA Index> |
264
+ | | Price | <$ per 1M> | <$ per 1M> | <$ per 1M> |
265
+ | **Backup** | Model | **<Model or none>** | **<Model or none>** | **<Model or none>** |
266
+ | | Platform | <Platform> | <Platform> | <Platform> |
267
+ | | Level | <Level> | <Level> | <Level> |
268
+ | | AA | <AA Index> | <AA Index> | <AA Index> |
269
+ | | Price | <$ per 1M> | <$ per 1M> | <$ per 1M> |
273
270
 
274
271
  ✓ runs by default. Price: list $ per 1M tokens (3 in : 1 out) × the tokens the
275
272
  model uses at that level.
@@ -330,26 +327,23 @@ key pays for the platform.>
330
327
  **Phase roadmap settings** — the session that writes
331
328
  `phase02-roadmap.md` (`/roadmap-phase 2`):
332
329
 
333
- | | Cost | Balanced | Quality ✓ |
334
- | -------------------------------- | ----- | -------- | --------- |
335
- | **Pick** | | | |
336
- | &nbsp;&nbsp;&nbsp;&nbsp;Model | **…** | **…** | **…** |
337
- | &nbsp;&nbsp;&nbsp;&nbsp;Platform | … | … | … |
338
- | &nbsp;&nbsp;&nbsp;&nbsp;Level | … | … | … |
339
- | &nbsp;&nbsp;&nbsp;&nbsp;AA | … | … | … |
340
- | &nbsp;&nbsp;&nbsp;&nbsp;Price | … | … | … |
341
- | **Runner‑up** | | | |
342
- | &nbsp;&nbsp;&nbsp;&nbsp;Model | **…** | **…** | **…** |
343
- | &nbsp;&nbsp;&nbsp;&nbsp;Platform | … | … | … |
344
- | &nbsp;&nbsp;&nbsp;&nbsp;Level | … | … | … |
345
- | &nbsp;&nbsp;&nbsp;&nbsp;AA | … | … | … |
346
- | &nbsp;&nbsp;&nbsp;&nbsp;Price | … | … | … |
347
- | **Backup** | | | |
348
- | &nbsp;&nbsp;&nbsp;&nbsp;Model | **…** | **…** | **…** |
349
- | &nbsp;&nbsp;&nbsp;&nbsp;Platform | … | … | … |
350
- | &nbsp;&nbsp;&nbsp;&nbsp;Level | … | … | … |
351
- | &nbsp;&nbsp;&nbsp;&nbsp;AA | … | … | … |
352
- | &nbsp;&nbsp;&nbsp;&nbsp;Price | … | … | … |
330
+ | | | Cost | Balanced | Quality ✓ |
331
+ | ------------- | -------- | ----- | -------- | --------- |
332
+ | **Pick** | Model | **…** | **…** | **…** |
333
+ | | Platform | … | … | … |
334
+ | | Level | … | … | … |
335
+ | | AA | … | … | … |
336
+ | | Price | … | … | … |
337
+ | **Runner‑up** | Model | **…** | **…** | **…** |
338
+ | | Platform | … | … | … |
339
+ | | Level | … | … | … |
340
+ | | AA | … | … | … |
341
+ | | Price | … | … | … |
342
+ | **Backup** | Model | **…** | **…** | **…** |
343
+ | | Platform | … | … | … |
344
+ | | Level | … | … | … |
345
+ | | AA | … | … | … |
346
+ | | Price | … | … | … |
353
347
 
354
348
  ✓ runs by default. Price: list $ per 1M tokens (3 in : 1 out) × the tokens the
355
349
  model uses at that level.
@@ -384,26 +378,23 @@ model uses at that level.
384
378
  **Phase roadmap settings** — the session that writes
385
379
  `phaseNN-roadmap.md` (`/roadmap-phase N`):
386
380
 
387
- | | Cost | Balanced | Quality ✓ |
388
- | -------------------------------- | ----- | -------- | --------- |
389
- | **Pick** | | | |
390
- | &nbsp;&nbsp;&nbsp;&nbsp;Model | **…** | **…** | **…** |
391
- | &nbsp;&nbsp;&nbsp;&nbsp;Platform | … | … | … |
392
- | &nbsp;&nbsp;&nbsp;&nbsp;Level | … | … | … |
393
- | &nbsp;&nbsp;&nbsp;&nbsp;AA | … | … | … |
394
- | &nbsp;&nbsp;&nbsp;&nbsp;Price | … | … | … |
395
- | **Runner‑up** | | | |
396
- | &nbsp;&nbsp;&nbsp;&nbsp;Model | **…** | **…** | **…** |
397
- | &nbsp;&nbsp;&nbsp;&nbsp;Platform | … | … | … |
398
- | &nbsp;&nbsp;&nbsp;&nbsp;Level | … | … | … |
399
- | &nbsp;&nbsp;&nbsp;&nbsp;AA | … | … | … |
400
- | &nbsp;&nbsp;&nbsp;&nbsp;Price | … | … | … |
401
- | **Backup** | | | |
402
- | &nbsp;&nbsp;&nbsp;&nbsp;Model | **…** | **…** | **…** |
403
- | &nbsp;&nbsp;&nbsp;&nbsp;Platform | … | … | … |
404
- | &nbsp;&nbsp;&nbsp;&nbsp;Level | … | … | … |
405
- | &nbsp;&nbsp;&nbsp;&nbsp;AA | … | … | … |
406
- | &nbsp;&nbsp;&nbsp;&nbsp;Price | … | … | … |
381
+ | | | Cost | Balanced | Quality ✓ |
382
+ | ------------- | -------- | ----- | -------- | --------- |
383
+ | **Pick** | Model | **…** | **…** | **…** |
384
+ | | Platform | … | … | … |
385
+ | | Level | … | … | … |
386
+ | | AA | … | … | … |
387
+ | | Price | … | … | … |
388
+ | **Runner‑up** | Model | **…** | **…** | **…** |
389
+ | | Platform | … | … | … |
390
+ | | Level | … | … | … |
391
+ | | AA | … | … | … |
392
+ | | Price | … | … | … |
393
+ | **Backup** | Model | **…** | **…** | **…** |
394
+ | | Platform | … | … | … |
395
+ | | Level | … | … | … |
396
+ | | AA | … | … | … |
397
+ | | Price | … | … | … |
407
398
 
408
399
  ✓ runs by default. Price: list $ per 1M tokens (3 in : 1 out) × the tokens the
409
400
  model uses at that level.
@@ -71,7 +71,7 @@ own model> on <this surface>.`
71
71
  answer.
72
72
  - A ladder (Cost / Balanced / Quality columns): each column ranks a
73
73
  Pick, a Runner-up and a Backup — from roadmodel 0.2.95 a bold group
74
- row each, over indented Model / Platform / Level / AA / Price rows
74
+ label each, beside its Model / Platform / Level / AA / Price rows
75
75
  (0.2.94 wrote them as `- Pick:` lists, 0.2.93 as `1 · Pick` rows,
76
76
  and older ladders Model / Backup rows with no Runner-up) — and its
77
77
  **Runs:** line names the
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "roadmodel"
7
- version = "0.2.96"
7
+ version = "0.2.98"
8
8
  description = "BYO-key CLI that recommends the right AI model, platform, and settings for a prompt."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"