Skip to content

v0.36.0

Latest

Choose a tag to compare

@github-actions github-actions released this 10 Aug 22:55
16b9b93

Say the same thing everywhere, and stop pointing at a CLI that died. Two halves. The fleet had
been quietly planning work around Gemini CLI since Google closed it to individual accounts on
2026-06-18 — the probe failed, the fallback swallowed it, and nothing ever looked broken; it now
runs on Antigravity (#615). And the four-block closing summary that v0.35.0 shipped as a renderer
nobody consumed is now attached to all seven typed commands, generated from that renderer so the
two cannot drift, with the docs-freshness gate finally checking more than the README (#493).

Fixed

  • The fleet was routing work to a Gemini CLI that can no longer authenticate (#615). Google
    shut the "Sign in with Google" path for individual accounts on 2026-06-18: gemini -p now
    answers IneligibleTierError: UNSUPPORTED_CLIENT and points at Antigravity. Get-CliProbeStatus
    read that as auth and Resolve-LaunchCli degraded the issue to claude, so nothing crashed —
    which is exactly why it went unnoticed. Meanwhile Fleet-Plan.ps1 advertised gemini as the
    FIRST choice for Docs and the second for Chore / size S–XS work: the two most common buckets on
    the board were being planned around a CLI that could never run.

    The gemini adapter is replaced by an antigravity one (agy), Google's official successor,
    which authenticates with the same personal account — no API key, no billing. Its probe was
    measured at ~7s, well inside the 30s Invoke-CliProbe timeout. Unlike the other adapters it is
    pointed at the briefing file instead of receiving its content as an argument, because
    PowerShell drops embedded quotes when passing an argument to a native .exe and a briefing is
    full of backticks and quotes; --dangerously-skip-permissions is mandatory, since without it
    agy soft-denies its own file read in headless mode and the session would start blind.

    Two things the rename alone would have missed. Find-FleetOrphans queried pwsh.exe and
    node.exe only — true while every CLI ran under node, but agy.exe is a Go binary, so an
    escaped Antigravity session would have been invisible to the sweep and reported clean while it
    kept running; the filter now includes it (no false-positive risk: the pure core only ever
    considers a process whose command line names a fleet issue artifact). And agy drops an
    .antigravitycli/ working directory into whatever repo it runs in, including a fleet worktree,
    so that path is now gitignored.

    Each new test was verified by reintroducing the defect and watching it go red: dropping
    agy.exe from the filter, dropping the headless flag, and putting gemini back in the routing
    table each fail their assertion.

  • The docs-freshness CI gate only ever looked at the README (#493). It regenerated the derived
    regions in place and then ran git diff --exit-code -- README.md. Scoped to that one file, the
    step rewrote a drifted commands/*.md and then never compared it — so command-file drift passed
    green. It now runs Update-Docs.ps1 -Check, which writes nothing and names whichever region
    moved. Measured on a one-word drift in a command file: the new step exits 1, the old one exited 0.

    Found while reviewing this PR, against a changelog line of its own claiming the gate already
    covered it. It did not.

Added

  • Every typed command now carries the four-block closing summary (#493). v0.35.0 shipped the
    renderer (#492) and nothing consumed it: not one command file or script referenced it, so in
    practice each flow still ended however its author felt like ending it. The contract is now
    attached to all seven command surfaces (/board, /docs, /expert, /knowledge, /scan,
    /skills, /tools) as a generated region, and the generator reads the four headings — and each
    block's when-empty sentence — from the renderer itself, so the text an agent is told to write and
    the text a script prints cannot drift apart.

    Hand-copying the same paragraph into seven prompts would have re-created the drift #200/#202
    already fixed for the README, so this reuses that machinery instead: Update-Docs.ps1 owns a
    third derived region, <!-- BEGIN:closing-summary -->, and the docs-freshness CI gate now fails
    when a command file drifts from the renderer (see Fixed below — it did not, until this PR). A
    command file missing the region is a failure rather than a skip, and one whose region is
    malformed says so specifically instead of reporting an absent marker — otherwise a newly added
    command would ship with no closing contract and nothing would notice.

    Asserted rather than eyeballed, per the epic's Definition of Done: CommandSurface.Tests.ps1
    checks every command file for the region, all four headings and all four when-empty sentences,
    reading the expected values from the renderer so the test can never become a stale second copy,
    and Get-CommandRegionPlan unit-tests the generator's own decision (missing, malformed, stale,
    idempotent, per-file newline). Verified by breaking it three ways — deleting one file's region
    fails 3 tests and the gate; renaming one label in the renderer fails 7 tests and marks all seven
    files stale; dropping the missing-file bookkeeping lets a region-less command pass silently and
    turns 3 tests red.