You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Added
Seven more types travel in an export..schema/ declares an export: block at shape 1 on adrs, deviations, nfrs, reports, runbooks, services and tools, so kac export writes one JSON per record for
each of them. deviations carries owner, because a register that says what was excused without saying who excused
it is not a register. runbooks carries Symptoms and no steps, for the reason processes carries no steps. discoveries holds everything back still, and its schema file says why. A standard now carries derived-from too,
so the ADR behind a rule resolves for a consumer holding both. Take them with kac update --from <template>.
kac validate warns where an optional field is written with no value.empty-optional-key reports a
bare key on a field the schema does not require, because it says exactly what leaving the key out says. A
required field is the other case, and required-field still reports that one. A field declaring required-when: is exempt. The templates a corpus starts from now carry the required fields alone, and each
one names the optional fields it leaves out. Take those with kac update --from <template>.
A plugin component can declare itself standalone.metadata.components in plugin.json takes "standalone": true on a component whose requires is empty. kac bundle trims an empty-requires component when
every component reading a type has gone, because such a component exists to support those. A standalone one supports
nothing and serves the reader, so it now survives that sweep. Take it with kac update --from <template>.
raise-finding, the skill that files what a session noticed about a corpus. The plugin's export is frozen, so an
issue on the repository that published it is the only route back. The body carries the keys a discoveries record
needs, and the skill asks before it files, every time. Take it with kac update --from <template>.
request-deviation, the skill that asks a clause's owner to accept a departure from it. The body carries the keys
a deviations record needs, and leaves owner and accepted-on to the reply, because the individual accepting the
risk is what the request asks for. It files inside the organisation holding the plugin and nowhere else, and it asks
before it files. Take it with kac update --from <template>.
A control travels in an export..schema/controls.yaml declares an export: block at shape 1, so kac export
writes one JSON per control carrying verifies, mechanism, frequency, evidence and the three sections a
control holds. A control declares no part, so no flat file is written and the record is the unit. Take it with kac update --from <template>.
controls-lookup, the skill that says what proves a rule. It answers what checks a standard, where the evidence
lives, and which standards nothing claims. mechanism: not-enforced is what makes the last of those answerable. It
reads each verifies entry to see whether the control named a record or one rule inside it, and refuses a per-rule
figure where only records were named. Take it with kac update --from <template>.
A corpus states the ranges the framework cannot know. A field declaring values: $corpus.<name> in .schema/
draws its range from enums: in .corpus.yaml, so one schema above several catalogues stands behind the list each
of them wrote. services.platform is the first field to use it: what a service is built on is one list in a library
and another in a payments platform. kac validate reports corpus-enum-undeclared once against .corpus.yaml where
a corpus holds a record carrying such a field and has stated a range no record can satisfy, meaning none at all or
one carrying a value that is not lower case. An out-of-range value stays an ordinary enum failure quoting the
corpus's own values. kac new opens the block and leaves it empty. Take it with kac update --from <template>.
Changed
.corpus.yaml is at descriptor format 2, and services.platform no longer carries a range of its own. A corpus
holding services states enums.platform in its descriptor before kac validate passes. Derive the values from your
own deployables and close the list on what you found, which is what the type's page has always asked for. There is no
migration: kac update stamps the format and writes no values, because only the corpus can say what its estate runs
on.
Fixed
An export field declared as an object carries its keys. A field such as a report's generated reached a consumer
as null, because only a list of objects was read. It now travels as an object carrying the keys its shape: or entry: block names.
kac report stamps the release without the commit behind it.generated.by takes the Open Knowledge Format's <producer>/<version> form, and the value carried the build metadata as well, as kac/0.24.0+24dcea21945982d92104c78a854465207d644ad6. It now reads kac/0.24.0. A regenerated report no longer
shows a moved commit where the tool's version stood still.
A discovery can be promoted to a standard.promoted-to names an FAQ or a standard and declares reciprocal: promoted-from, but only faqs carried that field, so promoting to a standard failed reciprocal and
adding the key to the standard failed unknown-key. standards now declares promoted-from as well, optional and
pointing back at the discovery. Take it with kac update --from <template>, which brings the schema down with it.
label-canonical catches a shortcut label that leads to a record it does not name. The check compared a label
against the canonical spelling of its own id, so [std-BOGUS] defined as ../standards/workflows.md passed: link-resolves was happy with the path, and the reader was shown an id no record carries. kac validate now holds a
label to the id in the frontmatter of the record it resolves to, which reaches a label the id styles do not
recognise at all. A template is exempt, since its definitions demonstrate the form under labels nobody has chosen
yet. The row this check gets on a type page is reworded to match, so run kac generate after upgrading.