Releases
Version 0.1.1
Fixed
- Retitling a pull request re-runs the release checks. The title check told the author to retitle, but the workflow listened only for the default pull-request types, so a title change fired nothing and the check stayed red whatever the author did. The trigger now names
edited.
Security
- The sidecar’s scheduled-agent wrapper restores
.git/configand.git/hooks/on every exit. The copy here predated theEXITtrap, so an agent that poisonedcore.hooksPathand then failed, or a cancelled job, left it for the workflow’s later steps to read. - The registrar gate reads a confirmation whole, not its
by:line. Re-dating an existinghuman:event, moving itsrevisionor writing it in flow style added noby: human:line and so passed the old gate unseen. The gate also refuses ahuman:id it cannot look up, resolves a commit-shapedrevisionagainst the tree, and now runs under a top-levelpermissions: {}with no checkout credential on disk.
Added
-
The bundle gets the conventions gate it never had,
knowledge-conventions.shand its Python half, checking the ten ruleslokf validatecannot see. The sidecar also gainsknowledge-preflight.sh,knowledge-provenance.shand.lokf/.gitattributes, keeping the bundle on LF so a Windows checkout gives CI’s verdict. -
A pull request that would release is held to its release notes and its title. The
planjob refuses an empty## [Unreleased], which semantic-release itself skips on a pull-request event, and refuses a title with no releasing type, since a squash merge takes its commit subject from the title. -
Semantic release. The version is computed from Conventional Commits on
main; this file’s## [Unreleased]section is promoted into a dated heading and used as the release notes,pyproject.tomlanduv.lockare bumped to match, and a GitHub Release is published from it - behind thereleaseEnvironment, so a person approves each one. -
SECURITY.md: the reporting route, and what the unauthenticated write endpoints do and do not promise.