Markdown for LLMs
LPK-E0602 — directory neither empty nor a registry
The source Markdown for this article. Copy it into your assistant or download it as a text file.
# LPK-E0602 — directory neither empty nor a registry
## What it means
Publishing writes into a registry directory: either a fresh empty directory, which becomes a new registry, or an existing registry with its identity file. A directory that is neither — files but no identity — might be anything, so the tool refuses to mix release bytes into it. Nothing is created or changed by the refusal.
Pointing the command at an empty directory or at the real registry is the whole fix.
## Example
```pkgtest
{
"files": {
"release.json": "{\n \"contentHash\": \"sha256:3740fe61c6f25b5f6af629b26503581aaa3f3cf8193f0b78e441870a7117a6b7\",\n \"dependencies\": [],\n \"features\": [\n \"core-executable\"\n ],\n \"files\": {\n \"law.lock\": \"sha256:0db199d3d67d690bf2bba188dbe6019d881d4c36789c2bc46fbe073e5c7ce57b\",\n \"package.lawir.json\": \"sha256:3740fe61c6f25b5f6af629b26503581aaa3f3cf8193f0b78e441870a7117a6b7\",\n \"world.lawir.json\": \"sha256:3740fe61c6f25b5f6af629b26503581aaa3f3cf8193f0b78e441870a7117a6b7\"\n },\n \"format\": \"law.package-release/0.1\",\n \"languageSemantics\": \"law.core/0.2\",\n \"name\": \"test.leaf\",\n \"namespace\": \"urn:test:leaf\",\n \"resources\": [],\n \"version\": \"0.1.0\",\n \"worldHash\": \"sha256:3740fe61c6f25b5f6af629b26503581aaa3f3cf8193f0b78e441870a7117a6b7\"\n}\n",
"package.lawir.json": "{\"artifactHash\":\"sha256:64d1106d9a44c810e579943d22bb5da16aa578f2a955ec644b94a996fab0c2c1\",\"features\":[\"core-executable\"],\"imports\":[],\"metadata\":{},\"nodes\":[{\"cases\":[{\"constructor\":\"urn:test:leaf#T/A\",\"name\":\"A\"},{\"constructor\":\"urn:test:leaf#T/B\",\"name\":\"B\"}],\"contentHash\":\"sha256:cb5cecab39c451f14399e8d03b197faefd8f3b6f4f1b32774ab4f1e21a361609\",\"id\":\"urn:test:leaf#T\",\"kind\":\"type_decl\",\"name\":\"T\",\"package\":\"urn:test:leaf\",\"typeKind\":\"variant\",\"variants\":[\"A\",\"B\"],\"visibility\":\"public\"}],\"package\":{\"name\":\"test.leaf\",\"namespace\":\"urn:test:leaf\",\"semanticHash\":\"sha256:0000000000000000000000000000000000000000000000000000000000000000\",\"version\":\"0.1.0\"},\"schemaVersion\":\"law.core.ir/0.2\",\"semanticHash\":\"sha256:7d7f700e37171852f0ae48d8a5e94661234fda1e5d55fecde1995cb78fadd557\",\"semanticVersion\":\"0.2.4\",\"strata\":[],\"theoryHash\":\"sha256:7d7f700e37171852f0ae48d8a5e94661234fda1e5d55fecde1995cb78fadd557\"}",
"world.lawir.json": "{\"artifactHash\":\"sha256:64d1106d9a44c810e579943d22bb5da16aa578f2a955ec644b94a996fab0c2c1\",\"features\":[\"core-executable\"],\"imports\":[],\"metadata\":{},\"nodes\":[{\"cases\":[{\"constructor\":\"urn:test:leaf#T/A\",\"name\":\"A\"},{\"constructor\":\"urn:test:leaf#T/B\",\"name\":\"B\"}],\"contentHash\":\"sha256:cb5cecab39c451f14399e8d03b197faefd8f3b6f4f1b32774ab4f1e21a361609\",\"id\":\"urn:test:leaf#T\",\"kind\":\"type_decl\",\"name\":\"T\",\"package\":\"urn:test:leaf\",\"typeKind\":\"variant\",\"variants\":[\"A\",\"B\"],\"visibility\":\"public\"}],\"package\":{\"name\":\"test.leaf\",\"namespace\":\"urn:test:leaf\",\"semanticHash\":\"sha256:0000000000000000000000000000000000000000000000000000000000000000\",\"version\":\"0.1.0\"},\"schemaVersion\":\"law.core.ir/0.2\",\"semanticHash\":\"sha256:7d7f700e37171852f0ae48d8a5e94661234fda1e5d55fecde1995cb78fadd557\",\"semanticVersion\":\"0.2.4\",\"strata\":[],\"theoryHash\":\"sha256:7d7f700e37171852f0ae48d8a5e94661234fda1e5d55fecde1995cb78fadd557\"}",
"law.lock": "{\n \"dependencyEdges\": [],\n \"languageSemantics\": \"law.core/0.2.0\",\n \"lockVersion\": \"0.1\",\n \"packages\": [],\n \"resolutionHash\": \"sha256:d8610173a525522dbdc6f43581ef0c5e2ac3abe0219d4a07aff1e7eb1389a416\",\n \"root\": {\n \"contentHash\": \"sha256:7a6b6d14e4ea06f1fa41dc44932a590151dd9ec39573614babbd3c41bc81f8e9\",\n \"name\": \"test.leaf\",\n \"namespace\": \"urn:test:leaf\",\n \"version\": \"0.1.0\"\n }\n}\n"
},
"cmd": [
"publish",
".",
"--registry",
"local=."
],
"expect": "LPK-E0602"
}
```
## Fix
```pkgtest
{"files": {}, "cmd": ["init", ".", "--name", "demo.diag"]}
```
## Engine message
The tool reports this in its own wording:
```text
law: REFUSAL LPK-E0602: .: directory neither empty nor a registry (no registry.json)
```
## Related
- [Package, context, snapshots](/recipes/n-package/) — what a project directory holds.