docs← Back to article

Markdown for LLMs

nb-20 solutions — Sources, time, and outside data

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

Download this articlePlain text ↗
# nb-20 solutions — Sources, time, and outside data

*Checkable against a scratch copy of
`packs/examples/language-demo/sourcetime` carrying the patch below
(the repo package itself stays untouched: 20 checked, 20 passed).
Identifiers and code as written. Verified with `law 0.1.0`,
`law.core/0.2`, on 2026-10-03.*

## Quiet hours as article 2b

Three places change, in this order — bytes, hashes, delta:

1. Append to `sources/northbridge-overnight-2026-en.txt`, after the
   article 2a line, separated by a blank line:

```text
Article 2b. Quiet hours (2026). Quiet hours are 23:00 to 07:00.
```

2. New fragment in the 2026 English edition (before
   `PARKING_2026_ART2A_EN`):

```law
fragment PARKING_2026_ART2B_EN in ORD_2026_EN {
    kind article;
    locator "article/2b";
    label en unofficial "Article 2b. Quiet hours (2026, training text)";
    text en unofficial """Quiet hours are 23:00 to 07:00.""";
    content_hash "sha256:93fadfb3a9415c960921f26f1501f7cb440a838bdb3d0b5e4fcb3d68d80c30a8";
}
```

The hash is `sha256` of exactly `Quiet hours are 23:00 to 07:00.`
— no trailing newline. The sentence must occur verbatim in the
file, or `E5202` fires even with the right hash.

3. New operation at the end of `Statute2025To2026` (after the 2a
   insert, same `effective` — different locator, so no `E5403`):

```law
    op insert {
        locator "article/2b";
        language en;
        text """Quiet hours are 23:00 to 07:00.""";
        effective @2026-06-01;
    }
```

4. The longer file changes the publication hash. Recompute over
   the file bytes and replace the `content_hash` of
   `ORD_2026_EN_TEXT`:

```text
sha256:e09c9aabb1493be9e5574092e3a60e92aa5550a65e6307cb1cfc17a8da5e99ab
```

Skip step 4 and `law engine check` answers
`LDC-E5204 ... не дают объявленный content_hash` — the chain
bytes → publication → fragment → operation has four links, and
the checker walks all of them.

**Expected `consolidate` listing** (exit 0):

```text
article/2 (en)
article/2a (en)
article/2b (en)
```

**Expected `diff-editions` against `ORD_2025`** (exit 0):

```text
~ article/2 (en)
+ article/2a (en)
+ article/2b (en)
- article/1 (en)
```

The repealed article 1 stays gone; the two June inserts share
one date and apply in author order.