Markdown for LLMs
Exercise 13. A second article from the same bytes
The source Markdown for this article. Copy it into your assistant or download it as a text file.
# Exercise 13. A second article from the same bytes
An exercise for the [reconciliation with the pinned
edition](/tutorials/pinned-edition/) page. The page's publication is
pinned as a whole, while one fragment is taken from it: article 4. The
same bytes hold article 5:
```text
Статья 5. Приостановление
Действие читательского билета приостанавливается на срок до шести месяцев
решением директора архива при нарушении настоящих правил.
```
The quoted article reads: "Article 5. Suspension. A reader ticket is suspended for up to six months by the archive director's decision upon violation of these rules."
**Setup.** Add the article-5 fragment and a norm on it: a director's
suspension decision yields `TRUE_ONLY` on the question "is the ticket
suspended". Then find out what happens if the fragment writes "nine
months" and the fragment hash is recomputed for the new text.
**Hint.** A fragment faces two checks, and they differ: the fragment
text's hash and this text's occurrence in the publication's pinned bytes.
A correct hash of a wrong text passes the first and falls on the second.
Below is the solution. Try it yourself first.
## Solution
The source, edition, and publication from the page:
```law
language "law.core" version "0.2";
package tutorial.archive.pinned version "0.1.1";
namespace "urn:law:tutorial:archive:pinned";
entity Person;
entity Official;
relation in_researcher_registry(p: Person) kind institutional;
relation accredited(p: Person) kind institutional;
relation may_enter_rare_room(p: Person) kind institutional;
relation director(d: Official) kind institutional;
relation suspension_decision(d: Official, p: Person) kind empirical;
relation reader_suspended(p: Person) kind institutional;
source ARCHIVE_RULES {
kind municipal_act;
jurisdiction VELIKY_USTIN;
number "2026-14";
label ru-KZ official "Правила пользования городским архивом Великого Устина";
}
edition ARCHIVE_RULES_2026_RU of ARCHIVE_RULES {
language ru;
officiality official;
adopted @2026-01-15;
in_force [@2026-02-01, infinity);
materialization_status PINNED_OFFICIAL_BYTES;
}
publication ARCHIVE_RULES_2026_RU_TEXT of ARCHIVE_RULES_2026_RU {
media_type "text/plain; charset=utf-8";
uri "urn:tutorial:archive-rules-2026:ru";
retrieved_at @2026-01-20T09:00:00Z;
content_hash "sha256:946bf1049eb7c2ac4a0a7c10f521d956ffe62f08e3a656a8fd0cdc0fa45d65c9";
local_path "sources/archive-rules-2026.txt";
}
```
The label reads: "Rules of use of the Veliky Ustin city archive".
Two fragments from one publication and two norms:
```law
fragment ARCHIVE_RULES_ART4 in ARCHIVE_RULES_2026_RU {
kind article;
locator "article/4";
text ru official """Читатель допускается в зал редких фондов, если он состоит в реестре
исследователей и имеет действующую аккредитацию.
""";
content_hash "sha256:7f76a4311e52b9af58fcf3175f613794316583ae19c4f0767d0570774a456688";
}
fragment ARCHIVE_RULES_ART5 in ARCHIVE_RULES_2026_RU {
kind article;
locator "article/5";
text ru official """Действие читательского билета приостанавливается на срок до шести месяцев
решением директора архива при нарушении настоящих правил.
""";
content_hash "sha256:8a7d7475f910d1b528af7827b5a9709d2755c0707ec61160c4a850bd2b7438ec";
}
@source(ARCHIVE_RULES_ART4)
rule RareRoomAccess strict {
for p: Person;
when in_researcher_registry(p) and accredited(p);
then may_enter_rare_room(p);
}
@source(ARCHIVE_RULES_ART5)
rule SuspensionByDirector strict {
for d: Official;
for p: Person;
when director(d) and suspension_decision(d, p);
then reader_suspended(p);
}
```
The quoted fragments read: "A reader is admitted to the rare-collections room if listed in the researcher registry and holding a valid accreditation" and "A reader ticket is suspended for up to six months by the archive director's decision upon violation of these rules."
The norm takes from the article only the "director's decision —
suspension" link. The up-to-six-months term and the "upon violation of
the rules" ground are not expressed in the norm, an honest boundary:
the term would need the decision date and a counting policy, the ground
a violation fact. Both are other pages' subjects.
## Check
A director's suspension decision yields `TRUE_ONLY` on
`reader_suspended(ivanova)`; without a decision — `NEITHER`.
The check's second half is a hand-made mutation from the setup. Replace
"six" with "nine" in the fragment and recompute the fragment hash for the
new text (`sha256:0fcb4c08a46a…`). The hash check passes, while the
pinned-bytes occurrence check falls:
```text
error LDC-E5202: fragment "ARCHIVE_RULES_ART5": официальный текст (ru) не найден
в закреплённых байтах публикации "ARCHIVE_RULES_2026_RU_TEXT" — §194 fragment text
not found in pinned publication
```
The diagnostic reads: 'fragment "ARCHIVE_RULES_ART5": official text (ru) not found in the pinned bytes of publication "ARCHIVE_RULES_2026_RU_TEXT"'.
Exactly this check tells a pinned edition from the author's honest word.
This lesson is held differently: the broken copy is checked in
a temporary directory lacking the `sources/` file, where any refusal is
`LDC-E5204` "bytes unreadable", not `LDC-E5202`. For the same reason the
`LDC-E5204` lesson on the pinned-edition page passes regardless of
what exactly is broken in it.
What the exercise teaches. A fragment is a quotation, checked twice:
against itself and against the source. Editing a quotation "to the
meaning" will not pass even with a recomputed hash. What the article
holds but the norm lacks is named explicitly, in prose next to the norm.