Skip to content

fix(fix): label the Gemini provider experimental - #37

Merged
lucasbraum merged 7 commits into
mainfrom
site/landing
Oct 7, 2026
Merged

lucasbraum merged 7 commits into
mainfrom
site/landing

Conversation

@lucasbraum

@lucasbraum lucasbraum commented Oct 7, 2026 •

Copy link
Copy Markdown
Collaborator

Labels the Gemini provider experimental in the CLI and the docs.

  • fix --help: --provider reads "anthropic, openai or gemini (experimental)".
  • The provider line fix prints: LLM: gemini (experimental) / gemini-3.8-flash · budget $1.00.
  • README and docs/cli.md: "Assisted fixes support Anthropic, OpenAI and Gemini (experimental)".
  • The test that selects each provider from its key checks the label. There's a patch changeset.

Why: Gemini's evaluation runs on the storefront fixture failed on service errors (HTTP 503/429; docs/provider-evaluation.md), so its migration quality isn't established yet.

The landing page that this PR first carried moved to its own repository, so it publishes at the root, https://uptide-dev.github.io: uptide-dev/uptide-dev.github.io#1, with its history. The last commit here removes site/, the Pages workflow, its test and its screenshots. The earlier commits are left as they were, not rewritten. Net diff against main: 5 files, Gemini only.

Checks: cli tests 51 passed in cli.test.ts; biome clean; changeset check ok; every commit signed off.

🤖 Generated with Claude Code

