GxPlex

Evidence packet — EU GMP Annex 21

One row of this record, assembled so it can be taken somewhere else: what the publisher published, where this record read it, what it hashed, and what changed between two readings it retained. Generated 2026-09-18. It carries no assessment of what the document requires and no reading of what any change means.

The packet, in three formats

Each is the same object. /packet/eu-gmp-annex-21.json carries every field; /packet/eu-gmp-annex-21.md is the same content as plain text; and /packet/eu-gmp-annex-21.zip is an archive of those two together with this row’s slice of the published leaf file and the published root. Every byte in the archive is served at its own address as well; it originates nothing.

Source

Identity as this record holds it for EU GMP Annex 21
FieldValue
Identifier eu-gmp-annex-21
Title EudraLex Volume 4, Annex 21 — Importation of medicinal products
Jurisdiction EU
Address requested https://health.ec.europa.eu/document/download/e2ddfe65-7b4e-4765-b71b-4681772d2949_en
Address answered https://health.ec.europa.eu/document/download/e2ddfe65-7b4e-4765-b71b-4681772d2949_en
Observed cadence monthly
Row /r/eu-gmp-annex-21

The address a request ANSWERED at is this record’s address for the row. The address it aimed at is testimony and is carried beside it, because a redirect is a publisher’s own statement about what supersedes what.

Publisher

The body, and the origin that answered
FieldValue
Authority European Commission
Origin host
Origin read from
Standards body
Standards body read from

No origin host is recorded for this row. The authority named above is the body; the host is a fact about which origin answered, and this row does not carry one.

Type

The class the publisher states, and the kind of record this is
FieldValue
Class, as the publisher states it
Read from
Source kind, recorded here document
Source type, recorded here document
Record tier register

No class statement by the publisher is recorded for this row, so this packet states none. That is an absent reading rather than a document without a class.

Status, and the dates it is held with

The status this record holds for this document, with its dates
FieldValue
Status unknown
Stated as of
In effect from
Last changed
Status read from
Status withdrawn
Decay class live

These are the dates this record holds for the document’s own status. They state nothing about which products or activities the document reaches; that is a judgment, and this record does not make one.

Verification

The act behind the status above, where one is recorded
FieldValue
State a register
What the state states observed daily; no person-verification is promised
Checked by machine
Check date
Last verified

Terms

What this record does with the text of this document
FieldValue
Licence class open
Text retained here yes
A quotation appears in this record yes
Snapshot retained here yes

Readings with retained text

Each distinct digest of the normalised text this record retained, addressed at the reading that first carried it
Reading Days seen Digest Class Answered at Bytes
 #1 24 — last 45769b002c01cd31… canonical-redirect https://health.ec.europa.eu/document/download/e2ddfe65-7b4e-4765-b71b-4681772d2949_en 125,210
 #1 11 — last 6e2055f21776c92c… canonical-redirect https://health.ec.europa.eu/document/download/e2ddfe65-7b4e-4765-b71b-4681772d2949_en 11,532

Digests on this row: 2. With retained text: 2. Without: 0. Series state: comparable.

A digest is over the NORMALISED text of a reading, not over the bytes served: scripts, comments, navigation and page chrome are removed and tags are stripped before hashing. Hashing a source as served will not reproduce these digests. The full digest for every reading is in the packet; the column above is shortened for width.

Changes

One entry per consecutive pair of retained readings, in the order this record first saw each digest. Every entry carries a measured difference or the first condition that refused one. A refused entry was never tested against the conditions after it.

1 transition(s) between the 2 reading(s) above: 0 carry a measured difference, 0 are withheld above the word ceiling, 1 are refused by a rule, 0 differ in the digest and not in the words, and 0 could not be measured.

 #1  #1

These two digests were taken over different kinds of text — one over markup, one over prose extracted from a file — so the words they yield differ for a reason that is not the publisher’s.

From the two records: markup against pdf-text

The two readings, and the verdict on the pair
FieldValue
Earlier digest 45769b002c01cd31f307ccca0a5bd3b7df02ea85ae137964f03ea8676539a9da
Later digest 6e2055f21776c92c910a6304f35775d0d4e8f884ad6cf03210b11815adb3b76c
Verdict refused
Condition referent-normalisation (refused)
Words differing
Removed
Added
The comparison entry this pair on the comparison page, which publishes no words for it

A difference here is a difference between two readings this record retained. It is not a statement about what the document requires, about what changed in substance, or about whether anything follows from it.

Integrity

