chore(release): prepare 0.5.0 (merge after #28) - #29
Merged
Merged
Conversation
…deferral reasons The guard had no test. Three RED pins: an undeferred change with commits since the tag is named (already true); a `deferred: >-` folded reason is accepted and printed as its text, not as the fold marker (red: the guard printed `>-`); an empty fold is refused as the forgotten-deferral case it is (red: it passed).
`_deferred_reason` was a single-line match, so `.openspec.yaml` files written in the usual folded form (`deferred: >-` + indented text) yielded the block indicator `>-` as the "reason": the gate printed `deferred: >-` and would have accepted a fold with nothing under it -- the unexplained deferral the guard exists to catch. The reader now joins the indented continuation into the reason and returns None for an empty block; a plain scalar still works. Stdlib-only, as the script requires.
prepare-release 0.5.0 (both pyproject versions, uv.lock workspace entries, the release note), the CHANGELOG entries for everything merged since v0.4.0 (#20, #22, #23, #24, #27) and for #28, and releases/v0.5.0.md written from the PR bodies and the archived change's specs -- every named tool, command and label checked against the tree and against the v0.4.0 tag (record_plan_learning predates this release and is not claimed as new). The [Unreleased] heading is dated at the cut: the release gate requires the CHANGELOG date to be on or after the tag's commit date, so it cannot be dated before the tag exists. --release --pre-tag passes at 0.5.0.
CHANGELOG and releases/v0.5.0.md gain the four changes the owner's rubric row 3b walkthrough (2026-09-20) put on feat/energy-demand-body-double: - the item-5 entry no longer says "due recall is never deferred" as if it covered every due row — the due-review reader emits a struggling row as a hands-on guided repair, and that copy now carries the repair's demand and defers with it (the defect: a low-energy day showed the repair the learner was just spared as the primary, its own deferral printed beneath it); - the micro teach-back door for a `learning` concept and its gentle-review wording; - the teach-back protocol's low-energy guided-explanation fallback; - the verification note records that every row-3b reading was re-emitted through both readers before its verdict was read as a verdict on shipped behaviour. `just release-consistency-shipped` passes on this tree (pre-tag form).
This was referenced Sep 20, 2026
PR #28 (item 5 / D-F, the rubric-3b fixes, the session-timer init-once fix) landed on main by fast-forward on 2026-09-21. The release branch takes it as a merge commit rather than a rebase: the repository ruleset refuses force-pushes to release/* as well as main, so a rebased branch could not be published. Tree = main + the four release-preparation commits; the 0.5.0 notes already describe every change this merge brings in (b3eb9ac, 2b63bc7).
…ral marker removed
T7.1's three owner steps were walked on 2026-09-21 with each fact
re-checked against the live system first, and two of the three had gone
stale since the handover: the Support ticket's stated symptom (phantom
contributors) has already cleared, though the orphaned refs/pull/1..6
heads remain fetchable and still carry the address the consolidation
removed, so the ticket goes reworded; and ~/tmp/.env was rewritten on
2026-09-19 into a Fabric configuration holding neither D-J token, so the
"delete ~/tmp/.env" step would have destroyed the wrong file and is
recorded as deliberately not done. The tag was pushed after checking it
is the only copy of the clean-start tooling.
The deferred: marker comes out because its own condition — item 5's
rubric row scored — is met, and its last sentence ("not part of the
current release tag") is false for 0.5.0, whose CHANGELOG describes item
5 as shipped. Left in place it would travel into the archive as a false
statement about the release; removed, the release gate expects the
change to be archived, which is the next commit.
…he main specs Every task is ticked and every artifact done, and the archive condition the change set for itself — item 5's rubric row scored by the owner — is met (row 3b: (a)–(e) yes, (f) resolved by a fix, 2026-09-20). Archived with the CLI's own merge: +8 requirements added and 3 modified across seven main specs (active-learning-decisions, agent-adapters, cli-surface, health-and-diagnostics, live-session-orchestration, mcp-server, web-ui), each verified afterwards against its delta — ADDED requirements and their scenarios present, MODIFIED bodies verbatim, no other spec touched. `openspec validate --specs --all` 24/24; the new archive validates. This is the release gate's expectation once the deferral marker is gone: a change with commits since v0.4.0 must be archived or deferred, and 0.5.0 ships items 1–5, so archived is the true state.
Written on the day, as the gate requires: the [0.5.0] heading's date must be on or after the v0.5.0 tag's commit date, and the tag is cut on this commit. A fresh, empty [Unreleased] sits above it in the shape the 0.4.0 cut left.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Release preparation for 0.5.0, the plan-integration release.
Status 2026-09-21: #28 has landed on
main(96806feb, owner push, CI 15/15 on the PR head). This branch took it as merge commitfc518a3d— a merge rather than a rebase because the repository ruleset refuses force-pushes torelease/*as well asmain. The tree ismainplus the seven release-preparation files;just release-consistency-shippedpasses on it (16/16 gate tests). The three 0.5.0 issues (#7, #10, #15) are closed on their evidence; the 0.5.0 milestone's only open item is this PR.46126a21RED — the openspec-shipped release guard had no test; three pins, two red: a foldeddeferred: >-reason was read as the marker>-, and an empty fold passed.f4975fe6GREEN —_deferred_reasonreads a YAML block scalar's indented text and refuses an empty block (stdlib-only, as the script requires).4201d3c6—prepare-release 0.5.0(both pyprojects, lock), CHANGELOG entries for every PR merged since v0.4.0 (Plan integration: PlanApplication seam, Bugs A/B closed (Phases 0–1) [in progress] #20, Item 4 plan close (D-G), council review 6 corrections, verify checks #22, test(db): seed per-test sessions.db from one migrated template #23, Follow-on bookkeeping: F8 pins, verify base, closeout record, item-6 proposals, T5.1 #24, fix(ci): nightly installer job plants a harness before install.sh (red 5 nights) #27) and for feat(now): item 5 (D-F) — energy demand for repair and the body-doubling floor #28, andreleases/v0.5.0.md. Every tool, command and label named was checked against the tree and against thev0.4.0tag (record_plan_learningpredates the release and is not claimed as new).b3eb9ac7,2b63bc7d— the notes carry the rubric-3b fixes and the session-timer init-once fix that landed on feat(now): item 5 (D-F) — energy demand for repair and the body-doubling floor #28 after the first draft.fc518a3d— merge ofmainat96806feb.Before the cut
plan-integration-followons. Its.openspec.yamldeferral still reads "archived when item 5's row is scored, not before; not part of the current release tag" — row 3b is scored and item 5 is in this CHANGELOG, so the marker is stale and the archive belongs before the tag. One task is still open: T7.1's three owner-only steps (push or discard the localarchive/feat-clean-start-2026-09-15tag; the GitHub Support ticket; revoke the two tokens and delete~/tmp/.env). Either the owner does them and T7.1 is ticked, or the archive proceeds with one incomplete task acknowledged.## [0.5.0] - <cut date>, fresh## [Unreleased]above) — the gate requires the CHANGELOG date to be on or after the tag's commit date, so it is written on the day.just release-checkon the release commit.The cut
Fast-forward
mainto this branch locally, tagv0.5.0on that commit, owner pushesmainand the tag together, thenjust release-verifyandgh release create v0.5.0 --notes-file releases/v0.5.0.md.Tested
test_release_consistency_script.py16/16 (three new);check-release-consistency.py --skip-wheel --release --pre-tagpasses at 0.5.0 onfc518a3dand prints the deferral's text;just docs(mkdocs--strict) exit 0; prepare-release/docs-guard tests 20/20. CI on this branch: see the checks onfc518a3d.