lucasbraum and others added 6 commits October 6, 2026 15:21
A static page in site/: tagline, list/check/fix/pr, real output (list on
supabase/supabase at 9d1661d with uptide 0.4.0, check and fix on the
storefront fixture as in the README), verification, safety, keys and
privacy (the CLI's privacy text verbatim), what is supported today, and
how to contribute a pack. Same design tokens as the HTML report, light
and dark, self-hosted OFL fonts, no external requests.

Also a 1280x640 social preview (og.png) and its source.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Jfs6nzMrWv3mgXR2tdoiRb
Signed-off-by: Lucas Braum <lucasbraum@gmail.com>
In fix --help, the LLM line fix prints and the docs. Its evaluation runs on the storefront
fixture failed on service errors (docs/provider-evaluation.md).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Lucas Braum <lucasbraum@gmail.com>
…n npm; Gemini experimental

- .github/workflows/pages.yml publishes site/ as it is on a push to main that changes it
  (upload-pages-artifact, deploy-pages; contents read, pages write, id-token write). The
  canonical URL, og:url, og:image and twitter:image come from its one SITE_URL
  (https://uptide-dev.github.io/uptide/), written into %SITE_URL% at deploy time.
- list on supabase/supabase at 9d1661d, rerun with npx uptide@latest (0.4.0): 20s, 12
  urgent (a new @modelcontextprotocol/sdk advisory leads), ai 7.0.130, @ai-sdk/openai
  4.0.86; the terminal blocks, the urgent tile, the hero note and the footnote together.
  Counts (273/116/100/57/15/53) and check on storefront are unchanged.
- The providers row says Gemini is experimental, as the CLI now does.
- A test keeps every font next to its OFL license, the URL placeholder, and no request to
  another origin.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Lucas Braum <lucasbraum@gmail.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Lucas Braum <lucasbraum@gmail.com>
list and check with --html --open, fix with --pr --yes; the fix row says what --pr --yes
does, and the pr row is for a branch fix left local. The terminal blocks keep the commands
as they were run. On a phone the hero's copy button is an icon, so the command fits one line.
Screenshots retaken.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Lucas Braum <lucasbraum@gmail.com>
…PI key

The fix row in How it works shows the two passes: the pack's rules (no LLM, no key, the
same on every run), then the agent for what rules can't do, which needs ANTHROPIC_API_KEY,
OPENAI_API_KEY or GEMINI_API_KEY (experimental); without a key the rules still run and the
rest is listed, and a dependency with no pack needs the key. list and check say they need
no LLM and no key. On a phone every copy button is an icon and a command never wraps
inside a flag. Screenshots retaken.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Lucas Braum <lucasbraum@gmail.com>
It publishes at the root there (https://uptide-dev.github.io): site/, its Pages workflow,
its test and its screenshots now live in that repository, with their history. This pull
request keeps the Gemini label only.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Lucas Braum <lucasbraum@gmail.com>
@lucasbraum lucasbraum changed the title feat(site): landing page on GitHub Pages, numbers from uptide 0.4.0, Gemini experimental fix(fix): label the Gemini provider experimental Oct 7, 2026
@lucasbraum
lucasbraum merged commit 3e7f744 into main Oct 7, 2026
6 checks passed
@lucasbraum
lucasbraum deleted the site/landing branch October 7, 2026 05:19
lucasbraum added a commit that referenced this pull request Oct 7, 2026
… writing to /repo (#40)

## What and why

Two tests failed in a cloud container, which runs as root with
`NODE_PATH` set, but not in CI. **CI on `main` is green.** The latest
run on 3e7f744 (#37) passed, and the last red run on
`main` was 089f7b9 (#34), already followed by green
runs. So no merge let a red `main` through. Both failures were
environment-dependent: CI passes them by accident rather than by design.

1. **`fix.test.ts` › checks workspace source under its own resolution
mode** — a code bug. `resolveCompiler` loaded `typescript` with
`createRequire(...)`, and Node's resolution also searches `NODE_PATH`
and the global folders. In the container `NODE_PATH` holds a global
TypeScript 6.0.2, so a repository without its own compiler was verified
with TS 6, which reports TS5107 (`moduleResolution: node10` deprecated).
In CI `NODE_PATH` is unset and the bundled 5.9 compiler is used, so the
test passes there. The same thing would happen to any user with a global
TypeScript on `NODE_PATH`. Now `consumerCompilerDir` takes
`node_modules/typescript` from the repository or the nearest ancestor
that has one, else the bundled compiler.
2. **`cli.test.ts` › uptide verify › ends with the summary and the next
commands** — a test bug. `fixReport()` set `prBody:
'/repo/.uptide/pr-body.md'`, and `fix` writes `report.html` next to the
stored run. On a CI runner (non-root) creating `/repo` fails silently,
so the engine's `html` path survives. As root the write succeeds,
replaces `html`, the assertion fails, and `/repo/.uptide/` is left
behind. Now each report gets a fresh temporary directory. The test
asserts the absolute path of its own stored run outside the working
directory. One formatter assertion now matches its line regardless of
column padding, since the padding depends on path lengths.

No test was skipped.

## How it was verified

- New `compiler.test.ts` cases: a workspace finds the root's
`node_modules/typescript`; a repository without TypeScript gets the
bundled compiler. The second case fails on the old `resolveCompiler` in
the container (where it got the global 6.0.2) and passes now.
- In the container, which has `NODE_PATH` and runs as root: core 852
passed (3 files skipped, as before), CLI 343/343, `pnpm lint` and `pnpm
typecheck` clean. `/repo/.uptide/report.html` kept its old timestamp
across the CLI run, so nothing writes there anymore.

## Checklist

- [x] Tests for the change (the compiler fix starts with a test that
fails)
- [x] `pnpm lint && pnpm typecheck && pnpm test` pass
- [x] README and docs updated if behavior changed (no doc describes
compiler resolution beyond "the consumer's TypeScript", which is now
what it does)
- [x] Changeset added (`.changeset/consumer-compiler-only.md`, patch)
- [x] No new dependency
- [x] No private code, names or paths in fixtures, tests or docs
- [x] The rules in CONTRIBUTING.md ("Rules that do not bend") still hold

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_01B2T8GmEVnZwfNrugajEMqi

---
_Generated by [Claude
Code](https://claude.ai/code/session_01B2T8GmEVnZwfNrugajEMqi)_

---------

Signed-off-by: Claude <noreply@anthropic.com>
Co-authored-by: Claude <noreply@anthropic.com>
@uptide-release uptide-release Bot mentioned this pull request Oct 7, 2026
lucasbraum pushed a commit that referenced this pull request Oct 8, 2026
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and publish to npm
yourself or [setup this action to publish
automatically](https://github.com/changesets/action#with-publishing). If
you're not ready to do a release yet, that's fine, whenever you add more
changesets to main, this PR will be updated.


# Releases
## uptide@0.5.0

### Minor Changes

- [#39](#39)
[`b9f9974`](b9f9974)
Thanks [@lucasbraum](https://github.com/lucasbraum)! - A verified
migration pack for the AI SDK (`ai`) 6 → 7: the renamed options
(`system` →
`instructions`, `onFinish` → `onEnd`, `onStepFinish` → `onStepEnd`,
`experimental_telemetry`
→ `telemetry`), `stepCountIs` → `isStepCount`, `fullStream` → `stream`,
`totalUsage` → `usage`
and the removed `experimental_*` options are rewritten by rule;
telemetry `metadata`, tool
`context` and the stream result helpers go to the agent with the guide;
what the compiler
cannot see (telemetry registration, results that now cover every step,
rejected system
messages) is listed for review. Scored against vercel/chatbot and
miurla/morphic at the
commit before their own upgrade: no false positive. `uptide pack test`
gains
`--update-fixtures`, fixture markers take the compiler's `message`, and
ground-truth
  repositories can use bun.

- [#39](#39)
[`b9f9974`](b9f9974)
Thanks [@lucasbraum](https://github.com/lucasbraum)! - `check` and `fix`
upgrade a package together with the packages that must move with it,
using the groups `list` already draws (family, peer link, shared pin),
each at the version
that agrees with the target. `fix ai` also bumps `@ai-sdk/react`,
`@ai-sdk/provider` and the
installed `@ai-sdk/*` providers in one install and one commit; check's
plan, the fix summary
and the PR description say which and why, and `fix` stops before
changing anything when a
member has no release that agrees. npm and pnpm installs resolve the
exact version first,
so a `^` range keeps the version the target pins. Ground-truth entries
take `with`, the
packages the real upgrade moved, and `pack test` fails when check would
leave one behind.

- [#38](#38)
[`adaf8f9`](adaf8f9)
Thanks [@lucasbraum](https://github.com/lucasbraum)! - Migration packs
are a public, testable contract (docs/packs.md). `uptide pack new`
scaffolds
a pack (an example rule, a fixture pair, a test, empty ground truth) and
registers it;
`uptide pack test` scores packs against their fixtures and against
public repositories at the
commit before their upgrade, with precision and recall per rule, every
false positive and
false negative, and `--json` for CI. A pack is labeled verified only
with ground truth from at
least two public repositories and no false positive among its breaking
findings; otherwise it
ships as a candidate and `check`, `list` and `fix` treat the dependency
as generic.

### Patch Changes

- [#44](#44)
[`b4cc21f`](b4cc21f)
Thanks [@lucasbraum](https://github.com/lucasbraum)! - `check` no longer
dies with "Manipulation error: A syntax error was inserted." on packages
whose type aliases give their type parameters defaults (`type-fest` 4 →
5, `i18next` 23 → 26):
the alias body is read after the parameter list, not at the first
default's ` = `, so these
aliases are compared by the checker instead of breaking the comparison
program.

- [#40](#40)
[`3e3a5fa`](3e3a5fa)
Thanks [@lucasbraum](https://github.com/lucasbraum)! - `fix` verifies
with the repository's own TypeScript (its `node_modules/typescript`, or
an
ancestor's) or the bundled one, and never with a TypeScript that
`NODE_PATH` or Node's global
folders happen to provide. A machine with a global TypeScript 6 made
verification report
  TS5107 deprecations the repository never sees.

- [#37](#37)
[`3e7f744`](3e7f744)
Thanks [@lucasbraum](https://github.com/lucasbraum)! - Gemini is
labelled experimental: in `fix --help`, in the `LLM:` line `fix` prints,
and in the
docs. Its evaluation runs on the storefront fixture failed on service
errors (HTTP 503/429),
  so its migration quality is not established yet.

Co-authored-by: uptide-release[bot] <338861287+uptide-release[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant