# LDC-E8701 — Parameter value intervals overlap ## What it means A parameter dataset assigns one value to each moment of its coverage: the validity intervals of the value rows must be pairwise disjoint. When two rows cover overlapping intervals, the same moment would read two different values, and the compiler stops at the earlier row and names the overlapping one beside it. Split the intervals at a shared boundary — the end of one row is the start of the next — until no two rows claim the same moment. ## Example ```run {"argv": ["check", "$ROOT"], "files": {"law.toml": "[package]\nname = \"demo.diagnostics\"\nversion = \"0.1.0\"\nlanguage = \"0.2\"\nnamespace = \"urn:demo:diagnostics\"\n", "main.law": "language \"law.core\" version \"0.2\";\npackage demo.diagnostics version \"0.1.0\";\nnamespace \"urn:demo:diagnostics\";\n\nentity Person;\n", "mrp.lawparam.json": "{\"schemaVersion\": \"law.params/0.1\", \"kind\": \"parameter-dataset\", \"id\": \"urn:demo:diagnostics#mrp\", \"parameter\": \"urn:demo:diagnostics#MRP\", \"valueType\": {\"name\": \"urn:law:std#Money\"}, \"timeAxis\": \"legal_time\", \"granularity\": \"date\", \"coverage\": {\"start\": \"2025-01-01\", \"endExclusive\": null}, \"values\": [{\"id\": \"urn:demo:diagnostics#mrp#2025\", \"valid\": {\"start\": \"2025-01-01\", \"endExclusive\": \"2026-07-01\"}, \"value\": {\"kind\": \"value\", \"type\": {\"name\": \"urn:law:std#Money\"}, \"value\": \"3932\", \"currency\": \"KZT\"}, \"anchors\": [\"urn:demo:diagnostics#law#article-9\"]}, {\"id\": \"urn:demo:diagnostics#mrp#2026\", \"valid\": {\"start\": \"2026-01-01\", \"endExclusive\": null}, \"value\": {\"kind\": \"value\", \"type\": {\"name\": \"urn:law:std#Money\"}, \"value\": \"4325\", \"currency\": \"KZT\"}, \"anchors\": [\"urn:demo:diagnostics#law#article-9\"]}]}", "law.lock": "{\"lockVersion\": \"0.2\", \"resources\": [{\"capability\": \"compile_time\", \"contentHash\": \"sha256:b40af5cd4965dc4516df222a96f618e1f29361d32601bd42edc1bfb227726bbb\", \"id\": \"urn:demo:diagnostics#mrp\", \"kind\": \"parameter-dataset\", \"path\": \"mrp.lawparam.json\"}]}"}, "expect": "LDC-E8701"} ``` ## Fix ```run {"argv": ["check", "$ROOT"], "files": {"law.toml": "[package]\nname = \"demo.diagnostics\"\nversion = \"0.1.0\"\nlanguage = \"0.2\"\nnamespace = \"urn:demo:diagnostics\"\n", "main.law": "language \"law.core\" version \"0.2\";\npackage demo.diagnostics version \"0.1.0\";\nnamespace \"urn:demo:diagnostics\";\n\nentity Person;\n", "mrp.lawparam.json": "{\"schemaVersion\": \"law.params/0.1\", \"kind\": \"parameter-dataset\", \"id\": \"urn:demo:diagnostics#mrp\", \"parameter\": \"urn:demo:diagnostics#MRP\", \"valueType\": {\"name\": \"urn:law:std#Money\"}, \"timeAxis\": \"legal_time\", \"granularity\": \"date\", \"coverage\": {\"start\": \"2025-01-01\", \"endExclusive\": null}, \"values\": [{\"id\": \"urn:demo:diagnostics#mrp#2025\", \"valid\": {\"start\": \"2025-01-01\", \"endExclusive\": \"2026-01-01\"}, \"value\": {\"kind\": \"value\", \"type\": {\"name\": \"urn:law:std#Money\"}, \"value\": \"3932\", \"currency\": \"KZT\"}, \"anchors\": [\"urn:demo:diagnostics#law#article-9\"]}, {\"id\": \"urn:demo:diagnostics#mrp#2026\", \"valid\": {\"start\": \"2026-01-01\", \"endExclusive\": null}, \"value\": {\"kind\": \"value\", \"type\": {\"name\": \"urn:law:std#Money\"}, \"value\": \"4325\", \"currency\": \"KZT\"}, \"anchors\": [\"urn:demo:diagnostics#law#article-9\"]}]}", "law.lock": "{\"lockVersion\": \"0.2\", \"resources\": [{\"capability\": \"compile_time\", \"contentHash\": \"sha256:4e67c8dd00f9f81714dac9ebb458546f98ab9a868cda961b9f181d474bdcb33d\", \"id\": \"urn:demo:diagnostics#mrp\", \"kind\": \"parameter-dataset\", \"path\": \"mrp.lawparam.json\"}]}"}, "expect": null} ``` ## Engine message The parameter checker reports this in its own wording: ```text LDC-E8701: parameter value intervals overlap ``` ## Related - [LDC-E8703](/diagnostics/LDC-E8703/) — the neighbouring parameter refusal.