v0.30.0
Added
- A service states how a live problem reaches a person.
servicesdeclaresmonitoring-output, required once a
service isliveordeprecated. Its values arealert,ticket,logandnone.kac validatewarns through
critical-service-is-alertedwhere aliveordeprecatedservice gradedcriticalstatesnone. The field
travels in the export besidecriticality, andkac generatelists it in the services index after that column. - A service states the interfaces it offers.
servicesdeclaresinterfaces, a list of the contract formats this
service publishes and the address each contract sits at. Each entry takes atype, drawn from aninterface-type
range the corpus states underenums:, and acontractURL. The field is optional on every service, because no
machine-readable format exists for a command line tool or a web page. It travels in the export besiderepos. - A corpus states where its code repositories are addressed from.
.corpus.yamltakesrepos-base, a URL a
reposentry on a service is appended to.kac validatewarns throughmirrors-repo-linkswhere areposentry
is not linked underWhere it lives, and where that section links a repository under the base thatreposdoes
not state. Both directions are reported, and a corpus stating no base runs no check. The value travels in the
export and in the plugin manifest, once for the corpus and once for each corpus it consumes, so a consumer
resolves an entry it inherited against the estate that wrote it.descriptor-versionmoves to 5, andkac update
stamps it. - A runbook whose resolution gives no route out is reported.
failure-route-statedruns.kac validatefails a
runbook whoseResolutionsection links nowhere to#escalation, so a reader whose step did not work has somewhere
to go. The schema asked this ofDiagnosisalone. A reader in the diagnosis is still choosing, and a reader in the
resolution is already acting on the estate. The rule matches the whole section, so a step with a route of its own
satisfies it as the closing line does. - A tool states what the package declares apart from what somebody concluded.
toolsdeclares
licence-declared, which keeps a string SPDX has no expression for, such as npm'sSEE LICENSE IN README.md.
licencestates the concluded value.kac validatewarns throughconclusion-states-a-reasonwhere the two
differ and no## Licence and obligationssection says how the conclusion was reached. Both fields travel in the
export, andversion:underexport:in.schema/tools.yamlmoves to 3. - An NFR states how long a condition holds before its alert is raised.
nfrsdeclaresalert-after, optional
on every target. The value is the alert's configured delay, such as15 minutes, and never a detection time
measured after an incident.kac validatewarns throughalert-after-needs-an-alertwhere a target stating one
binds no service that raises an alert or a ticket, following an offering'simplemented-byto the services behind
it. The field travels in the export besidewindow, andversion:underexport:in.schema/nfrs.yamlmoves
to 5.
Changed
-
licenceon a tool is required.kac validatefails a tool record that states none, through
required-field. An entry nobody has screened statesNOASSERTION, so the register shows the gap. A corpus that
has adoptedtoolsfills the field in every record before it takes this schema. -
An optional field's range is asked for from the first document that states it.
kac validatereported
corpus-enum-undeclaredfor every field drawing onenums:as soon as the corpus held one record of the type, so a
corpus was asked for a range it had no use for. A required field is still asked from the first record of its type,
and a_template.mdstates a field as a record does. A range the corpus has already written is still held to lower
case whether or not anything states the field. -
A range asked for inside an object entry names the path a record writes it at.
corpus-enum-undeclarednow
reports'interfaces.type' on a servicewhere it reported'type' on a service, which read as the record's own
typekey. -
A runbook closes its resolution on a fixed line. The
_template.mdthatkac newsends now endsResolution
with a line openingConfirmed whenand closing with a link to the escalation. Before, it asked for the confirmation
in any form and gave no route out. Therunbooks.mdbeside it now tells an author to write that line, having said
nothing aboutResolutionat all.outcome-statedis declared and does not run, sokac generatelists it under
Declared, not yet enforced on the type page.