# Shared dependency change: labparcels.registry from 0.1.0 to 0.2.0

> Filled example. This record moves the fictional fees consumer across a
> registry revision on scratch copies; the fixtures stay pinned. The engine
> never reads this file: it records why a shared dependency moved and what
> proved the move safe, not a package format.

- Dependency: labparcels.registry
- Move: 0.1.0 -> 0.2.0
- Consumer: labparcels.fees
- Author: Lab team (fictional)
- Date opened: 2026-10-03
- Status: verified

## 1. Reason

Revision 0.2.0 adds one derived flag, the recorded-kind flag, without
changing any existing rule. The fees consumer moves to stay current with
the shared registry line; the upstream release note is the packed
revision line recorded below.

## 2. Blast radius

| Consumer or case | Pinned version after this move | Needs its own record? |
|---|---|---|
| labparcels.fees | 0.2.0 | no: this record covers it |
| labparcels.case1 | 0.1.0 | no: stays pinned; allowed without a record |

The appeals consumer also stays pinned at 0.1.0; staying pinned is
allowed and needs no record here.

## 3. Pre-move readings

The currency report below flags the new revision and exits nonzero; the
lock stays untouched:

```text
lab ← /tmp/fill-move/registry (--registry)
labparcels.iface@0.1.0 [lab]: up to date
labparcels.registry@0.1.0 [lab]: published 0.2.0
```

Current tests on the old pin:

```text
total: 5 checked, 5 passed, 0 failed, 0 not run; code 0
```

The revision under move, packed and published into the throwaway registry:

```text
labparcels.registry@0.2.0 → /tmp/fill-move/artifacts/registry-0.2.0: contentHash sha256:d7d722f0337f651290a660e8d2c65783688f2f22a278c37a94e2b5e2fe67c9c9, worldHash sha256:d0a6d82074f802ffda964187fb769d0a436dab679c4d49561750470d3db7da33, 3 files
labparcels.registry@0.2.0 → lab (/tmp/fill-move/registry): contentHash sha256:d7d722f0337f651290a660e8d2c65783688f2f22a278c37a94e2b5e2fe67c9c9, worldHash sha256:d0a6d82074f802ffda964187fb769d0a436dab679c4d49561750470d3db7da33
versions labparcels.registry: 0.1.0, 0.2.0
changed: p/labparcels.registry/0.2.0/package.lawir.json
changed: p/labparcels.registry/0.2.0/world.lawir.json
changed: p/labparcels.registry/0.2.0.json
```

## 4. The move

Preview first, then run the same move without the preview flag:

```text
lab ← /tmp/fill-move/registry (--registry)
--dry-run: staged and verified, no file changed
~ labparcels.registry 0.1.0 -> 0.2.0
changed: .law/transport.json
changed: deps/labparcels.registry.lawir.json
changed: law.lock
changed: law.toml
changed: package.law
```

```text
lab ← /tmp/fill-move/registry (--registry)
~ labparcels.registry 0.1.0 -> 0.2.0
changed: .law/transport.json
changed: deps/labparcels.registry.lawir.json
changed: law.lock
changed: law.toml
changed: package.law
```

The move rewrites the import line to the new version alongside the
manifest, the lock, and the pinned bytes.

Post-move readings on the new pin:

```text
total: 5 checked, 5 passed, 0 failed, 0 not run; code 0
```

```text
lock: /tmp/fill-move/fees-upd/law.lock matches law.toml and resources
```

```text
lab ← /tmp/fill-move/registry (--registry)
labparcels.iface@0.1.0 [lab]: up to date
labparcels.registry@0.2.0 [lab]: up to date
```

## 5. Rollback

To return to the old pin, move the same consumer back to 0.1.0 with the
update command; the run below did exactly that on the scratch copy and
the five scenarios passed again:

```text
lab ← /tmp/fill-move/registry (--registry)
~ labparcels.registry 0.2.0 -> 0.1.0
changed: deps/labparcels.registry.lawir.json
changed: law.lock
changed: law.toml
changed: package.law
```

```text
total: 5 checked, 5 passed, 0 failed, 0 not run; code 0
```

## 6. Sign-off

- Reviewer: Lab team (fictional)
- Date closed: 2026-10-03
- Outcome: verified: the readings above pass on the new pin
- Notes: none
