Exercise 13. A second article from the same bytes
An exercise for the reconciliation with the 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:
Статья 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
Section titled “Solution”The source, edition, and publication from the page:
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:
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.
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:
error LDC-E5202: fragment "ARCHIVE_RULES_ART5": официальный текст (ru) не найденв закреплённых байтах публикации "ARCHIVE_RULES_2026_RU_TEXT" — §194 fragment textnot found in pinned publicationThe 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.
Documentation for Arxo. Writings — blog.arxo.io.
Anonymous visit counts on stats.arxo.io, no cookies.