Skip to content

Release v0.9.0

Choose a tag to compare

@github-actions github-actions released this 06 Sep 23:48
c036773

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's decisions/ folder, including the closed status / stage / class / reversibility value 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 previewRequestEligible is false, 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.json named release-approved-ai-profiles.yml as 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.json listing 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)