Skip to content

v0.16.0

Choose a tag to compare

@github-actions github-actions released this 28 Aug 21:03
b9c053f

Changed

  • kac export carries a field its type declares as a list. Every such field was written as null on every record,
    which reads exactly as a record that holds nothing. A list now travels as a JSON array, and an entry the type
    declares as an object carries the keys that declaration names. A list a record left empty stays null, beside the
    field it never wrote. docs/design/export.md states the shape.

  • The glossary exports tags. It is the first field to travel as a list. A consumer holding a vendored glossary
    can filter its records by subject without reading each Scope. The key lands on glossary/<record>.json, and a term
    line in terms.jsonl carries no tags.

  • kac new no longer sends a corpus a link to a type it declined. A type's root page and its _template.md name
    the other types and link to them, which is what makes a full corpus navigable and what left a corpus adopting a subset
    holding dead links. Each page is now unlinked as it is written: a reference to a declined type keeps its own wording
    and loses its link, so That is a [service](services.md). arrives as That is a service.

    The same happens on kac update --add-type, for the page that arrives, and on kac update --policy full, which now
    holds a seed to the template as this corpus would have received it rather than as it was authored. Without that a full
    update wrote the links back.

    This reaches the pages a corpus receives once and then owns. A framework document is shared word for word, and
    framework-names-types goes on holding it to naming a type rather than linking to one.

    A link into another type's folder has no such repair, because its text names a record. Two seed pages defined one as
    a reference link, which reached a corpus whole, so glossary.md and frameworks.md now name the record without
    linking it.

  • kac update --add-type says what the arriving page does not get. The new page links to the types the corpus
    holds. The pages already there name it without linking, because each was written while the type was still declined,
    and changing them is the corpus's own call.

  • kac validate no longer refuses a schema for naming a type the corpus declined. A field's ref: and a type's
    versus: each name a type, and a corpus adopts as many types as it has use for. .schema/standards.yaml alone
    reaches four other types, through ref: on four fields and a versus: naming one of them again, so a corpus adopting
    standards and nothing else met five schema-dispatch errors on a schema it had just been sent. Both declarations are
    now left alone where no schema covers the type. Nothing is rendered, and kac update --add-type starts the reference
    without an edit to .schema/.

    What a record is held to does not soften with it. ref-resolves goes on asking that a cited id exists, and a field
    whose every declared type this corpus turned down now admits nothing rather than everything. It names the types the
    declaration wanted, since a type nothing covers has no label to read:
    'derived-from' points at 'std-0002', which is a Standard. The field points at 'adrs', which this corpus did not adopt.

    With this and the unlinking above, kac new adopting any single type writes a corpus that validates and exits 0.

  • kac update --drop-type asks before it deletes. Giving up a type deletes its page and leaves every page still
    naming it holding a dead link. The run says so, says that kac validate reports the ones it can reach, and waits for
    an answer. The question takes no by default. --yes answers it in advance, and a run with no terminal and no
    --yes refuses rather than guessing.