The root this packet was generated against
FieldValue
Root fd0980cf7ca42518ff7457b92b075df16163772d48d6f75e546b4869fe7bedab
Leaves the root covers 5,393
Algorithm SHA-256 over sorted `id|date|content_hash` lines, pairwise; an odd final node is promoted, never doubled.
Fixed on
Root published at /integrity/root.txt
Leaves published at /integrity/leaves.txt
The commands the verification page
Leaf lines for this row 35

The root is over every leaf line the record holds, not over the lines below. Reducing it needs the published file, which is served whole at the address named here together with the command that reduces it. These lines are this row's own slice of that file, copied verbatim.

eu-gmp-annex-21|2026-08-15|45769b002c01cd31f307ccca0a5bd3b7df02ea85ae137964f03ea8676539a9da
eu-gmp-annex-21|2026-08-16|45769b002c01cd31f307ccca0a5bd3b7df02ea85ae137964f03ea8676539a9da
eu-gmp-annex-21|2026-08-17|45769b002c01cd31f307ccca0a5bd3b7df02ea85ae137964f03ea8676539a9da
eu-gmp-annex-21|2026-08-18|45769b002c01cd31f307ccca0a5bd3b7df02ea85ae137964f03ea8676539a9da
eu-gmp-annex-21|2026-08-19|45769b002c01cd31f307ccca0a5bd3b7df02ea85ae137964f03ea8676539a9da
eu-gmp-annex-21|2026-08-20|45769b002c01cd31f307ccca0a5bd3b7df02ea85ae137964f03ea8676539a9da
eu-gmp-annex-21|2026-08-21|45769b002c01cd31f307ccca0a5bd3b7df02ea85ae137964f03ea8676539a9da
eu-gmp-annex-21|2026-08-22|45769b002c01cd31f307ccca0a5bd3b7df02ea85ae137964f03ea8676539a9da
eu-gmp-annex-21|2026-08-23|45769b002c01cd31f307ccca0a5bd3b7df02ea85ae137964f03ea8676539a9da
eu-gmp-annex-21|2026-08-24|45769b002c01cd31f307ccca0a5bd3b7df02ea85ae137964f03ea8676539a9da
eu-gmp-annex-21|2026-08-25|45769b002c01cd31f307ccca0a5bd3b7df02ea85ae137964f03ea8676539a9da
eu-gmp-annex-21|2026-08-26|45769b002c01cd31f307ccca0a5bd3b7df02ea85ae137964f03ea8676539a9da
eu-gmp-annex-21|2026-08-27|45769b002c01cd31f307ccca0a5bd3b7df02ea85ae137964f03ea8676539a9da
eu-gmp-annex-21|2026-08-28|45769b002c01cd31f307ccca0a5bd3b7df02ea85ae137964f03ea8676539a9da
eu-gmp-annex-21|2026-08-29|45769b002c01cd31f307ccca0a5bd3b7df02ea85ae137964f03ea8676539a9da
eu-gmp-annex-21|2026-08-30|45769b002c01cd31f307ccca0a5bd3b7df02ea85ae137964f03ea8676539a9da
eu-gmp-annex-21|2026-08-31|45769b002c01cd31f307ccca0a5bd3b7df02ea85ae137964f03ea8676539a9da
eu-gmp-annex-21|2026-09-01|45769b002c01cd31f307ccca0a5bd3b7df02ea85ae137964f03ea8676539a9da
eu-gmp-annex-21|2026-09-02|45769b002c01cd31f307ccca0a5bd3b7df02ea85ae137964f03ea8676539a9da
eu-gmp-annex-21|2026-09-03|45769b002c01cd31f307ccca0a5bd3b7df02ea85ae137964f03ea8676539a9da
eu-gmp-annex-21|2026-09-04|45769b002c01cd31f307ccca0a5bd3b7df02ea85ae137964f03ea8676539a9da
eu-gmp-annex-21|2026-09-05|45769b002c01cd31f307ccca0a5bd3b7df02ea85ae137964f03ea8676539a9da
eu-gmp-annex-21|2026-09-06|45769b002c01cd31f307ccca0a5bd3b7df02ea85ae137964f03ea8676539a9da
eu-gmp-annex-21|2026-09-07|45769b002c01cd31f307ccca0a5bd3b7df02ea85ae137964f03ea8676539a9da
eu-gmp-annex-21|2026-09-08|6e2055f21776c92c910a6304f35775d0d4e8f884ad6cf03210b11815adb3b76c
eu-gmp-annex-21|2026-09-09|6e2055f21776c92c910a6304f35775d0d4e8f884ad6cf03210b11815adb3b76c
eu-gmp-annex-21|2026-09-10|6e2055f21776c92c910a6304f35775d0d4e8f884ad6cf03210b11815adb3b76c
eu-gmp-annex-21|2026-09-11|6e2055f21776c92c910a6304f35775d0d4e8f884ad6cf03210b11815adb3b76c
eu-gmp-annex-21|2026-09-12|6e2055f21776c92c910a6304f35775d0d4e8f884ad6cf03210b11815adb3b76c
eu-gmp-annex-21|2026-09-13|6e2055f21776c92c910a6304f35775d0d4e8f884ad6cf03210b11815adb3b76c
eu-gmp-annex-21|2026-09-14|6e2055f21776c92c910a6304f35775d0d4e8f884ad6cf03210b11815adb3b76c
eu-gmp-annex-21|2026-09-15|6e2055f21776c92c910a6304f35775d0d4e8f884ad6cf03210b11815adb3b76c
eu-gmp-annex-21|2026-09-16|6e2055f21776c92c910a6304f35775d0d4e8f884ad6cf03210b11815adb3b76c
eu-gmp-annex-21|2026-09-17|6e2055f21776c92c910a6304f35775d0d4e8f884ad6cf03210b11815adb3b76c
eu-gmp-annex-21|2026-09-18|6e2055f21776c92c910a6304f35775d0d4e8f884ad6cf03210b11815adb3b76c

