roadmodel 0.2.97__tar.gz → 0.2.99__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.97 → roadmodel-0.2.99}/PKG-INFO +1 -1
  2. {roadmodel-0.2.97/roadmodel/data → roadmodel-0.2.99/docs}/catalog.json +1 -1
  3. {roadmodel-0.2.97 → roadmodel-0.2.99}/docs/claude-commands/roadmap-refresh.md +10 -6
  4. {roadmodel-0.2.97/roadmodel/data → roadmodel-0.2.99/docs/claude-commands}/roadmap-step.md +3 -4
  5. {roadmodel-0.2.97/roadmodel/data → roadmodel-0.2.99/docs/templates}/phase-roadmap-template.md +64 -73
  6. {roadmodel-0.2.97/roadmodel/data → roadmodel-0.2.99/docs/templates}/project-roadmap-template.md +60 -69
  7. {roadmodel-0.2.97 → roadmodel-0.2.99}/docs/templates/prompt-phase-roadmap.md +1 -1
  8. {roadmodel-0.2.97 → roadmodel-0.2.99}/pyproject.toml +1 -1
  9. {roadmodel-0.2.97/docs → roadmodel-0.2.99/roadmodel/data}/catalog.json +1 -1
  10. {roadmodel-0.2.97/docs/templates → roadmodel-0.2.99/roadmodel/data}/phase-roadmap-template.md +64 -73
  11. {roadmodel-0.2.97/docs/templates → roadmodel-0.2.99/roadmodel/data}/project-roadmap-template.md +60 -69
  12. {roadmodel-0.2.97 → roadmodel-0.2.99}/roadmodel/data/prompt-phase-roadmap.md +1 -1
  13. {roadmodel-0.2.97 → roadmodel-0.2.99}/roadmodel/data/roadmap-refresh.md +10 -6
  14. {roadmodel-0.2.97/docs/claude-commands → roadmodel-0.2.99/roadmodel/data}/roadmap-step.md +3 -4
  15. {roadmodel-0.2.97 → roadmodel-0.2.99}/src/roadmodel/__init__.py +1 -1
  16. {roadmodel-0.2.97 → roadmodel-0.2.99}/src/roadmodel/ladder_layout.py +157 -42
  17. {roadmodel-0.2.97 → roadmodel-0.2.99}/src/roadmodel/scoring.py +27 -4
  18. {roadmodel-0.2.97 → roadmodel-0.2.99}/.github/README.md +0 -0
  19. {roadmodel-0.2.97 → roadmodel-0.2.99}/.gitignore +0 -0
  20. {roadmodel-0.2.97 → roadmodel-0.2.99}/LICENSE +0 -0
  21. {roadmodel-0.2.97 → roadmodel-0.2.99}/NOTICE +0 -0
  22. {roadmodel-0.2.97 → roadmodel-0.2.99}/README.md +0 -0
  23. {roadmodel-0.2.97 → roadmodel-0.2.99}/docs/benchmarks.json +0 -0
  24. {roadmodel-0.2.97 → roadmodel-0.2.99}/docs/claude-commands/roadmap-phase.md +0 -0
  25. {roadmodel-0.2.97 → roadmodel-0.2.99}/docs/claude-commands/roadmap-project.md +0 -0
  26. {roadmodel-0.2.97 → roadmodel-0.2.99}/docs/claude-commands/roadmodel-upgrade.md +0 -0
  27. {roadmodel-0.2.97 → roadmodel-0.2.99}/docs/context-windows.json +0 -0
  28. {roadmodel-0.2.97 → roadmodel-0.2.99}/docs/effort-tokens.json +0 -0
  29. {roadmodel-0.2.97 → roadmodel-0.2.99}/docs/model-selector.txt +0 -0
  30. {roadmodel-0.2.97 → roadmodel-0.2.99}/docs/model-tier-cost-scale.md +0 -0
  31. {roadmodel-0.2.97 → roadmodel-0.2.99}/docs/settings-display.md +0 -0
  32. {roadmodel-0.2.97 → roadmodel-0.2.99}/docs/templates/planning-kit-how-to-use.md +0 -0
  33. {roadmodel-0.2.97 → roadmodel-0.2.99}/docs/templates/prompt-project-roadmap.md +0 -0
  34. {roadmodel-0.2.97 → roadmodel-0.2.99}/docs/user-context.example.md +0 -0
  35. {roadmodel-0.2.97 → roadmodel-0.2.99}/hatch_build.py +0 -0
  36. {roadmodel-0.2.97 → roadmodel-0.2.99}/infra/README.md +0 -0
  37. {roadmodel-0.2.97 → roadmodel-0.2.99}/infra/gcp-killswitch/README.md +0 -0
  38. {roadmodel-0.2.97 → roadmodel-0.2.99}/infra/supabase/README.md +0 -0
  39. {roadmodel-0.2.97 → roadmodel-0.2.99}/roadmodel/data/benchmarks.json +0 -0
  40. {roadmodel-0.2.97 → roadmodel-0.2.99}/roadmodel/data/context-windows.json +0 -0
  41. {roadmodel-0.2.97 → roadmodel-0.2.99}/roadmodel/data/effort-tokens.json +0 -0
  42. {roadmodel-0.2.97 → roadmodel-0.2.99}/roadmodel/data/model-selector.txt +0 -0
  43. {roadmodel-0.2.97 → roadmodel-0.2.99}/roadmodel/data/model-tier-cost-scale.md +0 -0
  44. {roadmodel-0.2.97 → roadmodel-0.2.99}/roadmodel/data/planning-kit-how-to-use.md +0 -0
  45. {roadmodel-0.2.97 → roadmodel-0.2.99}/roadmodel/data/prompt-project-roadmap.md +0 -0
  46. {roadmodel-0.2.97 → roadmodel-0.2.99}/roadmodel/data/roadmap-phase.md +0 -0
  47. {roadmodel-0.2.97 → roadmodel-0.2.99}/roadmodel/data/roadmap-project.md +0 -0
  48. {roadmodel-0.2.97 → roadmodel-0.2.99}/roadmodel/data/roadmodel-upgrade.md +0 -0
  49. {roadmodel-0.2.97 → roadmodel-0.2.99}/roadmodel/data/settings-display.md +0 -0
  50. {roadmodel-0.2.97 → roadmodel-0.2.99}/roadmodel/data/user-context.example.md +0 -0
  51. {roadmodel-0.2.97 → roadmodel-0.2.99}/scripts/agent_context.py +0 -0
  52. {roadmodel-0.2.97 → roadmodel-0.2.99}/scripts/agent_rules.py +0 -0
  53. {roadmodel-0.2.97 → roadmodel-0.2.99}/scripts/update_projects.py +0 -0
  54. {roadmodel-0.2.97 → roadmodel-0.2.99}/scripts/updater_lock.py +0 -0
  55. {roadmodel-0.2.97 → roadmodel-0.2.99}/scripts/upgrade_fleet.py +0 -0
  56. {roadmodel-0.2.97 → roadmodel-0.2.99}/scripts/worktree_memory.py +0 -0
  57. {roadmodel-0.2.97 → roadmodel-0.2.99}/src/roadmodel/__main__.py +0 -0
  58. {roadmodel-0.2.97 → roadmodel-0.2.99}/src/roadmodel/cli.py +0 -0
  59. {roadmodel-0.2.97 → roadmodel-0.2.99}/src/roadmodel/config.py +0 -0
  60. {roadmodel-0.2.97 → roadmodel-0.2.99}/src/roadmodel/cost.py +0 -0
  61. {roadmodel-0.2.97 → roadmodel-0.2.99}/src/roadmodel/errors.py +0 -0
  62. {roadmodel-0.2.97 → roadmodel-0.2.99}/src/roadmodel/mcp_server.py +0 -0
  63. {roadmodel-0.2.97 → roadmodel-0.2.99}/src/roadmodel/private_files.py +0 -0
  64. {roadmodel-0.2.97 → roadmodel-0.2.99}/src/roadmodel/providers/__init__.py +0 -0
  65. {roadmodel-0.2.97 → roadmodel-0.2.99}/src/roadmodel/providers/_safety.py +0 -0
  66. {roadmodel-0.2.97 → roadmodel-0.2.99}/src/roadmodel/providers/anthropic.py +0 -0
  67. {roadmodel-0.2.97 → roadmodel-0.2.99}/src/roadmodel/providers/google.py +0 -0
  68. {roadmodel-0.2.97 → roadmodel-0.2.99}/src/roadmodel/providers/openai.py +0 -0
  69. {roadmodel-0.2.97 → roadmodel-0.2.99}/src/roadmodel/providers/openai_compatible.py +0 -0
  70. {roadmodel-0.2.97 → roadmodel-0.2.99}/src/roadmodel/providers/registry.py +0 -0
  71. {roadmodel-0.2.97 → roadmodel-0.2.99}/src/roadmodel/recommend.py +0 -0
  72. {roadmodel-0.2.97 → roadmodel-0.2.99}/src/roadmodel/series.py +0 -0
  73. {roadmodel-0.2.97 → roadmodel-0.2.99}/src/roadmodel/usage.py +0 -0
  74. {roadmodel-0.2.97 → roadmodel-0.2.99}/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.97
