Repository navigation
release: publish v2.0.6 from hardened main #96
Description
Context
The immutable v2.0.1 release does not include the re-applied process-substitution fix from #89.
The approved v2.0.2 attempt created an annotated tag at 39b02adf471d1f40df0b985565dc16b97add1127, but run #33060334762 failed before validation because the validation job invoked Zsh without provisioning it. No v2.0.2 GitHub release or assets were created.
PR #103 repaired that job and was squash-merged at 63fe2e6f2d0a649af5f2a7e9abccf67e2a80336d. The approved v2.0.3 attempt passed boundary validation plus both platform build, test, package, and artifact stages. Run #33061392339 then failed because the Create Release job independently invoked the Zsh validator without provisioning Zsh. No v2.0.3 GitHub release or assets were created.
PR #104 completed validator provisioning and fully qualified every remote ref. It was squash-merged at ea511d977800e3916776ad43d055afd4dcca734f, with every PR and merged-main check green.
The approved v2.0.4 attempt in run #33063650842 passed boundary validation, both exact-tag platform suites, packaging, artifact upload, and checksum preparation. It created private draft release 377741043 with all seven assets, then failed because GET /releases/tags/v2.0.4 is a published-release endpoint and returned 404 for the draft. The ERR cleanup repeated the same lookup and could not recover the draft ID.
Under explicit maintainer authority, draft 377741043 was revalidated and deleted. The v2.0.4 tag remains unchanged, and both unexpired Actions artifact bundles remain available as evidence.
PR #105 added exact authenticated draft resolution, required one tag-and-target match, and bound validation, publication, and guarded cleanup to the numeric release ID. It was squash-merged at 8b480c547146470bc664f8c31b602304d0cee966, with every PR and merged-main check green.
The approved v2.0.5 attempt in run #33068418528 passed boundary validation, both exact-tag platform suites, packaging, artifact upload, and checksum preparation. It created a private draft, then the immediate authenticated release-list query found zero exact matches. The Create Release job stopped, and the ERR cleanup left no release or draft object. The v2.0.5 annotated tag remains unchanged at tag object 75549a1e8bc31e4f44bbe45d85b47870f3428b6d, peeled commit 8b480c547146470bc664f8c31b602304d0cee966.
The evidence supports a post-create release-list visibility race: the immediate query observed zero exact matches, while the later cleanup path left no draft. A reviewed repair must use bounded exact polling without weakening tag-and-target binding or cardinality.
PR #106 added bounded exact polling with delayed-visibility regression coverage and was squash-merged at af6fc1d8219f9f3d8c6b9c60330de69342ee2054, with every pull-request and merged-main check green.
Under fresh maintainer approval, annotated tag v2.0.6 was created at that exact commit and published successfully by run #33071565632.
Parent governance issue: #70.
Blockers
- Resolve the open filesystem CodeQL alerts.
- Enforce the full exact-tag release suite and harden release-ref validation.
- Reconcile licensing and include notices in every package.
- Provision Zsh and fully qualified refs for every release validator invocation.
- Capture exactly one matching draft ID through the authenticated release-list endpoint, use that ID for validation and cleanup, and add regression coverage for the failure path.
- Resolve private v2.0.4 draft
377741043under explicit destructive-action authority after preserving its evidence. - Tolerate bounded post-create release-list visibility while preserving exact tag-and-target cardinality and guarded numeric-ID cleanup, with delayed-visibility regression coverage.
Required release content
- Process-substitution/non-regular-source fix from fix: skip ZWC compilation for non-regular sources #89.
- Restored root README and licensing material.
- Filesystem-security remediation.
- Hardened release workflow and package validation.
- Verified checksums and immutable GitHub release assets.
- Draft-aware publication and cleanup with exact release-ID binding.
- Bounded exact draft discovery for post-create list visibility.
Acceptance criteria
- The existing v2.0.2, v2.0.3, v2.0.4, and v2.0.5 tags remain unchanged.
- No failed tag has a published GitHub release.
- The orphaned v2.0.4 private draft was deleted only with explicit maintainer authorization.
- An annotated
v2.0.6tag is created only from reviewed, greenmainafter every blocker is closed. - The exact tag commit passes the full functional suite on all release platforms.
- Published assets include required notices and verified checksums.
- The published Linux artifact passes the process-substitution regression without stderr.
- Release state and evidence are recorded here before closure.
Do not retry, move, or delete v2.0.2, v2.0.3, v2.0.4, or v2.0.5. Do not dispatch another release workflow or create v2.0.6 without explicit maintainer approval for the corresponding action.
Metadata
Metadata
Assignees
Labels
Type
Projects
- StatusShow more project fieldsDone
Activity
ss-o commentedon Aug 27, 2026
The three release blockers are complete:
c3e295fa6225d459300525f2dd06820ba5aecdb4.e6b54600761eed8449e9aa6c15fa7e667f4bbbc4.172ce67c9e57783a0e7566d5914e3c858f34e1c8.All three implementation PRs completed their required CI, documentation, and CodeQL checks successfully. The blocker checklist is now current,
status:blockedhas been removed, and the Project item is ready for Todo.This triage update does not authorize creating
v2.0.2, dispatching the release workflow, publishing assets, or otherwise starting the release. Those actions still require separate explicit approval at release time.21 remaining items
[-]release: publish v2.0.4 from hardened main[/-][+]release: publish v2.0.5 from hardened main[/+]ss-o commentedon Aug 27, 2026
Agent handoff
Status: Blocked
Repository: z-shell/zpmod
Branch/PR: No branch or pull request exists yet for the draft-ID repair
Tracker/Issue: #96 in Z-Shell Delivery
Current state
377741043and uploaded seven assets, then failed while querying the published-release-by-tag endpoint for a draft ID.e35c79b9dfc9a5d8e387865178555b4fb3e4f303, peeled commitea511d977800e3916776ad43d055afd4dcca734f.Verification
gh: Not Found (HTTP 404)immediately after draft creation returned its untagged URL.377741043, expected target commit, seven uploaded assets,published_at: null.Blockers
GET /releases/tags/{tag}to identify a draft, but GitHub documents that endpoint as returning a published release. AuthenticatedList releasesincludes drafts.377741043.Next steps
377741043, after revalidating its draft state, tag, target commit, and asset count.ss-o commentedon Aug 27, 2026
PR #105 is squash-merged and the draft-ID blocker is resolved.
9192f9ee15d5a682b31c371ab4fe0e0783634fa08b480c547146470bc664f8c31b602304d0cee966377741043: deleted under explicit authority after exact revalidationIssue #96 is ready at the release approval gate. Creating the annotated v2.0.5 tag and dispatching the release workflow remain separately authorization-gated; neither action was taken in this phase.
[-]release: publish v2.0.5 from hardened main[/-][+]release: publish v2.0.6 from hardened main[/+]ss-o commentedon Aug 27, 2026
Release attempt
v2.0.5stopped without retry.75549a1e8bc31e4f44bbe45d85b47870f3428b6d8b480c547146470bc664f8c31b602304d0cee966expected exactly one draft for v2.0.5 at 8b480c547146470bc664f8c31b602304d0cee966; found 0packages-macosartifact9644762177(52,467 bytes) andpackages-linuxartifact9644756156(138,844 bytes)The evidence supports, but does not conclusively prove, a post-create list-visibility race. The immediate resolver saw zero matches, while the later ERR cleanup left no draft, which suggests the transient draft became visible in time for guarded cleanup.
The next safe recovery is a reviewed repair that adds bounded polling for only the post-create list-visibility window while preserving exact tag-and-target matching, cardinality, numeric-ID binding, and guarded cleanup. It must include delayed-visibility regression coverage. The next immutable release target is
v2.0.6, after the repair and fresh maintainer approval. No retry was made.ss-o commentedon Aug 27, 2026
Release hardening candidate: #106
The PR makes draft release resolution tolerate delayed GitHub API visibility while preserving exact tag and target matching, numeric release ID validation, and fail-fast behavior for ambiguous or malformed responses.
Verified locally on commit
84307d7eee0ce1107e4a03fa19ad894fc56f17fd:This is a review candidate only. It does not merge, retag or create v2.0.6, dispatch the release workflow, or publish a release.
ss-o commentedon Aug 27, 2026
v2.0.6 is published and independently verified.
3778030867e4219e8fdda613ea76055da3dbd8e737ed755f3af6fc1d8219f9f3d8c6b9c60330de69342ee2054SHA256SUMSprocess_substitution_source.zshwith empty stderrAll blockers and acceptance criteria are resolved. Closing as completed.