Repository navigation
0.0.4
·
70 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
Added
- Every icon the site should carry, from the one authority.
/favicon.icois
served at the site root for a client that asks for it directly, the landing
page links the brand palette instead of restating its hex values, and the
book's tab icons are staged fromassets/brand/at assembly time rather than
committed as a second copy.assets/brand/README.mdrecords where each file
is used, and why five of them are deliberately used by nothing (#94). - A field carries the reference bands its template states beside the value
(#52). openEHR RM Release-1.1.0data_types.htmlsection 6.2.1 gives every
DV_ORDEREDanormal_status, anormal_rangeand
other_reference_ranges, none of them entered by a clinician, and the
derivation used to drop all three. They now sit in
field::ReferenceRanges, reachable only from a field or a choice
alternative and never from a field's kind or a group's items, so a renderer
shows them without reading a Reference Model class name to tell metadata
from an entry field. A band reuses the value shape of the class it is stated
over: a status carries the value set of a coded field, and a range carries
the interval shape of the class the value collects. The three attributes are
no longer refused as unentered, and a band the derivation cannot represent
is refused by name rather than dropped. - What "equivalent" means for the two ADL readers is defined in one place,
cited, with the six differences accepted as legitimate and a count for each
allowance it spends, and the matched pair is compared as a whole value so a
field the internal constraint model grows cannot be left out of the
comparison (#59). The published dual-dialect archetype library cannot supply
the ADL 1.4 half of that comparison: the twins are ADL 1.4 text, the ADL 1.4
reader takes an ITS-XML operational template, nothing in the pinned crates
turns one into the other, and every one of the 321 ADL 2 halves declares
itselfgeneratedfrom its 1.4 twin. What the library does prove is
asserted over all 321 pairs: for the 300 whose ADL 2 half the reader reads,
the internal model names the same concept, in the same language, over the
same Reference Model class as the published ADL 1.4 twin. docs/architecture.mdsection 6.5 records the five things the replay's
outcome classes left underdetermined, decided while implementing #19 and
#20. The load-bearing one is that aretypedoutcome is unreachable from
the key alone, because a field's key step saysELEMENTwhile the field
collects aDV_*class. Section 11 states where the line between
ferrochart-formandferrochart-overlayfalls and why (#72).docs/architecture.mdsection 6.5 records why one document state is a
refusal at authoring time and an advisory afterwards, and section 11 stops
reading as thoughferrochart-formwere dependency-free. Two doc comments
that had gone stale with the type move are corrected, and the hint map's
ordering is asserted beside the type that has to keep it rather than in
another crate's test suite.- The book covers what the overlay carries, why its geometry is a column grid,
and what a replay reports, and says which releases are published and what
the compiler measurably does. - The citation rule says that
docs/architecture.mdis citable, because it is
the design of record and permanent, while a plan document is not. The rule
banned "an internal markdown file" while justifying the ban with plan
documents, which left every architecture citation in the overlay crate
arguably against the rules. Also fixes acodegen.mdreference to a
CLAUDE.mdheading that does not exist (#77) and a prose deferral where a
TODObelongs (#78). - The replay runs against the largest real difference the corpus can produce
(#21): an overlay authored on every node of one CKM entry, replayed against
a second entry for the same clinical concept. Nothing survives, and that is
the point: the two differ in the pinned name of nearly every node, so 0 of
171 entries match and the replay reports 7 moved, 164 disappeared and 181
appeared rather than rebinding layout onto nodes that merely look similar.
Every entry is still accounted for and every key still held. - A printed node key carries every part that decides whether it matches (#83):
the identifier, the Reference Model class, the pinned name and, where the
step is not the first of its tied siblings, the ordinal. The shape follows
the AQL node predicate. Before this, 40 distinct keys printed alike across
two real CKM entries while none of them matched, so a replay report could
show a person the same string twice and ask them to decide between them. A
test over the whole corpus asserts that two keys printing alike are the same
key. - The layout overlay and its store (#19), in
ferrochart-overlay. An overlay
carries what no specification governs: field order, authored sections,
labels, help text, defaults, conditional visibility and widget choice. It is
stored apart from the compiled definition and keyed by the node key of
docs/architecture.mdsection 6.2, whose every step carries the Reference
Model attribute, the node id, the archetype id, the Reference Model type and
the pinned name, with a sibling ordinal only where all five tie. The store
normalizes a key against the definition rather than trusting it: an entry
that decorates no node of the form is refused, and an entry whose key names
several nodes is reported as positionally keyed instead of being resolved
silently. It records which form the template identifier takes, because
openEHR ITS-REST Release-1.1.0definition.htmlresolves a partial
identifier to the latest major version, and none of the 123 committed CKM
templates pins a release in its own identifier. The serialisation is
byte-deterministic and round-trips. - The replay and the differential report (#20). A replay against a recompiled
definition classifies every entry as matched, disappeared, moved, ambiguous,
reordered or retyped, and names every node of the form that carries no
layout yet. Nothing is discarded and nothing is rebound: an unmatched entry
is retained against its old key so a later revision that restores the node
restores its layout, and a move is a suggestion a person accepts. The report
prints as text a form author can read, saying which entries survived, which
need a decision and what changed about each. Authoring a layout on every one
of the 4,447 nodes of the committed pack and replaying it comes back fully
matched, and the 102 nodes in 4 templates that no key can tell apart are
reported rather than guessed at. - The overlay's geometry (#69), a column grid that stores no coordinate. A
section declares a column count of 1 to 12, and an item carries a span, a
break-before flag and a width hint in character units. Nothing stores a row
or a column index: an item's place is the sibling order the overlay already
carries plus its span and break, so the visual order of a form equals its
source order by construction, which is what W3C WCAG 2.2 success criterion
1.3.2 asks for. A span wider than its section is refused naming both
numbers, a section wider than four columns is stored and advised against,
and a renderer clamps a span to a narrower grid rather than the overlay
dropping it, so one authored form serves a ward-round tablet and a desk. A
per-item hint map carries what the grid cannot express, uninterpreted and
outside the clean-replay guarantee. A replay reports what became of the
geometry beside what became of the key: a span that no longer fits the
section it lands in, and an entry whose section was dropped. The overlay
format version is 2, and version 1 is refused rather than read as a form
whose author chose one column. - A landing page at the site root, with the book under
/docs/(#92).
scripts/site/assemble.shputswebsite/landing/at/, the mark and the
favicons fromassets/brand/under/assets/brand/, and the built book
under/docs/; the Docs workflow uploads that assembled directory. The
book'ssite-urlis/docs/, so its asset, search and 404 links resolve
under the prefix, and its 404 page is promoted to the site root where
GitHub Pages serves it for a miss anywhere. The page draws only on the
"Rose & Iron" tokens and the contrast ratiosassets/brand/README.md
records, and it separates what is built from what is not: 121 of the 123
vendored CKM templates derive a form, and nothing yet renders a form to a
clinician, builds a COMPOSITION, or offers a surface for authoring layout.
Changed
- The overlay's layout types moved from
ferrochart-overlayto
ferrochart-form, wheredocs/architecture.mdsection 11 puts them (#72).
Layout,Section,Visibility,Condition,WidgetNameand the column
grid now live beside the definition they decorate, because a renderer applies
a layout and has no business with the store, the authoring session or the
replay, which read and write files and compare two definitions. The stored
document is unchanged, byte for byte.ferrochart-overlaykeeps the store,
the key normalization, the replay and the report, and re-exports nothing it
does not own, so a caller that needs a layout type namesferrochart-form.
scripts/checks/crate-closure.shis the new CI lane that holds the boundary:
it walks the resolved dependency closure and fails whenferrochart-form
links any other crate of this tree, or whenferrochart-rendererlinks
anything butferrochart-form.
Fixed
- The compiler refuses a quantity magnitude or precision it cannot represent,
naming the units and what it found, instead of reading part of the
constraint and leaving the field wider than the template (#86). - The compiler refuses a reference band stated on the end of an interval
instead of dropping it (#87). - The book at ferrochart.eu serves the brand favicon. It served mdBook's
default whileassets/brand/favicon.svgsat unused in the repository (#94). - Every "Suggest an edit" link in the book.
edit-url-templateended in
src/{path}and mdBook expands{path}to a path that already begins with
src/, so each link pointed atwebsite/book/src/src/…and returned a 404. - The book's introduction said there is no binary and listed the architecture
and the gates as what exists. Three releases publish binaries for four Linux
targets, and the compiler derives a form from 121 of the 123 committed
templates. It now says what works and what does not.