docs← Back to article

Markdown for LLMs

LPK-E0401 — version or byte conflict in the closure

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

Download this articlePlain text ↗
# LPK-E0401 — version or byte conflict in the closure

## What it means

One world holds one version of each package: when two consumers need different versions of the same dependency, no single closure satisfies both, so the command refuses and names both consumers. Nothing is created or changed by the refusal. The same code guards the smallest case of all — a package depending on itself.

Moving one consumer to a shared version resolves the conflict. Until then the project stays exactly as it was.

## Example

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

## Fix

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

## Engine message

The tool reports this in its own wording:

```text
law: REFUSAL LPK-E0401: demo.mini: package cannot depend on itself
```

## Related

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