Markdown for LLMs
Correct an event with a new version
The source Markdown for this article. Copy it into your assistant or download it as a text file.
# Correct an event with a new version
## Intention
I want to correct an event's time while keeping the earlier record.
An event keeps its identity; a correction is a new version, never a rewrite.
## Incorrect form and why it stays silent
A second payload under the previous id is not a correction.
```text title="Incorrect form"
Filed { id: "urn:recipe:n-package:03:old", time: @2026-09-12T11:00:00+05:00 }
```
When original is present this is fatal `EVENT_ID_CONFLICT`.
## Correct form
A correction has a new id and a `supersedes` reference to the old one.
```law
language "law.core" version "0.2";
package recipes.n.r03 version "0.1.0";
namespace "urn:recipe:n-package:03";
event Filed {}
relation present();
assert present();
const original: Filed = Filed {
id: "urn:recipe:n-package:03:old",
time: @2026-09-12T09:00:00+05:00
};
const corrected: Filed = Filed {
id: "urn:recipe:n-package:03:new",
time: @2026-09-12T11:00:00+05:00,
supersedes: "urn:recipe:n-package:03:old"
};
```
## Frozen execution scene
| Facts | Question | Answer |
|---|---|---|
| original and corrected | present() | TRUE_ONLY, without EVENT_ID_CONFLICT |
| Additionally another time for the old id | present() | EVENT_ID_CONFLICT |
```law
test "new version keeps history" {
given {
context {
legal_time @2026-09-13;
decision_time @2026-09-13T09:00:00+05:00;
knowledge_time @2026-09-13T09:00:00+05:00;
timezone "Asia/Almaty";
}
}
evaluate truth(present());
expect truth_status == TRUE_ONLY;
expect not issue(EVENT_ID_CONFLICT);
}
```
```law
test "old id resists rewrite" {
given {
context {
legal_time @2026-09-13;
decision_time @2026-09-13T09:00:00+05:00;
knowledge_time @2026-09-13T09:00:00+05:00;
timezone "Asia/Almaty";
}
const overwritten: Filed = Filed {
id: "urn:recipe:n-package:03:old",
time: @2026-09-12T11:00:00+05:00
};
}
evaluate truth(present());
expect issue(EVENT_ID_CONFLICT);
}
```
## Counterfactual
The second scene presents the incorrect form from part 2. A static `teaches` counterfactual additionally closes `supersedes` on its own id: `LDC-E1343`.
## Boundary
The rule that chooses the chain head does not allow two competing corrections. A break, a cycle, and two heads are EVENT_VERSION_CHAIN_BROKEN.
## Pitfall
A package constant and an assertion argument with the same id and different times must stop the document. Correction is only a new version.