v0.9.0
Added
-
A type declares the keys of its own export line.
export.parts.line:in.schema/<type>.yamlnames the keys one
part writes and the source filling each, drawn from a closed vocabulary covering a part's text, its body, its modal,
a frontmatter field and a table column.kac exportreads that declaration and names no key itself, so a second type
exporting parts costs no code. Glossary is the type that declares one, and itsterms.jsonlis byte for byte what it
was. -
Each type states its own shape version in the export manifest.
export.version:in the schema reaches the
manifest asshapeVersionon that type's entry.formatVersioncovers the envelope alone, so a key added to one
type's line cannot refuse a consumer reading another. -
kac bundlerefuses a component reading a type at a shape the export does not carry. Arequiresentry may name
the shape, asglossary@1. A bareglossaryasks for the type and opens none of its files. Either is trimmed, as
before, where the export carries no such type at all. -
kac validatereports aline:that would export nothing. A key with no source, a source nothing fills, a
front.naming a field no record carries, acolumn.naming a header the type does not declare, and apart.lead
orpart.asideagainst a table row are each an error. So is anexport:block with noversion:.
Changed
export.parts:in a type's schema is a block, and the fidelity moves inside it.export.parts: fullbecomes
export.parts.fidelity: fullwithline:beside it.kac validatereports a type file still carrying the older
form, naming the fidelity, theline:and theversion:it lacks.