Skip to content

0.0.4

Choose a tag to compare

@github-actions github-actions released this 07 Sep 14:00
· 70 commits to main since this release
Immutable release. Only release title and notes can be modified.
v0.0.4
ae21757

Added

  • Every icon the site should carry, from the one authority. /favicon.ico is
    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 from assets/brand/ at assembly time rather than
    committed as a second copy. assets/brand/README.md records 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.0 data_types.html section 6.2.1 gives every
    DV_ORDERED a normal_status, a normal_range and
    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
    itself generated from 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.md section 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 a retyped outcome is unreachable from
    the key alone, because a field's key step says ELEMENT while the field
    collects a DV_* class. Section 11 states where the line between
    ferrochart-form and ferrochart-overlay falls and why (#72).
  • docs/architecture.md section 6.5 records why one document state is a
    refusal at authoring time and an advisory afterwards, and section 11 stops
    reading as though ferrochart-form were 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.md is 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 a codegen.md reference to a
    CLAUDE.md heading that does not exist (#77) and a prose deferral where a
    TODO belongs (#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.md section 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.0 definition.html resolves 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.sh puts website/landing/ at /, the mark and the
    favicons from assets/brand/ under /assets/brand/, and the built book
    under /docs/; the Docs workflow uploads that assembled directory. The
    book's site-url is /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 ratios assets/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-overlay to
    ferrochart-form, where docs/architecture.md section 11 puts them (#72).
    Layout, Section, Visibility, Condition, WidgetName and 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-overlay keeps 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 names ferrochart-form.
    scripts/checks/crate-closure.sh is the new CI lane that holds the boundary:
    it walks the resolved dependency closure and fails when ferrochart-form
    links any other crate of this tree, or when ferrochart-renderer links
    anything but ferrochart-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 while assets/brand/favicon.svg sat unused in the repository (#94).
  • Every "Suggest an edit" link in the book. edit-url-template ended in
    src/{path} and mdBook expands {path} to a path that already begins with
    src/, so each link pointed at website/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.