test: record Convex Dart client contract gate - #136
Conversation
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
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. Comment |
Greptile SummaryThis 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 Temporary generated probe sources were absent after both a successful run and an induced post-generation failure. Confidence Score: 5/5The 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
What T-Rex did
Reviews (3): Last reviewed commit: "ci: make contract gate checkout-safe" | Re-trigger Greptile |
Dismissed because a newer commit was pushed; Greptile will re-review the current head.
Outcome
Dartvex 0.2.0 fails the mandatory compile-time contract gate, so this comparison keeps
convex_flutter.The stable
folders:listForParentcontract producesFuture<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 asdynamicinstead 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
dartvexanddartvex_codegen0.2.0 pinsNo application dependency, client adapter, server payload, deployment, outbox, revision rule, Hive model,
.icaformat, or generated Icarus file changes.Validation
npm ci— pass; existing audit report: 2 moderate, 1 high, 1 criticalnpx tsc --noEmit— passnpm run test:convex— pass, 22 testsfvm flutter test— pass, 343 testsfvm flutter analyze --no-fatal-infos— pass with the same 6 pre-existing info lintsfvm dart testintool/convex_client_gauntlet— passfvm dart analyzeintool/convex_client_gauntlet— passfvm flutter build web --no-tree-shake-icons— passgit diff --check— passThe exact
fvm flutter build webcommand still fails on the refreshed base's three pre-existing non-constantIconDatasites. None is changed here; the no-tree-shake build proves the web target otherwise compiles.