Release v0.9.0
Summary
Three fixes from the same cleanup pass: two new maintainer-audience skills that
engineering-base now carries, and the distribution state correction that the
preview lane and several tracked state documents needed.
Added
cratis-engineering-decision-record— how to consult, author, accept, and supersede a decision record in a repository'sdecisions/folder, including the closedstatus/stage/class/reversibilityvalue sets and the two-way supersession contract (#250)cratis-engineering-effect-boundaries— the effect-boundary contract: on publication, persistence, generation, propagation, and release, partial success is failure. No catch-and-continue, no defaulting to success on an unknown outcome. Grounded in the six real Cratis failure modes the 2026-08-24 review identified (#200)
Both are bound to engineering-base, so every engineering-* profile that composes it inherits them through the shared resolver.
Fixed
- The Fundamentals preview-assets workflow asserted
previewRequestEligibleisfalse, which the tracked readiness file has contradicted since npm ownership and the trusted publisher landed. It now asserts the readiness state against the schema's enum, so the next dispatch no longer fails on a step recording real progress (#258) npm-stage-contract.jsonnamedrelease-approved-ai-profiles.ymlas the production publication path; that workflow was deleted with the generated-distribution pipeline. It now names the workflow that really publishes (#258)- Tracked distribution state that described a superseded model: the 2026-08-22 remote-repository blocker list,
rollout-policy.jsonlisting two permanently-true-by-design conditions as pending blockers, an update-bot contract claiming a deleted workflow was ready, and release-automation capabilities that are no longer implemented (#258)
Changed
- A cross-check specification now fails when a blocker is listed as remaining while the state that resolves it holds, when a blocker is recorded as resolved without that state holding, when a tracked document names a workflow that does not exist, when a workflow recorded as retired reappears, or when the preview-assets workflow asserts a readiness value the generated file contradicts. Each of the five was proven by planting the defect and watching it go red (#258)