Skip to content

grund 0.12.0

Choose a tag to compare

@github-actions github-actions released this 25 Aug 21:19
· 2400 commits to main since this release

Added

  • §FS-config.3.9.2: the citing kind of every site outside every configured home is now nameable. code is its default name, not a fixed one — a Terraform, SQL, or prose tree may declare it and call it what it is ([[kinds]] kind = "src", citable = false, no folder or file, optionally a title that becomes its citation-directions scope). Exactly one entry may be it, and code is reserved to that entry; a config that names its complement src has no code, so [citations.code] in it is an unknown kind rather than a rule that quietly matches nothing. It still gets no Project map row and still renders last in the citation directions, so no existing repository's managed block moves. (PR #136)

  • §FS-config.3.4.1: [[kinds]] citable = false — a kind that is a place rather than an ID namespace. Its home is scanned and its citations are classified and directed like any other, and it declares nothing: no ID grammar, no KIND ∈ {…} entry, no --kind or grund id selector, no index, and a declaration inside its home is a misplaced declaration (§FS-check.3.7). Obligations attach per scanned file in the home, .md included, and require_grounding covers those files too — otherwise must on a home that is usually all Markdown would silently never fire (§FS-check.3.11, §FS-check.3.6). Findings and the generated block name such a kind by its place — skills/ must cite FS — never by a name nobody can write. Prefix-freedom is scoped to citable kinds, so skill beside a citable SKI now loads; names stay unique across the whole table. Decided in §DF-non-citable-kinds, proposed in §DISC-id-less-kinds. Additive, so grund_config_version stays at 1. (PR #136)

  • §FS-check.4.6, §FS-check.3.17: a folder kind's index must list every declaration in its folder, as a full Markdown link. A missing entry is a warning naming the release it becomes an error in (§REQ-backwards-compatibility.2); an entry that is present and unlinked is an error, because grund fmt --write fixes it (§REQ-backwards-compatibility.3). Decided in §DF-index-entry-form and §DF-index-compatibility-ramp. (PR #134)

  • §FS-check.4.6: a canonical bare-ID link in a configured kind index enrolls an external inline source declaration directly, without the otherwise-empty Markdown stub; show and list keep the source as the only declaration home, and only the exact enrollment site is discounted as navigation (issue #133, PR #135).

  • §FS-config.3.4: [[kinds]] index names the index file, relative to folder. It defaults to README.md, index = false opts a kind out, and setting it on a kind with no folder is a config error. A named value must be a relative path inside folder naming a .md file — an absolute or .. path would read outside the tree the config describes, and the cross-reference pass that repairs an entry runs on Markdown only. Purely additive, so grund_config_version stays at 1 (§FS-config.5).

Changed

  • §FS-config.3.4: [[kinds]] prefix is renamed kind — the word the {kind} placeholder, the --kind selector and the [citations.<kind>] key already use, and the only one that stays true now that a row can name something that never prefixes an ID. prefix still loads and earns one warning per config naming the release it stops in (§REQ-backwards-compatibility.2); setting both keys on one entry is an error. grund config show prints the canonical spelling whichever the file used (§FS-config.4.2), so the migration is one grund config show > grund.toml away. The removal is §RM-kind-prefix-removal. (PR #136)
  • §FS-config.3.5: every configured [[kinds]] home is walked whether or not [scan] include lists it, for every kind; include now names the extra roots. Upgrade note: a repository whose home sat outside include had that home's citations invisible rather than dangling — no resolution, no finding — and now sees them. They were always true of the tree; the run was not reading it. (PR #136)
  • §FS-config.3.4.4: the default [[kinds]] table replaces E2E with two non-citable kinds — e2e (tests/e2e, must cite FS, should-not cite AR) and integration (tests/integration, should cite AR). A test cites the document whose claim it proves and is never cited back. E2E remains fully supported and is what this repository declares; only the default changed, so a config grund init wrote is unaffected. Upgrade note: a repository with no [[kinds]] block at all and an e2e/cases/ corpus loses the case machinery that pruned its fixture trees (AR-scanner.6) and starts scanning them; the fix is one [[kinds]] block declaring the E2E kind it was relying on by default. Argued in §DF-non-citable-kinds.3 under the pre-1.0 licence of §REQ-backwards-compatibility.4. (PR #136)
  • §FS-id.1: grund id handed a kind it cannot mint from exits 2 with the error: / known kinds: pair in every case. A configured non-citable kind used to fall through the generic rejection path and exit 1 with a bare line, which is the shape for a bad title, not for a bad kind. (PR #136)
  • §FS-init.2.1: grund init --docs scaffolds tests/e2e/README.md and tests/integration/.gitkeep in place of e2e/README.md and e2e/cases/.gitkeep, following the two test homes the generated config now names. (PR #136)
  • §FS-check.4.1, §FS-list.1: an index entry no longer counts as an inbound citation for the unused-declaration warning or grund list --unused. An index names every declaration in its folder by construction, so counting its entries would empty the signal (§DF-index-not-an-inbound-citation).
  • §FS-fmt.6.1: grund fmt runs the cross-reference pass on a kind's index entries whatever [fmt.cross_refs] enabled says, so the fix for an unlinked entry is plain grund fmt --write in every configuration. Reached that way the pass wraps the entries and nothing else on the page — a repository that turned generated links off gets the smallest write that clears the error (§DF-index-always-linkified.2.2).
  • §FS-config.3.4: the index default is keyed on the kind prefix for a declared [[kinds]] block exactly as for the built-in list, so E2E defaults to index = false either way. Upgrade note: without this, every grund.toml written by grund init before this release — which declares [[kinds]] and could not have spelled a key that did not exist — would have taken one §FS-check.4.6 warning per e2e case, and lost its success line. Measured on this repository: 391 warnings. A project that wants an index for its E2E folder writes index = "README.md".
  • §FS-init.2.1: grund init --docs scaffolds docs/decisions/functional/README.md and docs/decisions/architectural/README.md in place of the two .gitkeep files, so every folder kind with an index is scaffolded with one.