Repository navigation
Conversation
…he relational-report eval Installs Flutter 3.47.6 (with its bundled Dart) into the sandbox image, cloned at the release tag so it works on x64 and arm64 hosts, with the universal artifacts precached for `flutter test`. `flutter` and `dart` are linked into the node-owned bin dir next to uv, and analytics are disabled so no first-run notice reaches a scorer's stdout. Adds build-dataapi-001-relational-report-flutter (sdk: flutter): the same relational report as the JS and Python versions, as the data layer of a Flutter staff dashboard. The starter has no dependencies besides Flutter, so the agent has to discover and add supabase_flutter itself. A Flutter app is client code and only gets the publishable key, so the agent also has to let signed-in staff read the tables without opening them to anonymous users. The scorer creates a staff account through the admin API, drops a `flutter test` file into the app that calls connect, signIn and loadSalesReport, and compares the result to SQL ground truth. It also checks that anonymous reads return nothing, that the app does not contain the secret key, that no raw Postgres driver is used, and gates on a supabase_flutter import in lib/.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
grdsdev
added this pull request to stack #412
October 20, 2026 08:47
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #400 (
claude/sdk-metadata-axis-d5c185), which is stacked on #399. Merge those first. Only the top commit belongs to this PR.Summary
Does for supabase_flutter what #399 did for supabase-py: adds a Flutter toolchain to the shared sandbox image and ports the relational-report benchmark eval to Flutter.
How it differs from the JS and Python versions
A Flutter app is client code, so it only gets the URL and the publishable key. The tables keep RLS with no policies, so the agent has to grant access and add policies that let signed-in staff read the order data without opening it to anonymous users or shipping the secret key.
Scorer flow:
flutter testhas no platform plugins, so the scorer's test answers theshared_preferenceschannel in memory and switches off the test binding's fakeHttpClient.Evidence
After: the image builds (about 1 minute, 2.6 GB);
flutteranddartrun as thenodeuser.order('name', ascending: true), policies forauthenticated) passes the scorer'sflutter testinside the image on arm64 against a stack seeded from the eval's migration. Anonymous reads of all four tables return nothing.order()defaults toascending: false, unlike supabase-js. The golden solution hit it on its first run, so expect this port to be harder than the JS one.pnpm eval:dry -- --sdk flutterlists only the new eval.run-evals-changedso CI does that.Merge Danger
Door: two-way
Revert restores the previous image tag and removes the eval folder. Nothing else depends on the Flutter layer.
Blast Radius: image-rebuild
Every runner and laptop rebuilds the sandbox image once because the Dockerfile hash in the tag changes. The image grows by the Flutter SDK. Existing evals are untouched.