• v4.1.0 cfe925a76c

    v4.1.0
    CI / verify (push) Successful in 53s
    Release / release (push) Successful in 36s
    Stable

    torben released this 2026-09-03 04:22:53 +00:00 | 80 commits to main since this release

    4.1.0 - 2026-09-03 - Link-Taxonomie: Lint-Findings hart ab kb_version 4.0.0, outbound: an das Type-Spec gebunden, part-of/composition als Inversenpaar

    Author: Torben Nehmer

    Der Rest von Issue #40, nachdem die Korpus-Migration durch ist: die beiden aufgeschobenen
    Lint-Findings werden hart, und die drei Befunde aus dem Abschlusskommentar des Migrationslaufs
    werden aufgelöst.

    unlabelled_edges und unauthorised_labels sind harte Fehler — aber an kb_version
    gebunden, nicht an ein Datum.
    Der Weg, den legacy_citation_markers genommen hat, war ein
    Umlegen in einer späteren Version: eine Instanz, die die Zitat-Migration noch schuldete, lebte
    danach mit rotem Lint. Das Ledger kann die Frage inzwischen beantworten, also tut es das.
    Unterhalb kb_version 4.0.0 bleiben beide beratend — genau das Fenster, in dem
    instructions/migrations/4.0.0-link-taxonomy.md der Instanz sagt, sie solle den halb
    konvertierten Korpus Einheit für Einheit publizieren; ein Check, der dabei fehlschlägt, würde
    den Korpus verweigern, dessen Fortschritt er misst. Ab 4.0.0 ist eine kahle Titelangabe in
    related: keine Seite mehr, die auf ihre Umstellung wartet, sondern eine Kante, deren Autor
    nicht gesagt hat, was sie behauptet. hard_error_keys() liefert die jeweils geltende Menge,
    HARD_ERROR_KEYS bleibt die vollständige.

    outbound: ist an das Type-Spec gebunden. kb/sources/ und kb/comparisons/
    autorisierten Label, die dort strukturell nicht schreibbar waren: keiner der beiden Type-Specs
    führte ein related:. Folgenlos war das nicht — die einzige Comparison-Seite des Korpus trug
    - **compares-with:** [[amd-pstate]] als handgeschriebene Prosa, ohne Marker-Region, ohne
    Frontmatter, für lint unsichtbar. Also ein Identifier zurück im Fließtext, gut vier Stunden
    nachdem 4.0.0 genau das beendet hatte. Eine leere Autorisierung liest sich als Lizenz.

    Aufgelöst nach dem, was die beiden Contracts jeweils selbst sagen: comparison bekommt ein
    related: (die compares-with-Kante gegen jedes Subjekt ist die eine Aussage, für die die
    Seite existiert), kb/sources/ verliert seinen outbound:-Block ersatzlos (dessen Contract
    sagt ausdrücklich, seine Verknüpfungen seien der mechanische Provenance-Pfad und keine
    Autorenkanten). Neu prüft docs verify die Kombination: ein outbound:-Block auf einer
    Collection, in die kein Typ mit related: schreibt, ist ein Befund und nennt beide Richtungen
    der Reparatur.

    composition / part-of ist das dritte Inversenpaar, neben depends-on / required-by
    und runs-on / hosts. Aus der Messung, nicht vom Schreibtisch: der u3-Lauf hatte entschieden,
    die Gegenseite eines composition bekomme see-also, weil part-of ein Spiegel wäre. Ist es
    nicht — der Satz des Elternteils zählt seine Teile auf, der des Kindes benennt das Ganze, zu
    dem es gehört, und ein Leser, der auf dem Kind landet, braucht den zweiten. Übrig blieben 16
    see-also-Kanten für eine Beziehung, für die der Katalog ein Wort hat; sie sind auf part-of
    umgestellt. Ein Inversenpaar macht die Gegenkante weiterhin nicht zur Pflicht — Richtung
    wird verfasst, nicht gespiegelt —, es legt nur fest, welches Label sie trägt, wenn jemand sie
    schreibt.

    Stack- und Korpusänderung laufen hier in einem Zug, entgegen der sonstigen Trennung. Der
    neue docs verify-Check würde eine bestehende 4.0.x-Instanz beim bloßen Kopieren der neuen
    Maschinerie fehlschlagen lassen, weil deren kb/sources/COLLECTION.md den outbound:-Block
    noch trägt — nach instructions/dev/version-parts.md
    Schritt 1 ein Grenzübertritt. Statt dafür eine 5.0.0 zu lösen, ist die Ursache mitbeseitigt:
    die Collection-Contracts dieser Instanz sind angepasst, und dist export leitet die
    COLLECTION.md.template daraus ab, also liefert jede neue Distribution die korrigierte Form
    aus. Für eine bereits bestehende 4.0.x-Instanz bleibt eine Handbewegung übrig, und sie wird
    hier benannt statt versteckt: die zwei outbound:-Zeilen aus kb/sources/COLLECTION.md
    löschen. Das neue related: im comparison-Type-Spec erreicht sie ohnehin nicht — die vier
    Page-Type-Specs gehören seit 4.0.0 der Instanz und werden nur als .template ausgeliefert.

    Offen aus #40 bleibt nichts mehr; Befund 2 des Migrationslaufs (dem Katalog fehlt ein Register
    für Urheberschaft) ist als eigenes Issue erfasst.

    Downloads