What this packet does not carry

the words that differ
A count of a difference is in this packet; the words are not. They are a publisher's text, and this record checks borrowed text only on the surfaces it enumerates — a packet carrying spans under a key those checks do not read would be borrowed text nothing verifies. Each change names the comparison entry for the same pair, and says which of the two is at that address: the words, where a difference was measured and is inside the word ceiling; otherwise the same condition this entry names, with no text of the document.
this records own prose
The row's summary and its account of an unresolved address are this archive's own voice. They are leads and not evidence, however accurate, because a faithful paraphrase is indistinguishable from evidence while remaining ours. They are published on the row's page and are not here.
any field that would characterise a change
No score, no rank, no ordering by judgment, no reading of what a change means and no word for how much of it counts. A packet is evidence taken elsewhere, and a field characterising it would be an opinion with digests attached.
a recomputed root
The integrity block states the root this record published and the leaf lines for this row. It computes no root of its own: two numbers this record produced, compared with each other, check nothing.

The conditions, in the order they are evaluated

A change names the FIRST condition that fired and was never tested against the ones after it, so a condition naming no change here is not a condition this row passed. Not reached is not none: Three of the conditions belong to the form of the comparison that resolves two dates. Every comparison in this packet is formed from readings addressed by the key the store gives them, so those three are never evaluated here: their absence from the entries above records that they were not tested, rather than that they were tested and did not fire.

Each condition, how many of this row’s 1 transition(s) it refused, and what it states
Condition Changes What it states
licence-restricted none No text from this document appears on this site, so no difference between two readings of it is shown either. The digests, the dates and the addresses are the record for this row.
licence-unread none No reading of the terms this source states is recorded for the row. That is an absent reading rather than an absent term, and the row is handled here exactly as a restricted one until a reading is recorded.
date-not-observed not reached No observation of this row on that day holds retained text.
date-not-unique not reached That day holds more than one distinct retained digest for this row, so a date alone does not name one observation. The addressed form — the day and the sequence within it — does.
one-point not reached Both dates resolve to the same observation.
referent-unclassified none The class of one of these observations could not be read, so neither was shown to be an observation of the document itself.
referent-class none One of these observations is not of the document. A listing page that names the document and the document are different subjects, and a difference between them is not a difference in the document.
referent-normalisation 1 These two digests were taken over different kinds of text — one over markup, one over prose extracted from a file — so the words they yield differ for a reason that is not the publisher’s.
referent-address none These two observations answered at different addresses. A difference between them is at least in part a difference between two pages.
text-not-retained none No normalised text is held here for one of these observations, so there is nothing on this side to compare.
snapshot-unreadable none Normalised text is recorded for one of these observations and could not be read from this record.
span-unverified none A span this comparison would have shown could not be found, word for word and in that order, in the retained text it was drawn from. The comparison is withheld rather than shown: a phrase assembled out of words a publisher did not write next to each other is a fabricated measurement of what the publisher wrote.
over-ceiling none A faithful difference is longer than the word ceiling this site publishes under. It is withheld whole rather than cut to fit: a shortened quote is a fabricated measurement of what a publisher wrote. The figures below are counts of the difference, not the difference.

Word ceiling: 14. Where a faithful difference is longer than that, the verdict is withheld and no words are published for it: a shortened span is a fabricated measurement of what a publisher wrote, so it is withheld whole rather than cut to fit. How this record is built.

Last updated: