Skip to content

Releases: nathanramoscfa/roadmodel

v0.2.86

Choose a tag to compare

@github-actions github-actions released this 15 Oct 02:42
35d6ef3

[0.2.86] — 2026-10-14

  • A recommendation names the latest version of a series. The operator's rule is GPT-6.1 Sol, never GPT-6 Sol where both run, and Opus 5.5, never Opus 5. It is not a benchmark judgment, so it holds even where the older version scores higher or costs less. It is enforced in code at every surface that recommends:
    • The scorer drops an older version from every platform that offers a newer one, so /recommend, roadmodel score and the ladder never pick it.
    • The selector the engines read lists only the latest version per access method: the /recommend prompt, the planning kit's model-selector.txt and the MCP catalog.
    • A parameter count (20b, 120b) names a different model, not a version. roadmodel backup's MODEL line now names the newest version unconditionally.
  • Roadmap Settings carry the full ladder. roadmodel ladder --category C --complexity X [--novel] [--phase] (MCP: roadmap_settings) prints a step's or phase's Settings table as /recommend shows it. The three columns are Cost, Balanced and Quality, each with its effort and a backup from another maker, read with every usage pool at headroom. A Runs: line names the column the step runs: the Budget priority's, or Quality for a phase-roadmap session.
    • /roadmap-step picks the column from the pools on the day. A tight pool moves the run to the column's Backup (or the Cost column), and an exhausted one to its Backup. A change in pool state no longer means refreshing roadmaps.
    • /roadmap-phase, /roadmap-project and /roadmap-refresh write the ladder wherever roadmodel is installed. The refresh converts single-column tables.
  • The roadmodel on PATH is upgraded too. A pipx or uv tool install is the one agent sessions call, and neither a project env nor the MCP env reaches it. One sat at 0.2.83 while the fleet ran 0.2.85, so roadmap writers there fell back to the selector's letters. roadmodel-upgrade now upgrades it and reports a PATH roadmodel: line.

v0.2.85

Choose a tag to compare

@github-actions github-actions released this 14 Oct 19:32
5109039

[0.2.85] — 2026-10-14

  • A roadmap step runs the newer version of its model. roadmodel backup now checks the step's own model first. A newer release in the same series (GPT-6 Sol → GPT-6.1 Sol) replaces it when that release is from the same maker, on the same platform and no dearer, and, at the step's effort, is level in the step's category and no lower on the AA Intelligence Index. The command prints the replacement on a MODEL line, then that model's backup. /roadmap-phase and /roadmap-refresh write the MODEL cell into the step's Settings.
    • Why: the selector's letters are measured at each model's top effort. At max, a 3-point SciCode gap letters GPT-6 Sol S in coding and GPT-6.1 Sol A. So a phase roadmap put GPT-6 Sol on its Medium Codex steps, though at Medium GPT-6.1 Sol leads it on Terminal-Bench 4.0 (48.0% vs 18.7%), HLE and the AA Index at the same price.

v0.2.84

Choose a tag to compare

@github-actions github-actions released this 14 Oct 18:40
e59281f

