# Parameter on a date ## Intention I want to read a pinned parameter value along the legal-time axis. The scenes check two dated rates, a gap without a value, and the coverage bound. ## Incorrect form and why it stays silent ```law title="Incorrect form" fragment Clause in MissingEdition { kind paragraph; locator "1"; } ``` A parameter needs an A3 sidecar, an anchor and a pin. A wrong edition reference does not create provenance. The lawparam file and resources are shown below; a single literate page does not replace them. ## Correct form ```law language "law.core" version "0.2"; package recipes.l.r09 version "0.1.0"; namespace "urn:recipe:l-calc:09"; source Standard { kind standard; jurisdiction "none"; } edition Edition of Standard { language ru; officiality official; in_force [@2026-01-01, infinity); } fragment Clause in Edition { kind paragraph; locator "1"; text ru official "Учебный предел меняется по датированному приложению."; } relation ready(); ``` ## Frozen execution scene | Facts and choice | Question | Answer | |---|---|---| | 1. 2026-01-01 | `Limit` | `1000 KZT` / `COMPUTED` | | 2. 2026-05-31 | `Limit` | `1000 KZT` / `COMPUTED` | | 3. 2026-07-01 | `Limit` | `1200 KZT` / `COMPUTED` | | 4. coverage gap | `Limit` | no value / `RUNTIME_ERROR` | | 5. coverage end excluded | `Limit` | no value / `RUNTIME_ERROR` | ```law test "limit on January first" { given { context { legal_time @2026-01-01; decision_time @2026-09-13T09:00:00+05:00; knowledge_time @2026-09-13T09:00:00+05:00; timezone "Asia/Almaty"; } } evaluate Limit; expect value == 1000 KZT; expect evaluation_status == COMPUTED; } ``` ```law test "limit late May" { given { context { legal_time @2026-05-31; decision_time @2026-09-13T09:00:00+05:00; knowledge_time @2026-09-13T09:00:00+05:00; timezone "Asia/Almaty"; } } evaluate Limit; expect value == 1000 KZT; expect evaluation_status == COMPUTED; } ``` ```law test "limit from July" { given { context { legal_time @2026-07-01; decision_time @2026-09-13T09:00:00+05:00; knowledge_time @2026-09-13T09:00:00+05:00; timezone "Asia/Almaty"; } } evaluate Limit; expect value == 1200 KZT; expect evaluation_status == COMPUTED; } ``` ```law test "gap in coverage" { given { context { legal_time @2026-06-15; decision_time @2026-09-13T09:00:00+05:00; knowledge_time @2026-09-13T09:00:00+05:00; timezone "Asia/Almaty"; } } evaluate Limit; expect evaluation_status == RUNTIME_ERROR; expect issue(MISSING_PARAMETER_VALUE); } ``` ```law test "coverage end excluded" { given { context { legal_time @2027-01-01; decision_time @2026-09-13T09:00:00+05:00; knowledge_time @2026-09-13T09:00:00+05:00; timezone "Asia/Almaty"; } } evaluate Limit; expect evaluation_status == RUNTIME_ERROR; expect issue(MISSING_PARAMETER_VALUE); } ``` The A3 set in the [package root](https://github.com/arxohq/law/blob/master/docs/recipes/l-calc/resources/09-parameter/law.toml), pinned by [law.lock](https://github.com/arxohq/law/blob/master/docs/recipes/l-calc/resources/09-parameter/law.lock): ```json { "schemaVersion": "law.params/0.1", "kind": "parameter-dataset", "id": "urn:recipe:l-calc:09:limit", "parameter": "urn:recipe:l-calc:09#Limit", "valueType": { "name": "urn:law:std#Money" }, "timeAxis": "legal_time", "granularity": "date", "coverage": { "start": "2026-01-01", "endExclusive": "2027-01-01" }, "values": [ { "id": "urn:recipe:l-calc:09:limit#0", "valid": { "start": "2026-01-01", "endExclusive": "2026-06-01" }, "value": { "kind": "value", "type": { "name": "urn:law:std#Money" }, "value": 1000, "currency": "KZT" }, "anchors": [ "urn:recipe:l-calc:09#Clause" ] }, { "id": "urn:recipe:l-calc:09:limit#1", "valid": { "start": "2026-07-01", "endExclusive": "2027-01-01" }, "value": { "kind": "value", "type": { "name": "urn:law:std#Money" }, "value": 1200, "currency": "KZT" }, "anchors": [ "urn:recipe:l-calc:09#Clause" ] } ] } ``` ## Counterfactual Mutation: `in Edition {` → `in MissingEdition {`; expected `LDC-E5102`. Additional counterfactuals are shown as separate table rows. ## Boundary A parameter is one time axis; a multidimensional scale is a decision table. An A3 rules-table is not a callable function. The resources/09-parameter root is executed via program: practicum; the corpus is not imported. The lock file is re-pinned to the current resource hashing; the parameter file bytes are unchanged. ## Pitfall On a date inside the gap, or on the excluded coverage end, there is no value: MISSING_PARAMETER_VALUE.