# `gno.land/r/moul/x/upgrade/lazy/v1` Version 1 of the **lazy migration** pattern (pattern D). Declares a new record shape and converts each [`v0`](../gen0) record on first touch. Migrating writes, and writing means crossing, so `Get(cur, key)` is a transaction and is invisible to `vm/qeval` and to `Render`. `Peek(key)` is the free read-only half: same value, no migration. See [the pattern](../README.md) and [the exploration](../../README.md). --- Part of **[moul/gno-contracts](https://github.com/moul/gno-contracts)** โ€” moul's versioned gno.land contracts. See the repository for the full catalog, build/test tooling, and usage. **Dependency graph:** ![gno.land/r/moul/x/upgrade/lazy/v1 dependency graph](https://raw.githubusercontent.com/moul/gno-contracts/main/_assets/gno.land/r/moul/x/upgrade/lazy/v1/deps.png) > ๐Ÿงช **Highly experimental โ€” potentially vibe-coded.** Not audited; may break, change, or be removed at any time. Do not use with anything of value. Full disclaimer: [DISCLAIMER](https://github.com/moul/gno-contracts/blob/main/DISCLAIMER.md).