v0.16.0
Changed
-
kac exportcarries a field its type declares as a list. Every such field was written asnullon 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 staysnull, beside the
field it never wrote.docs/design/export.mdstates 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 eachScope. The key lands onglossary/<record>.json, and a term
line interms.jsonlcarries notags. -
kac newno longer sends a corpus a link to a type it declined. A type's root page and its_template.mdname
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, soThat is a [service](services.md).arrives asThat is a service.The same happens on
kac update --add-type, for the page that arrives, and onkac 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-typesgoes 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, soglossary.mdandframeworks.mdnow name the record without
linking it. -
kac update --add-typesays 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 validateno longer refuses a schema for naming a type the corpus declined. A field'sref:and a type's
versus:each name a type, and a corpus adopts as many types as it has use for..schema/standards.yamlalone
reaches four other types, throughref:on four fields and aversus:naming one of them again, so a corpus adopting
standards and nothing else met fiveschema-dispatcherrors on a schema it had just been sent. Both declarations are
now left alone where no schema covers the type. Nothing is rendered, andkac update --add-typestarts the reference
without an edit to.schema/.What a record is held to does not soften with it.
ref-resolvesgoes 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 newadopting any single type writes a corpus that validates and exits 0. -
kac update --drop-typeasks 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 thatkac validatereports the ones it can reach, and waits for
an answer. The question takes no by default.--yesanswers it in advance, and a run with no terminal and no
--yesrefuses rather than guessing.