Skip to content

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 17 Aug 16:55
· 42 commits to main since this release
254c383
Release/0.4.0 (#240)

* intent: a file named enola at the repo root is absence, not a failure

enola/constraints and enola/recipes share an `enola/` parent the repo does not
otherwise own, so an ordinary `go build -o enola .` makes ReadDir return ENOTDIR
rather than ErrNotExist. That propagated out of LoadRepoFile and aborted the
entire snapshot for a repo that had declared nothing at all.

* docs: fifteen explainers, and the Ruby surface

Three documents disagreed on the explainer count (ten, eleven, eleven) against
fifteen registered, with constraints/domain/query-loops/entry-points undocumented
and missing from `check --help`'s --fail-on list. ruby.md covered none of v199-v215.
Adds endpoint_impact and plan_check to the MCP catalogue.

* check: refuse a --fail-on name no explainer has

It was accepted and enforced nothing, so --fail-on=cyles exited 0 where
--fail-on=cycles exited 1 and a typo in CI was indistinguishable from a passing
build. Matching is exact and a mixed spec is refused whole. The accepted set, the
help text and the default config now all read config.KnownExplainers — they were
separate lists, which is how four gateable explainers went unadvertised.

* mcp: say what enola is, so an agent asked to evaluate it has a premise

Everything an agent sees was procedural — which tool, when — while the vocabulary
it does see (findings, confidence, gate CI) is a linter's. Asked whether a team
with linters needed enola, an agent reasonably said no. States the category
difference in the MCP instructions, the installed rule and llms.txt, and tells the
agent to demonstrate against the user's repository rather than classify.