Skip to content

v0.39.0

Choose a tag to compare

@github-actions github-actions released this 23 Oct 19:58
b262ed0

Added

  • kac export states each type's in-force status in the manifest. Each entry under types has inForce, the
    status value its schema declares as in-force:, or null for a type with no status range. An inherited type
    states its producer's value, and two corpora stating different values for one type stop the export. kac bundle
    reads it for the review view, which named active for a standard whatever the schema said. An export without the key
    still bundles, and its review view says the status is not stated. formatVersion stays at 4.

Fixed

  • kac bundle names the status a control is in force at in the review view. The view said a control checks a rule
    only where its status is active, whatever the controls schema declared as in-force:. It now reads inForce on
    the controls entry of the export's manifest, as it does for standards. Where the entry states none, the view says so,
    says no control is known to check a rule, and leaves every obligation to the reviewer.
  • present() and entries() read a filled-in object field. On a report holding generated: with its keys,
    present('generated') read false and entries('generated') read 0. An unquoted {{…}} placeholder still reads as
    absent. kac validate reports one under an object field, or in a list of objects, as it does under any other field.
    It failed there with an InvalidCastException.
  • kac bundle names the version a plugin keeps when the corpus states none. Where .corpus.yaml had no
    content-version, bundle warned that the plugin had no version and nothing would install it. The plugin kept the
    version its own plugin.json states, so the warning was wrong. It now names that version. Set content-version and
    export again to choose the version a plugin publishes.
  • kac validate reports a rule severity: it cannot read. A value other than error or warning, such as
    eror or Error, read as no severity at all. A rule nothing implements then passed as an intention, unreported, and
    an expr: rule was told it had no severity. schema-dispatch now reports the value against the rule's line in its
    .schema/ file.
  • kac report --out refuses a corpus whose .corpus.yaml states no corpus:. The report's sources cited the
    corpus by its absolute path, so a committed report named one machine's folder. It writes nothing now, and says to
    write the key. A report printed without --out cites that corpus as this corpus.
  • kac new removes a reference definition naming a declined type's page. A seed linking a type page by reference,
    such as [deviation][deviations] with [deviations]: ../deviations.md, kept that definition in a corpus that
    declined the type. The corpus failed link-resolves on its first validate. The definition now goes, and each link
    citing it keeps its words, as an inline link already did.
  • kac update names the CI system each withheld file belongs to. A corpus holding none of the template's CI files
    was told it withheld three continuous integration starters. One of the three is .github/dependabot.yml, which runs
    no build. The line now counts the files and names their systems, such as github and azure-devops.
  • kac export writes a section's reference links inline. A section using [resilience][pol-RECV] travelled
    without the definition at the foot of its record, so the link lost its target. Each full, collapsed or shortcut
    reference, and each image reference, now arrives as an inline link to the target its definition states. A reference
    with no definition arrives as written.
  • kac export writes a part line's reference links inline. A part's lead, asides and bullets, such as a term's
    definition or a rule's obligations, kept a reference such as [pol-TRUS] without the definition at the foot of its
    record, so the link had no target. Each now arrives as an inline link to that target, as one in a section does. A
    record's last part, where it holds only asides, no longer exports those definitions as its lead.
  • kac export writes a relative link as the address of the page it points at. A link such as
    ../policies/x.md in a section or a part line was relative to the producer's record, so a consumer's reader could
    not follow it. Where the corpus has an address, a target resolving to a Markdown file it contains now arrives as that
    file's address. Any other target arrives as written. A record inherited from a package exported by 0.38.0 or earlier
    keeps its relative targets until that producer publishes a new version.
  • kac export keeps the indent of a block inside a list item. A fence inside a numbered item lost the indent of
    its opening line, so a renderer closed the list there and showed the code outside it. A paragraph in the item lost
    its indent when unwrapped. Both now arrive indented as written.
  • kac export keeps a fence that holds a blank line. export split a section at each blank line before it looked
    for a fence. The lines after a blank line inside a code block were then joined onto one line. A fence now arrives as
    written up to its closing line, or to the end of its section where it has none.
  • kac report coverage lists only a deviation in force. The Deviations column listed every deviation citing a
    clause in departs-from:, so a closed one read as a departure that still stands. A deviation now appears only while
    its status is the value its type declares in in-force:, which is active. ## Limits says so.
  • kac validate reports a clause opening with a keyword in a code span. A clause such as `SHOULD` go passed
    clause-modal as though it opened with the keyword. A code span names a keyword, so that clause states no
    obligation. clause-modal now reports it as opening with no modal. It reports a bold MUST followed by `NOT`
    too, which kac export read as MUST NOT.
  • kac export refuses a consumed type that lost record files. Where none arrived, the type and its part lines
    left the export unreported. Where some did, the rest went missing unreported. export now stops and names the type
    and its producer when fewer files arrive than the producer's manifest counts, or part lines arrive with none. A type
    with no records, lines or counts is still left out.