Skip to content

Vue codemod decision: no-go ​

The retained Vue migration evidence does not authorize an automatic source converter. Four versioned analyzer reports cover 17 fixture files, 52 inventory records, and 26 findings across 14 candidate classes. They prove syntax inventory. They prove behavioral equivalence for 0/14 candidate classes.

No source writer, converter package, write flag, or implementation follow-up is proposed. RFC 0003 remains report-only.

Evaluated candidates ​

CandidateClassificationDecisionRequired review
Vue importsReview requiredNo-goScheduling, cleanup, ownership, module effects
Static component registrationUnsupportedNo-goNo positive retained registration fixture
Props, emits, modelsReview requiredNo-goNative property/event/model contract
Simple template bindingsReview requiredNo-goIdentity, refs, slots, ARIA, timing
Native Custom Element transportReview requiredNo-goManually authored host contract
Stylesheet extractionReview requiredNo-goScoped/modules/cascade/sheet ownership
Router and StoreReview requiredNo-goRoute and application/request ownership
LifecycleReview requiredNo-goReconnect, cleanup, scheduler, server behavior
TestsReview requiredNo-goReplacement behavior and wrapper semantics
Async components and SuspenseReview requiredNo-goFailure, cancellation, retry, teardown, SSR
Dynamic templates, macros, directivesUnsupportedNo-goDynamic/custom behavior is unavailable
Plugins and runtime registrationUnsupportedNo-goConfiguration is never executed
SSR and hydrationUnsupportedNo-goIsolation, transport, identity, mismatch behavior
CSS preprocessors/external stylesUnsupportedNo-goNo evaluated processor output

Evidence contract ​

The repository retains the complete decision, no-write expected output, and counterexamples. Every candidate links to input files, exact analyzer inventory/finding IDs, and a semantic test or counterexample. npm run check:vue-codemod-decision rejects missing evidence, changed corpus counts, an unknown class, or any generated, modified, or deleted expected file.

The corpus measurement applies only to the supported, unsupported, malformed, and adversarial analyzer fixtures. The production Vue host and browser suite are supplementary evidence for manual Custom Element coexistence, not a conversion-success sample.

Human migration boundary ​

Use gluon-vue-analyze to inventory static Vue 3.5 source, then follow the tested cutover playbook. A reviewer must redesign component, Router, Store, async, stylesheet, lifecycle, server, and test ownership against public Gluon contracts and run the relevant behavioral evidence. The analyzer never claims that detected syntax has an equivalent generated target.

False positives can occur when matching syntax hides different runtime semantics. False negatives can occur through aliases, dynamic imports, generated code, macros, plugin transforms, runtime registration, and external configuration that the analyzer intentionally does not execute.

Any future write-capable proposal requires a new accepted RFC covering preview, dry-run, deterministic and idempotent output, formatting, conflicts, rollback, security, diagnostics, and supported versions before implementation begins.

Version-matched documentation. Examples are checked against the public package contracts.