# LPK-E0804 — fact cannot be safely printed into .lawcase ## What it means Adding a document pins a typed piece of evidence into the case: the document kind names a package and an entity declared by it. The tool checks the kind against the installed packages before touching anything; when the named package is not installed, there is no declaration to check the document against, so the command refuses. Nothing is created or changed by the refusal. Installing the package that declares the entity — or naming an entity from a package that is already installed — is the whole fix. ## Example ```pkgtest {"files": {"law.toml": "[package]\nname = \"demo.case\"\nversion = \"0.1.0\"\nlanguage = \"0.2\"\nnamespace = \"urn:law:demo:case\"\n\n[[cases]]\nname = \"Main\"\npath = \"main.lawcase\"\n", "main.lawcase": "language \"law.core\" version \"0.2\";\npackage demo.case version \"0.1.0\";\nnamespace \"urn:law:demo:case\";\n\ncase Main {\n}\n", "law.lock": "{\"packages\":[],\"resources\":[]}", "note.txt": "hello doc\n"}, "cmd": ["case", "document", "add", "note.txt", "--as", "note1", "--type", "ghost.pkg::Thing", "--observed", "2026-01-01T00:00:00Z", "--recorded", "2026-01-02T00:00:00Z", "--project", "."], "expect": "LPK-E0804"} ``` ## Fix ```pkgtest {"files": {}, "cmd": ["init", ".", "--name", "demo.diag"]} ``` ## Engine message The tool reports this in its own wording: ```text law: REFUSAL LPK-E0804: --type ghost.pkg::Thing: package not installed (§168.4) → present typed terms and reachable evidence; check §168.4 ``` ## Related - [Package, context, snapshots](/recipes/n-package/) — what a project directory holds.