docs← Back to article

Markdown for LLMs

LPK-E0404 — version change via add

The source Markdown for this article. Copy it into your assistant or download it as a text file.

Download this articlePlain text ↗
# LPK-E0404 — version change via add

## What it means

Adding pins a new dependency; moving an existing pin belongs to the update command, which also moves the pin subtree and replays the saved calculations. Asking add to re-pin an already pinned name is therefore refused, with the exact update invocation spelled out. Nothing is created or changed by the refusal.

Running the named update command is the whole fix — or keeping the pinned version and dropping the request.

## Example

```pkgtest
{"files": {"law.toml": "[package]\nname = \"demo.mini\"\nversion = \"0.1.0\"\nlanguage = \"0.2\"\nnamespace = \"urn:law:demo:mini\"\n\n[dependencies]\nfoo = \"1.0.0\"\n"}, "cmd": ["add", "foo@2.0.0", "--project", "."], "expect": "LPK-E0404"}
```

## Fix

```pkgtest
{"files": {}, "cmd": ["init", ".", "--name", "demo.diag"]}
```

## Engine message

The tool reports this in its own wording:

```text
law: REFUSAL LPK-E0404: foo: pinned 1.0.0, requested 2.0.0
```

## Related

- [Package, context, snapshots](/recipes/n-package/) — what a project directory holds.