3
+ Version: 0.2.99
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
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schema_version": "4",
3
3
  "output_contract_version": 2,
4
- "generated_at_utc": "2026-10-25T19:01:45Z",
4
+ "generated_at_utc": "2026-10-27T17:02:15Z",
5
5
  "source_doc_sha256": {
6
6
  "model-selector.txt": "e2ef6c5a18f05ff952fad9f576720b8fc4637f563f60ce5c077c5501fc21d1b7",
7
7
  "model-tier-cost-scale.md": "dad707e59d0f3e75cf699d81368ba66783cc2a6a0bf625c430e8f884ef844a1c"
@@ -204,9 +204,8 @@ complexity, novel or not; its Model rationale names them), then:
204
204
  fix, not a new pick, so it takes no `Settings updated` line.
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
- 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 /
207
+ ladder` prints it: Cost, Balanced and Quality columns, each rank (**Pick**, **Runner‑up**,
208
+ **Backup**) in a column of its own beside its Model / Platform / Level / AA /
210
209
  Price rows — Level the bare level of the platform's own dial, AA its AA
211
210
  Intelligence Index there (`not measured` where AA has no row), Price its
212
211
  blended list price per 1M tokens times the tokens it uses at that level —
@@ -220,8 +219,12 @@ complexity, novel or not; its Model rationale names them), then:
220
219
  reaches only steps that read `Not started` and phases whose roadmap does
221
220
  not exist: a Complete step's ladder is the record of what ran, an `In