[0.2.84] — 2026-10-14

  • Measured models are scored on the measurement. In coding, planning, agentic, long-context and knowledge, a model's S→D letter is derived from the very benchmark the scorer reads, so blending it in (30%) only added a cliff at each band edge: GPT-6 Astra's 52.7 on the AA Index read S and GPT-6.1 Sol's 51.8 read A, six quality points for 0.9 of index. A measured model's quality there is now its evidence alone; letters stand in only where AA has not measured. Speed keeps its blend (its letter is an estimate, not a reading of tokens/s). On the maintainer's context 12 of 84 picks move, each to the model the benchmarks favour at the effort it runs.
  • Near-tied backups go to the cheaper model. Where the benchmarks cannot tell two cross-maker substitutes apart (level both ways in the category and within the AA Index's noise band), the backup is the cheaper, at any budget posture, on /recommend and in roadmodel score. GPT-6 Astra backs up 5 of 84 rungs instead of 30, all where it leads beyond the noise; GPT-6.1 Sol takes the rest at a quarter of the price.
  • roadmodel backup. Names the backup for a pick made outside the ladder (a roadmap step's model and effort) by the same rule, and prints the Settings Backup cell. /roadmap-phase and /roadmap-refresh copy it into each step's Backup row where roadmodel is installed, instead of the selector prose's letter-first choice.

v0.2.83

Choose a tag to compare

@github-actions github-actions released this 13 Oct 00:37

[0.2.83] — 2026-10-12

  • Private automation boundaries. Bundled context synchronization verifies its private destination before transferring saved context. Local credentials, job logs and diagnostic outputs use protected transport and file handling; authenticated maintenance clients reject redirects.

v0.2.82

Choose a tag to compare

@github-actions github-actions released this 12 Oct 19:57

[0.2.82] — 2026-10-12

Security

  • Private Windows files and bounded context parsing. Private writes use
    protected Windows ACLs and validated directory handles. Atomic replacement,
    appending and lock access preserve the private-file boundary. Existing
    broader log and lock permissions require explicit repair while their old
    processes are stopped; existing memory migration repairs selected files
    with exclusive access. Global rule adapters and backups use the same helper.
  • Context tier and jurisdiction parsing use linear scans. Concurrent updater
    startup acquires the file lock before writing its initial marker.

v0.2.81

Choose a tag to compare

@github-actions github-actions released this 12 Oct 18:47

[0.2.81] — 2026-10-12

Security

  • Private exports and released updater resources. Planning-kit exports
    validate destinations and Git protection before writing private context.
    Private files use atomic writes and owner-only POSIX modes. Upgrades install
    commands and companions from the published wheel, with isolated Python
    execution. The shell wrapper uses a released CLI by default; reviewed
    checkout mode remains available through --local, and --ref is retired.
  • Provider errors and SDK diagnostics keep credentials and request content out
    of CLI/MCP error output. Hosted requests make one attempt with finite
    timeouts. MCP tools bound input, context and output sizes, including errors
    from malformed protocol messages. Builds use an explicit file inventory
    and reject symlinked inputs.

Added

  • Authenticated usage-pool sync from the Mac into the saved web profile.
    Only normalized observations are uploaded using a rotating per-user session
    in Keychain. Settings saves preserve pool states, and both recommendation
    lanes apply them to scoring and funding annotations. Stale or missing
    observations preserve saved states; known subscription resets clear them.

v0.2.80

Choose a tag to compare

@github-actions github-actions released this 10 Oct 17:19

[0.2.80] — 2026-10-10

Fixed

  • Metered pools affect their funded platforms and empty reserves stop funding.
    Generic Claude subscription, Codex weekly/five-hour and Antigravity rows map
    to their funded surfaces. Split windows use the worst live state, while
    Claude's cap never consumes the independent Antigravity allowance. An
    exhausted OpenRouter prepaid reserve makes its key unfunded until credits
    are restored; a reset date cannot refill a fixed reserve. The CLI, MCP and
    recommender scoring share these checks. Hourly stdlib collectors and a
    preserved Claude status line supply private usage observations; stale or
    mismatched-account data retains the declared state.

  • /roadmap-step and /roadmap-phase no longer stop a Codex session on a
    correctly picked model.
    Codex's instructions tell the agent only that it is
    "based on GPT-6", so the settings gate could not tell GPT-6 Sol from any
    other GPT-6 and stopped with "cannot verify the required Sol model" even
    with Sol selected (pyeconomics Step 2, 2026-10-09). The gate now has the
    agent read its exact model and effort from the session's rollout file
    (turn_context.model / .effort), asks the operator when no source names
    the model instead of stopping, and lists GPT-6 Sol → GPT-6.1 Sol as a newer
    version in the same line, as it already did for Opus and Fable.

  • The Codex rollout lookup works from PowerShell on Windows. There the
    rollout records the repo as e:\Code\… while the shell prints E:\Code\…
    or E:/Code/…, so a literal path match found no rollout and the gate fell
    back to asking. The live session also holds its rollout open, so .NET's
    ReadAllText fails on it. The gate now names the Windows Codex home,
    compares the paths case- and slash-insensitively, says which readers can
    share the open file, and never falls back to a rollout from another
    directory, because sessions in other repos write there too.

  • A pick's Score charges it for the tokens it draws at its effort. The
    /recommend matrix read a pick's AA Index at its effort but compared it with
    the bare list price, so a higher effort was credited its higher index for
    free. The Score now prices the pick as the frontier chart places it: the
    blended price times its measured token use there. The breakdown card shows
    that price and why. For the agentic/high picks: GPT-6.1 Sol · Medium
    +12.1 → +16.9, Sonnet 5.5 · Extra high +16.2 → +16.8, Opus 5.5 · Extra
    high +11.6 → +11.3. /models still scores each model at list price and its
    labelled top effort. Web only.

v0.2.79

Choose a tag to compare

@github-actions github-actions released this 09 Oct 15:23

[0.2.79] — 2026-10-09

Changed

  • Every AA figure names the effort it was measured at.
    • /models shows the headline AA Index with its effort ("57.6 Max"), in the
      cell, the hover card and the screen-reader label. The headline is each
      model's top measured effort.
    • The /recommend matrix rates each pick at the effort it runs.
      update/derive_ratings.py --write now also writes
      docs/effort-ratings.json: the letters a model's run at each of its other
      measured efforts earns. That run takes its headline row's place among the
      live models, and derive() is unchanged. Both crons commit the file, and
      --check fails when it is stale.
    • For example, Sonnet 5.5 at Medium reads A in coding, planning, agentic and
      long-context and B in knowledge, where its headline (Max) reads S, S, S,
      A and A. A category AA did not measure at that effort keeps its headline
      letter.
    • Display only: the scorer already reads evidence at the pick's effort.

Fixed

  • A model's headline benchmark row is its top measured effort. That was
    true of 55 of 56 models; AA's default row for Grok 4.6 is High although it
    measured XHigh. update/fetch_aa_benchmarks.py now re-bases any such model
    on its top effort, and the default row becomes one of its levels. Grok 4.6
    reads 44.2 at XHigh (was 44.3 at High). By rank, Opus 5 moves up to an S
    in coding, and the generated prose follows. No ladder row changes.
  • Muse Spark 1.3 is token-measured (#1028): 2.449 at XHigh and at Max,
    replacing the uniform 1.6 and 2.5. No ladder row changes.

v0.2.78

Choose a tag to compare

@github-actions github-actions released this 09 Oct 05:19

[0.2.78] — 2026-10-09

Changed

  • Each model's efforts are priced by the tokens it was measured drawing
    there.
    The frontier placed a model at an effort at its blended price
    times one table for every model (low 0.6 … max 2.5). A per-token price is
    the same at every effort, so what an effort costs is the tokens it draws,
    and measured, models differ in that more than efforts do:

    • Sonnet 5.5 draws about the same tokens from low to xhigh, then 3x at max.
    • At medium it draws 1.7x what GPT-6.1 Sol does.
    • GPT-6 Luna draws the same at low and medium.

    update/measure_effort_tokens.py runs every model AA measured at several
    efforts through eight short tasks, twice, at each of those efforts: Claude
    models on Claude Code, the GPT models a ChatGPT sign-in runs on Codex, the
    rest on OpenRouter. OpenRouter's figures are scaled by a measured lane
    factor (0.78: the same model draws about 1.3x the tokens through the bare
    API). Each model's figures are fitted to rise with its effort.
    docs/effort-tokens.json (bundled) holds the result for 29 models;
    scoring.token_multiplier reads it, and the uniform table remains the
    fallback. AA's own token counts are not in its API, and its terms forbid
    scraping them. The first run cost $9.24 on OpenRouter.

    For the operator's context, 7 of 28 ladder rows change:

    • COST on the low rows runs GPT-6 Luna at medium.
    • BALANCED on low coding, planning and knowledge work is GPT-6.1 Sol at
      medium.

    For an anonymous visitor, 11 rows change. Among them, Grok 4.7 (3.6x a
    typical model's tokens) leaves COST on high coding, planning and
    long-context work. The agentic/high row stands: GPT-6.1 Sol · Medium,
    Sonnet 5.5 · Extra high, Opus 5.5 · Extra high.

  • QUALITY may run its model at a higher effort that left the frontier.
    Where a category rates a model's efforts alike (multimodal), measured
    token use pushed Gemini 3.8 Flash's medium and high off the AA-Index
    frontier, which would have left QUALITY at Flash · Low. QUALITY now also
    reads the top point's own model at each higher effort that meets the bar
    (_higher_efforts); speed work keeps the lower, faster effort. Under the
    uniform table this changes no row.

  • The daily benchmark refresh keeps one issue open, "chore(effort-tokens):
    model efforts not yet token-measured", while AA measures a model or effort
    that the file lacks. It closes the issue when there are none.

v0.2.77

Choose a tag to compare

@github-actions github-actions released this 08 Oct 04:04

[0.2.77] — 2026-10-07

Fixed

  • A ladder table is built once per user-context. The hosted service
    rebuilt the 28-row table on every request, and the scorer re-parsed the
    catalog JSON about a thousand times while doing it (cost.model_provider
    loaded it per candidate). For a well-funded signed-in user that cost about
    a second a request, enough to push signed-in latency over the Phase 4.5
    bar. model_provider now takes the caller's catalog, and
    recommend_structured_ladder keeps each context's table for the life of
    the process (a cold build 0.34 s -> 0.14 s locally; a warm one free).