Skip to content

test: record Convex Dart client contract gate - #136

Open
SunkenInTime wants to merge 3 commits into
icarus-cloudfrom
t3code/convex-client-gauntlet
Open

test: record Convex Dart client contract gate#136
SunkenInTime wants to merge 3 commits into
icarus-cloudfrom
t3code/convex-client-gauntlet

Conversation

@SunkenInTime

Copy link
Copy Markdown
Owner

Outcome

Dartvex 0.2.0 fails the mandatory compile-time contract gate, so this comparison keeps convex_flutter.

The stable folders:listForParent contract produces Future<dynamic> because its Convex function spec has no result validator. An old result-field access still analyzes after result drift. Dartvex also exits zero for an unknown validator and emits the affected field as dynamic instead of stopping generation.

Per the declared stop rule, the 50-seed runtime chaos and profile stages were not started. This PR makes no runtime performance or correctness claim about Dartvex.

Evidence

  • isolated evaluator with exact dartvex and dartvex_codegen 0.2.0 pins
  • baseline, function-rename, argument-rename, and unsupported-validator fixtures
  • compiled stale-caller checks
  • deterministic second-generation check
  • machine-readable result and short decision document

No application dependency, client adapter, server payload, deployment, outbox, revision rule, Hive model, .ica format, or generated Icarus file changes.

Validation

  • npm ci — pass; existing audit report: 2 moderate, 1 high, 1 critical
  • npx tsc --noEmit — pass
  • npm run test:convex — pass, 22 tests
  • focused Flutter baseline — pass, 82 tests
  • fvm flutter test — pass, 343 tests
  • fvm flutter analyze --no-fatal-infos — pass with the same 6 pre-existing info lints
  • fvm dart test in tool/convex_client_gauntlet — pass
  • fvm dart analyze in tool/convex_client_gauntlet — pass
  • fvm flutter build web --no-tree-shake-icons — pass
  • git diff --check — pass

The exact fvm flutter build web command still fails on the refreshed base's three pre-existing non-constant IconData sites. None is changed here; the no-tree-shake build proves the web target otherwise compiles.

@coderabbitai

coderabbitai Bot commented Aug 26, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 9c4e7dfa-3876-4f8c-8664-d905714b43d0

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@greptile-apps

greptile-apps Bot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This change adds a standalone Dartvex contract check that records whether generated Convex client bindings preserve the compile-time contracts required by the app. The check was run with the pinned local Dart SDK and correctly recorded that Dartvex 0.2.0 does not meet the result-field and unsupported-validator requirements, retains convex_flutter, and skips runtime comparison work.

Temporary generated probe sources were absent after both a successful run and an induced post-generation failure.

Confidence Score: 5/5

The new contract gate safely preserves the existing Convex client when Dartvex cannot meet required compile-time guarantees.

The focused contract-gate test, generated report, cleanup behavior, and source analysis were run with the repository-local Dart SDK. A forced failure after probe generation also confirmed that temporary files are removed before a later analysis can observe them.

Files Needing Attention: No files need follow-up for the reviewed behaviors. Future Dartvex upgrades should rerun tool/convex_client_gauntlet so the recorded compatibility decision remains current.

T-Rex T-Rex Logs

What T-Rex did

  • T-Rex ran the focused Dart contract-gate test with the repository-local Dart SDK; the test passed with temporary probe paths absent and library analysis succeeded.
  • T-Rex ran the package from a copied non-Git directory, where merge-base resolution failed after probe generation, but cleanup removed both probe paths and library analysis remained clean.
  • T-Rex captured the checked-in contract-gate report and ran report generation and the focused regression test with the repository-local Dart SDK; the report selected keep_convex_flutter and skipped runtime comparison, and temporary probes were absent after the run with the gate analysis remaining clear.
  • T-Rex executed the pre-run and after-run checks: the before-run log shows tests passed with probes absent and analysis exit 0, while the after-run run terminated with exit code 255 due to a _gitBaseCommit condition, with probes absent and analysis exit 0.
  • T-Rex noted that the requested verification completed but its local artifact references were not uploaded.

View all artifacts

T-Rex Ran code and verified through T-Rex

Reviews (3): Last reviewed commit: "ci: make contract gate checkout-safe" | Re-trigger Greptile

@SunkenInTime

Copy link
Copy Markdown
Owner Author

@greptileai

Comment thread tool/convex_client_gauntlet/lib/contract_gate.dart
greptile-apps[bot]
greptile-apps Bot previously approved these changes Aug 26, 2026
@greptile-apps
greptile-apps Bot dismissed their stale review August 26, 2026 05:49

Dismissed because a newer commit was pushed; Greptile will re-review the current head.

@SunkenInTime

Copy link
Copy Markdown
Owner Author

@greptileai

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