222
221
  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. Then
222
+ records what wrote its roadmap, so those keep their layout. One
223
+ exception reaches every section: a 0.2.95–0.2.97 table, whose fields are
224
+ indented with ` ` (some viewers draw each as a highlighted blob), or
225
+ a 0.2.98 table still carrying ✓, takes the rank column without ✓ wherever
226
+ it stands, Complete steps included, every cell kept. That is a layout fix,
227
+ not a new pick, and takes no `Settings updated` line. Then
225
228
  run `roadmodel rerank <every roadmap file>` (roadmodel 0.2.97 on): it
226
229
  gives each of those ladder tables the ranks this release computes, so a
227
230
  change to how roadmodel ranks reaches every step not yet run. It reads
@@ -238,7 +241,8 @@ complexity, novel or not; its Model rationale names them), then:
238
241
  unless the Pick of the column its **Runs:** line names changed. Without
239
242
  roadmodel, leave every ladder as it is.
240
243
  - A Complete step's ladder keeps its values and its layout (see below),
241
- with its `> Ran` and `> Settings updated` lines beneath it.
244
+ with its `> Ran` and `> Settings updated` lines beneath it, except the
245
+ `&nbsp;`-indent display fix above.
242
246
  - Keep the step's selection block in the Model selection blocks equal
