experiment: fold check-stable into moc --stable-baseline - #624
Conversation
…se pin When toolchain moc is exactly 1.11.2-stable-baseline-check-compat, EM canisters with a .most baseline use a single moc --check --stable-baseline invocation instead of generate + --stable-compatible, so we can evaluate the prerelease diagnostics (M0267, better loci) against real mops flows. Co-authored-by: Cursor <cursoragent@cursor.com>
Pin compatible/incompatible to 1.3.0 and canister-args to 1.5.0 so the generate + --stable-compatible path stays regression-tested while most fixtures exercise the experimental --stable-baseline pin. Co-authored-by: Cursor <cursoragent@cursor.com>
makeWithNextLintFixture copies migrate/with-next and injects lintoko by replacing the moc pin line; that pin moved off 1.5.0 so lintoko never landed and the check-limit lint tests failed in CI. Co-authored-by: Cursor <cursoragent@cursor.com>
Cursor AI review👍 APPROVE — looks safe to merge I've reviewed the full diff against the base SHA. This is an explicitly experimental PR that folds The critical safety property: all new fold logic is gated by
VerdictDecision: APPROVE Generated for commit f3a2417 |
Hoisting resolveStablePath for the fold decision changed error precedence for every moc version (missing-baseline over compile error). Soft-resolve only when folding; keep the fatal resolveStablePath after a successful check for the classic path. Co-authored-by: Cursor <cursoragent@cursor.com>
Why
Evaluate moc
1.11.2-stable-baseline-check-compat/ motoko#6253 (LANG-1348) against real mops flows before wiring it for real. That prerelease folds typecheck + upgrade-compat into onemoc --check --stable-baseline <deployed.most>(also escalates forgotten EM fields to M0267).Exact pin only — other moc versions keep the classic 3-step path.
moc --stable-baselinerequires--enhanced-migration, so non-EM canisters stay on generate +--stable-compatibleeven on this pin.Before / After
Diagnostic change already visible in migrate snapshots — forgotten initial field:
Compat errors also gain a real locus (
src/main.mo:…) instead of(unknown location).What is unchanged
.mobaselines: classic path--stable-compatiblestill available to moc; mops just doesn't call it on the experimental pin for EM+.mostFollow-up worth flagging
mops check-stabletypechecks as a side effect ofmoc --checkon this pin (not a deliberate product change)