# LPK-E0803 — proposal source outside the project or malformed ## What it means Facts proposed from a file must come from inside the project: the file is read, pinned as the proposal source, and watched for changes. A file outside the project root cannot be pinned or watched, and a malformed file cannot be read as facts, so either is refused before anything is recorded. Nothing is created or changed by the refusal. Placing a well-formed fact file inside the project and naming it 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"}, "cmd": ["case", "facts", "propose", "--from", "/", "--by", "urn:law:registrar", "--at", "2026-01-01T00:00:00Z", "--project", "."], "expect": "LPK-E0803"} ``` ## Fix ```pkgtest {"files": {}, "cmd": ["init", ".", "--name", "demo.diag"]} ``` ## Engine message The tool reports this in its own wording: ```text law: REFUSAL LPK-E0803: facts propose: --from file outside the project (§168.4) ``` ## Related - [Package, context, snapshots](/recipes/n-package/) — what a project directory holds.