243
247
  to the column its **Runs:** line names (its `BACKUP:` line to that
244
248
  column's Backup), and its Summary Table row's Model to that column's
@@ -110,12 +110,11 @@ 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
- Antigravity). The ✓ in a column's header marks the one its **Runs:**
118
- line names. From roadmodel 0.2.97 the three ranks of a column come from
117
+ Antigravity). From roadmodel 0.2.97 the three ranks of a column come from
119
118
  three makers (a tight pool is a maker's); where too few are funded, a
120
119
  missing rank is the Pick one level lower, its Level marked ↓, and the
121
120
  note line says which classification the ladder was ranked for. A 0.2.94
@@ -758,9 +758,9 @@ that owns it.}}
758
758
  <c> --complexity <x> [--novel]` prints them for the
759
759
  step's classification (MCP tool: `roadmap_settings`).
760
760
  Layout (roadmodel 0.2.95 on): one table whose columns
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
761
+ are Cost, Balanced and Quality. Each rank — **Pick**, **Runner‑up**,
762
+ **Backup** — names the first of its rows from a column of
763
+ its own (blank below it, no `&nbsp;`), beside
764
764
  field rows: Model (bold); Platform; Level, the bare
765
765
  level the platform's own dial sets (`High` is
766
766
  Intelligence High on Codex and Effort High on Claude
@@ -773,7 +773,7 @@ that owns it.}}
773
773
  no Thinking row: Thinking is always On wherever the
774
774
  platform has the toggle, and every AA Index and Price
775
775
  already assumes it. A note line under the table explains
776
- ✓ and Price, and a `**Conversation:**` line closes the
776
+ Price, and a `**Conversation:**` line closes the
777
777
  ladder. Each rank comes from its own maker (roadmodel
778
778
  0.2.97 on), because a tight usage pool is a maker's: the
779
779
  Runner-up is the column's recommendation with the Pick's
@@ -891,29 +891,26 @@ step's classification, pasted as printed. The three table
891
891
  shapes after it are the fallback where roadmodel cannot be
892
892
  reached}}):
893
893
 
894
- | | Cost | Balanced ✓ | Quality |
895
- | -------------------------------- | --------------------- | --------------------- | --------------------- |
896
- | **Pick** | | | |
897
- | &nbsp;&nbsp;&nbsp;&nbsp;Model | **{{Model}}** | **{{Model}}** | **{{Model}}** |
898
- | &nbsp;&nbsp;&nbsp;&nbsp;Platform | {{Platform}} | {{Platform}} | {{Platform}} |
899
- | &nbsp;&nbsp;&nbsp;&nbsp;Level | {{Level}} | {{Level}} | {{Level}} |
900
- | &nbsp;&nbsp;&nbsp;&nbsp;AA | {{AA Index}} | {{AA Index}} | {{AA Index}} |
901
- | &nbsp;&nbsp;&nbsp;&nbsp;Price | {{$ per 1M}} | {{$ per 1M}} | {{$ per 1M}} |
902
- | **Runner‑up** | | | |
903
- | &nbsp;&nbsp;&nbsp;&nbsp;Model | **{{Model}}** | **{{Model}}** | **{{Model}}** |
904
- | &nbsp;&nbsp;&nbsp;&nbsp;Platform | {{Platform}} | {{Platform}} | {{Platform}} |
905
- | &nbsp;&nbsp;&nbsp;&nbsp;Level | {{Level}} | {{Level}} | {{Level}} |
906
- | &nbsp;&nbsp;&nbsp;&nbsp;AA | {{AA Index}} | {{AA Index}} | {{AA Index}} |
907
- | &nbsp;&nbsp;&nbsp;&nbsp;Price | {{$ per 1M}} | {{$ per 1M}} | {{$ per 1M}} |
908
- | **Backup** | | | |
909
- | &nbsp;&nbsp;&nbsp;&nbsp;Model | **{{Model or none}}** | **{{Model or none}}** | **{{Model or none}}** |
910
- | &nbsp;&nbsp;&nbsp;&nbsp;Platform | {{Platform}} | {{Platform}} | {{Platform}} |
911
- | &nbsp;&nbsp;&nbsp;&nbsp;Level | {{Level}} | {{Level}} | {{Level}} |
912
- | &nbsp;&nbsp;&nbsp;&nbsp;AA | {{AA Index}} | {{AA Index}} | {{AA Index}} |
913
- | &nbsp;&nbsp;&nbsp;&nbsp;Price | {{$ per 1M}} | {{$ per 1M}} | {{$ per 1M}} |
914
-
915
- ✓ runs by default. Price: list $ per 1M tokens (3 in : 1 out) × the tokens the
916
- model uses at that level.
894
+ | | | Cost | Balanced | Quality |
895
+ | ------------- | -------- | --------------------- | --------------------- | --------------------- |
896
+ | **Pick** | Model | **{{Model}}** | **{{Model}}** | **{{Model}}** |
897
+ | | Platform | {{Platform}} | {{Platform}} | {{Platform}} |
898
+ | | Level | {{Level}} | {{Level}} | {{Level}} |
899
+ | | AA | {{AA Index}} | {{AA Index}} | {{AA Index}} |
900
+ | | Price | {{$ per 1M}} | {{$ per 1M}} | {{$ per 1M}} |
901
+ | **Runner‑up** | Model | **{{Model}}** | **{{Model}}** | **{{Model}}** |
902
+ | | Platform | {{Platform}} | {{Platform}} | {{Platform}} |
903
+ | | Level | {{Level}} | {{Level}} | {{Level}} |
904
+ | | AA | {{AA Index}} | {{AA Index}} | {{AA Index}} |
905
+ | | Price | {{$ per 1M}} | {{$ per 1M}} | {{$ per 1M}} |
906
+ | **Backup** | Model | **{{Model or none}}** | **{{Model or none}}** | **{{Model or none}}** |
907
+ | | Platform | {{Platform}} | {{Platform}} | {{Platform}} |
908
+ | | Level | {{Level}} | {{Level}} | {{Level}} |
909
+ | | AA | {{AA Index}} | {{AA Index}} | {{AA Index}} |
910
+ | | Price | {{$ per 1M}} | {{$ per 1M}} | {{$ per 1M}} |
911
+
912
+ Price: list $ per 1M tokens (3 in : 1 out) × the tokens the model uses at that
913
+ level.
917
914
 
918
915
  **Conversation:** New
919
916
 
@@ -1333,29 +1330,26 @@ printed with its **Runs:** line. Where roadmodel cannot be
1333
1330
  reached, the single-column variant that matches PLATFORM,
1334
1331
  carrying ONLY the rows that platform's panel exposes.}}
1335
1332
 
1336
- | | Cost | Balanced ✓ | Quality |
1337
- | -------------------------------- | --------------------- | --------------------- | --------------------- |
1338
- | **Pick** | | | |
1339
- | &nbsp;&nbsp;&nbsp;&nbsp;Model | **{{Model}}** | **{{Model}}** | **{{Model}}** |
1340
- | &nbsp;&nbsp;&nbsp;&nbsp;Platform | {{Platform}} | {{Platform}} | {{Platform}} |
1341
- | &nbsp;&nbsp;&nbsp;&nbsp;Level | {{Level}} | {{Level}} | {{Level}} |
1342
- | &nbsp;&nbsp;&nbsp;&nbsp;AA | {{AA Index}} | {{AA Index}} | {{AA Index}} |
1343
- | &nbsp;&nbsp;&nbsp;&nbsp;Price | {{$ per 1M}} | {{$ per 1M}} | {{$ per 1M}} |
1344
- | **Runner‑up** | | | |
1345
- | &nbsp;&nbsp;&nbsp;&nbsp;Model | **{{Model}}** | **{{Model}}** | **{{Model}}** |
1346
- | &nbsp;&nbsp;&nbsp;&nbsp;Platform | {{Platform}} | {{Platform}} | {{Platform}} |
1347
- | &nbsp;&nbsp;&nbsp;&nbsp;Level | {{Level}} | {{Level}} | {{Level}} |
1348
- | &nbsp;&nbsp;&nbsp;&nbsp;AA | {{AA Index}} | {{AA Index}} | {{AA Index}} |
1349
- | &nbsp;&nbsp;&nbsp;&nbsp;Price | {{$ per 1M}} | {{$ per 1M}} | {{$ per 1M}} |
1350
- | **Backup** | | | |
1351
- | &nbsp;&nbsp;&nbsp;&nbsp;Model | **{{Model or none}}** | **{{Model or none}}** | **{{Model or none}}** |
1352
- | &nbsp;&nbsp;&nbsp;&nbsp;Platform | {{Platform}} | {{Platform}} | {{Platform}} |
1353
- | &nbsp;&nbsp;&nbsp;&nbsp;Level | {{Level}} | {{Level}} | {{Level}} |
1354
- | &nbsp;&nbsp;&nbsp;&nbsp;AA | {{AA Index}} | {{AA Index}} | {{AA Index}} |
1355
- | &nbsp;&nbsp;&nbsp;&nbsp;Price | {{$ per 1M}} | {{$ per 1M}} | {{$ per 1M}} |
1356
-
1357
- ✓ runs by default. Price: list $ per 1M tokens (3 in : 1 out) × the tokens the
1358
- model uses at that level.
1333
+ | | | Cost | Balanced | Quality |
1334
+ | ------------- | -------- | --------------------- | --------------------- | --------------------- |
1335
+ | **Pick** | Model | **{{Model}}** | **{{Model}}** | **{{Model}}** |
1336
+ | | Platform | {{Platform}} | {{Platform}} | {{Platform}} |
1337
+ | | Level | {{Level}} | {{Level}} | {{Level}} |
1338
+ | | AA | {{AA Index}} | {{AA Index}} | {{AA Index}} |
1339
+ | | Price | {{$ per 1M}} | {{$ per 1M}} | {{$ per 1M}} |
1340
+ | **Runner‑up** | Model | **{{Model}}** | **{{Model}}** | **{{Model}}** |
1341
+ | | Platform | {{Platform}} | {{Platform}} | {{Platform}} |
1342
+ | | Level | {{Level}} | {{Level}} | {{Level}} |
1343
+ | | AA | {{AA Index}} | {{AA Index}} | {{AA Index}} |
1344
+ | | Price | {{$ per 1M}} | {{$ per 1M}} | {{$ per 1M}} |
1345
+ | **Backup** | Model | **{{Model or none}}** | **{{Model or none}}** | **{{Model or none}}** |
1346
+ | | Platform | {{Platform}} | {{Platform}} | {{Platform}} |
1347
+ | | Level | {{Level}} | {{Level}} | {{Level}} |
1348
+ | | AA | {{AA Index}} | {{AA Index}} | {{AA Index}} |
1349
+ | | Price | {{$ per 1M}} | {{$ per 1M}} | {{$ per 1M}} |
1350
+
1351
+ Price: list $ per 1M tokens (3 in : 1 out) × the tokens the model uses at that
1352
+ level.
1359
1353
 
1360
1354
  **Conversation:** New
1361
1355
 
@@ -1486,29 +1480,26 @@ this step's classification, pasted as printed with its
1486
1480
  **Runs:** line; where roadmodel cannot be reached, the
1487
1481
  single-column variant that matches PLATFORM.}}
1488
1482
 
1489
- | | Cost | Balanced ✓ | Quality |
1490
- | -------------------------------- | --------------------- | --------------------- | --------------------- |
1491
- | **Pick** | | | |
1492
- | &nbsp;&nbsp;&nbsp;&nbsp;Model | **{{Model}}** | **{{Model}}** | **{{Model}}** |
1493
- | &nbsp;&nbsp;&nbsp;&nbsp;Platform | {{Platform}} | {{Platform}} | {{Platform}} |
1494
- | &nbsp;&nbsp;&nbsp;&nbsp;Level | {{Level}} | {{Level}} | {{Level}} |
1495
- | &nbsp;&nbsp;&nbsp;&nbsp;AA | {{AA Index}} | {{AA Index}} | {{AA Index}} |
1496
- | &nbsp;&nbsp;&nbsp;&nbsp;Price | {{$ per 1M}} | {{$ per 1M}} | {{$ per 1M}} |
1497
- | **Runner‑up** | | | |
1498
- | &nbsp;&nbsp;&nbsp;&nbsp;Model | **{{Model}}** | **{{Model}}** | **{{Model}}** |
1499
- | &nbsp;&nbsp;&nbsp;&nbsp;Platform | {{Platform}} | {{Platform}} | {{Platform}} |
1500
- | &nbsp;&nbsp;&nbsp;&nbsp;Level | {{Level}} | {{Level}} | {{Level}} |
1501
- | &nbsp;&nbsp;&nbsp;&nbsp;AA | {{AA Index}} | {{AA Index}} | {{AA Index}} |
1502
- | &nbsp;&nbsp;&nbsp;&nbsp;Price | {{$ per 1M}} | {{$ per 1M}} | {{$ per 1M}} |
1503
- | **Backup** | | | |
1504
- | &nbsp;&nbsp;&nbsp;&nbsp;Model | **{{Model or none}}** | **{{Model or none}}** | **{{Model or none}}** |
1505
- | &nbsp;&nbsp;&nbsp;&nbsp;Platform | {{Platform}} | {{Platform}} | {{Platform}} |
1506
- | &nbsp;&nbsp;&nbsp;&nbsp;Level | {{Level}} | {{Level}} | {{Level}} |
1507
- | &nbsp;&nbsp;&nbsp;&nbsp;AA | {{AA Index}} | {{AA Index}} | {{AA Index}} |
1508
- | &nbsp;&nbsp;&nbsp;&nbsp;Price | {{$ per 1M}} | {{$ per 1M}} | {{$ per 1M}} |
1509
-
1510
- ✓ runs by default. Price: list $ per 1M tokens (3 in : 1 out) × the tokens the
1511
- model uses at that level.
1483
+ | | | Cost | Balanced | Quality |
1484
+ | ------------- | -------- | --------------------- | --------------------- | --------------------- |
1485
+ | **Pick** | Model | **{{Model}}** | **{{Model}}** | **{{Model}}** |
1486
+ | | Platform | {{Platform}} | {{Platform}} | {{Platform}} |
1487
+ | | Level | {{Level}} | {{Level}} | {{Level}} |
1488
+ | | AA | {{AA Index}} | {{AA Index}} | {{AA Index}} |
1489
+ | | Price | {{$ per 1M}} | {{$ per 1M}} | {{$ per 1M}} |
1490
+ | **Runner‑up** | Model | **{{Model}}** | **{{Model}}** | **{{Model}}** |
1491
+ | | Platform | {{Platform}} | {{Platform}} | {{Platform}} |
1492
+ | | Level | {{Level}} | {{Level}} | {{Level}} |
1493
+ | | AA | {{AA Index}} | {{AA Index}} | {{AA Index}} |
1494
+ | | Price | {{$ per 1M}} | {{$ per 1M}} | {{$ per 1M}} |
1495
+ | **Backup** | Model | **{{Model or none}}** | **{{Model or none}}** | **{{Model or none}}** |
1496
+ | | Platform | {{Platform}} | {{Platform}} | {{Platform}} |
1497
+ | | Level | {{Level}} | {{Level}} | {{Level}} |
1498
+ | | AA | {{AA Index}} | {{AA Index}} | {{AA Index}} |
1499
+ | | Price | {{$ per 1M}} | {{$ per 1M}} | {{$ per 1M}} |
1500
+
1501
+ Price: list $ per 1M tokens (3 in : 1 out) × the tokens the model uses at that
1502
+ level.
1512
1503
 
1513
1504
  **Conversation:** New
1514
1505
 
@@ -250,29 +250,26 @@ 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> |
273
-
274
- ✓ runs by default. Price: list $ per 1M tokens (3 in : 1 out) × the tokens the
275
- model uses at that level.
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> |
270
+
271
+ Price: list $ per 1M tokens (3 in : 1 out) × the tokens the model uses at that
272
+ level.
276
273
 
277
274
  **Conversation:** New
278
275
 
@@ -330,29 +327,26 @@ 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 | … | … | … |
353
-
354
- ✓ runs by default. Price: list $ per 1M tokens (3 in : 1 out) × the tokens the
355
- model uses at that level.
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 | … | … | … |
347
+
348
+ Price: list $ per 1M tokens (3 in : 1 out) × the tokens the model uses at that
349
+ level.
356
350
 
357
351
  **Conversation:** New
358
352
 
@@ -384,29 +378,26 @@ 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 | … | … | … |
407
-
408
- ✓ runs by default. Price: list $ per 1M tokens (3 in : 1 out) × the tokens the
409
- model uses at that level.
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 | … | … | … |
398
+
399
+ Price: list $ per 1M tokens (3 in : 1 out) × the tokens the model uses at that
400
+ level.
410
401
 
411
402
  **Conversation:** New
412
403
 
@@ -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.97"
7
+ version = "0.2.99"
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"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schema_version": "4",
3
3
  "output_contract_version": 2,
4
- "generated_at_utc": "2026-10-25T19:01:45Z",
4
+ "generated_at_utc": "2026-10-27T17:02:15Z",
5
5
  "source_doc_sha256": {
6
6
  "model-selector.txt": "e2ef6c5a18f05ff952fad9f576720b8fc4637f563f60ce5c077c5501fc21d1b7",
7
7
  "model-tier-cost-scale.md": "dad707e59d0f3e75cf699d81368ba66783cc2a6a0bf625c430e8f884ef844a1c"