docs← Back to article

Markdown for LLMs

Name an instant within a day

The source Markdown for this article. Copy it into your assistant or download it as a text file.

Download this articlePlain text ↗
# Name an instant within a day

## Intention

I want the status of a duty at the exact instant of the day on which it changes.

## Incorrect form and why it stays silent

A date covers the whole day; it cannot be assigned one of two statuses:

```text title="Incorrect form"
legal_time @2026-03-10;
```
An undeclared name in place of a window bound is a separate static rejection.

## Correct form

```law
language "law.core" version "0.2";
package recipes.e.r08 version "0.1.0";
namespace "urn:recipe:e-time:08";

entity Person;
relation registered(p: Person);
temporal_resolution_policy CivilDay {
    utc_offset "+05:00";
    day_boundary "00:00:00";
    timezone "Asia/Almaty";
}
relation submitted(p: Person);
rule Report strict {
    for p: Person;
    when registered(p);
    then duty File {
        bearer p;
        goal achievement {
            condition submitted(p);
            window [@2026-03-10T09:00:00+05:00, @2026-03-10T18:00:00+05:00);
        }
    };
}
```

## Frozen execution scene



| Facts / cut | Question | Answer |
|---|---|---|
| legal_time 10.03 without a time | positions | AMBIGUOUS_AS_OF, fatal |
| 10.03 08:00 | File | PENDING |
| 10.03 10:00 | File | ACTIVE |
| 10.03 18:00 | File | UNDETERMINED |

```law
test "dateless as-of stays ambiguous" {
    given {
        context {
            legal_time @2026-03-10;
            decision_time @2026-03-10T12:00:00+05:00;
            knowledge_time @2027-12-31T09:00:00+05:00;
            timezone "Asia/Almaty";
        }
        assert registered(entity_ref("urn:recipe:e-time:08:a"));
    }
    evaluate positions();
    expect issue(AMBIGUOUS_AS_OF);
}
```

```law
test "moment before window pends" {
    given {
        context {
            legal_time @2026-03-10T08:00:00+05:00;
            decision_time @2026-03-10T08:00:00+05:00;
            knowledge_time @2027-12-31T09:00:00+05:00;
            timezone "Asia/Almaty";
        }
        assert registered(entity_ref("urn:recipe:e-time:08:a"));
    }
    evaluate positions();
    expect position(File, PENDING);
}
```

```law
test "moment inside window activates" {
    given {
        context {
            legal_time @2026-03-10T10:00:00+05:00;
            decision_time @2026-03-10T10:00:00+05:00;
            knowledge_time @2027-12-31T09:00:00+05:00;
            timezone "Asia/Almaty";
        }
        assert registered(entity_ref("urn:recipe:e-time:08:a"));
    }
    evaluate positions();
    expect position(File, ACTIVE);
}
```

```law
test "excluded end releases duty" {
    given {
        context {
            legal_time @2026-03-10T18:00:00+05:00;
            decision_time @2026-03-10T18:00:00+05:00;
            knowledge_time @2027-12-31T09:00:00+05:00;
            timezone "Asia/Almaty";
        }
        assert registered(entity_ref("urn:recipe:e-time:08:a"));
    }
    evaluate positions();
    expect position(File, UNDETERMINED);
}
```

## Counterfactual

The Date scene pins AMBIGUOUS_AS_OF. teaches substitutes an undeclared boundary for the window start and requires E2115: that rejection does not replace the demand for an exact cut.

## Boundary

The CivilDay policy defines civil days by a fixed offset, but it does not pick an arbitrary instant inside them. A wrong entry-into-force window is a different question from AMBIGUOUS_AS_OF; this recipe is about the demand for an exact cut.

## Pitfall

A position changes status inside one day. On a 09:00–18:00 window the closed bound is excluded, and at 18:00 the term has already expired. The as-of moment is the decision time (for a dateless law date, the calendar date of the decision); every scene names its decision moment explicitly.