From 995c309560e176abb80af3800fb459258c83061c Mon Sep 17 00:00:00 2001 From: Eric Rakestraw Date: Tue, 3 Nov 2026 00:49:47 +0000 Subject: [PATCH] Adopt ReleaseKit v0.8.0 and saved-attempt recovery --- docs/release.md | 46 +++++++++++++++++++++++++++++----------------- go.mod | 2 +- go.sum | 4 ++-- 3 files changed, 32 insertions(+), 20 deletions(-) diff --git a/docs/release.md b/docs/release.md index dcd0da5..656ca7b 100644 --- a/docs/release.md +++ b/docs/release.md @@ -74,8 +74,8 @@ Successful publication needs no separate remote read-back or CI wait. For optional local diagnosis, use `./scripts/releasekit.sh check VERSION`. It is not a required step before publication. The upstream -[candidate-check guide](https://forge.maximumdirect.net/base-layer/releasekit/src/tag/v0.7.0/docs/consumers/check.md) -and [CLI contract](https://forge.maximumdirect.net/base-layer/releasekit/src/tag/v0.7.0/docs/cli.md) +[candidate-check guide](https://forge.maximumdirect.net/base-layer/releasekit/src/tag/v0.8.0/docs/consumers/check.md) +and [CLI contract](https://forge.maximumdirect.net/base-layer/releasekit/src/tag/v0.8.0/docs/cli.md) own shared checks and exit-status definitions. ## Deliver The Hosted Release @@ -104,7 +104,7 @@ git switch --detach vMAJOR.MINOR.PATCH Resolve uncertain hosted writes before retrying the same immutable version. Matching content is accepted; conflicts are not overwritten. Do not rerun `publish` or move tags to repair delivery. Follow the upstream -[delivery guide](https://forge.maximumdirect.net/base-layer/releasekit/src/tag/v0.7.0/docs/consumers/delivery.md) +[delivery guide](https://forge.maximumdirect.net/base-layer/releasekit/src/tag/v0.8.0/docs/consumers/delivery.md) for result interpretation and recovery. These commands apply to tags containing this delivery configuration; older releases retain their original workflows. @@ -115,21 +115,33 @@ distinguish a candidate defect from a publication conflict. Correct and commit candidate defects, push `main`, and rerun publication as appropriate. A failure after local tag creation may leave a ref even when its object ID is unavailable. -Status 3 means the push outcome remains unknown. Preserve the captured endpoint, -version, and tag object from that attempt; do not retry or remove the local tag -until the authoritative outcome is resolved. Diagnostics mask HTTP(S) credentials, -so use the actual captured endpoint rather than a redacted display. Follow the -upstream [failure-recovery procedure](https://forge.maximumdirect.net/base-layer/releasekit/src/tag/v0.7.0/docs/release.md#resolve-failures): +Status 3 means the push outcome remains unknown. Do not retry or remove the local +tag until the authoritative outcome is resolved. ReleaseKit attempts to save +private publication evidence and reports a record path or a separate recording +warning. A recording failure does not change the publication outcome. + +Use the recovery command reported for that attempt, or discover local records +and explicitly select the matching attempt: ```sh -releasekit_endpoint='COPY_CAPTURED_ENDPOINT' -releasekit_version='vX.Y.Z' -test "$(git ls-remote --get-url -- "$releasekit_endpoint")" = "$releasekit_endpoint" && - git ls-remote --refs -- "$releasekit_endpoint" "refs/tags/$releasekit_version" +./scripts/releasekit.sh publication-attempts +./scripts/releasekit.sh reconcile --record /absolute/path/to/selected-record.json ``` -An exact tag-object match confirms publication. Absence is established only if -both checks succeed and the tag is missing; a failed check leaves the outcome -unknown. Remove an unpublished local tag only after confirming authoritative -absence. Never move or replace a published tag or hosted page. Corrections to -published source or content require a new appropriate version. +Discovery is local; reconciliation observes the original destination without +rerunning validation, changing tags, or delivering hosted content. Neither is +a routine gate after successful publication. Follow the upstream +[recovery procedure](https://forge.maximumdirect.net/base-layer/releasekit/src/tag/v0.8.0/docs/release.md#resolve-publication-failures) +for outcomes, incomplete evidence, and older attempts without records. + +Records are stored under Git's common directory by default and can contain +credential-bearing endpoints. Keep them private, out of source control and +shared logs; retain them while needed for recovery and remove them when that +value expires. See the [evidence guide](https://forge.maximumdirect.net/base-layer/releasekit/src/tag/v0.8.0/docs/consumers/publish.md#retain-and-reconcile-publication-evidence) +for storage and retention details. + +Current absence does not prove a version was never published. Remove a retained +local tag only after establishing absence and confirming it was not already +published or used by another release channel. Never reuse a known published +version or replace a published tag or hosted page. Corrections require a new +appropriate version. diff --git a/go.mod b/go.mod index 912a454..3becbb6 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ require ( require ( github.com/yuin/goldmark/v2 v2.1.6 // indirect - go.maximumdirect.net/releasekit v0.7.0 // indirect + go.maximumdirect.net/releasekit v0.8.0 // indirect go.yaml.in/yaml/v4 v4.0.0-rc.6 // indirect golang.org/x/mod v0.40.0 // indirect golang.org/x/text v0.14.0 // indirect diff --git a/go.sum b/go.sum index d0e8acd..b48db2f 100644 --- a/go.sum +++ b/go.sum @@ -6,8 +6,8 @@ github.com/yuin/goldmark/v2 v2.1.6 h1:igy0q9JcqovoFXFx/XjtU8sHVhcUHavPj2sA3EoKJU github.com/yuin/goldmark/v2 v2.1.6/go.mod h1:G6M4/qOFtfn01/o14BU1UR2Lo5N3S9Qo7xCuz/sHjGQ= go.maximumdirect.net/configkit v1.0.0 h1:cguQnxkaRk3ClQOZNzzhTdc4bfzbraGKv8CkoCp+HLc= go.maximumdirect.net/configkit v1.0.0/go.mod h1:B6fJ5xBLBF1nuywqfLeEI4sLm29UkIcDLu8i6I6gGXE= -go.maximumdirect.net/releasekit v0.7.0 h1:iQED4D/nfNbO8fO7ItQtIqQp1xZ5EUHKRIUmP+trix0= -go.maximumdirect.net/releasekit v0.7.0/go.mod h1:QE4BLrAhVJTzi+/YTcVl21K/qZp9ojRLg5kuoy3Zb44= +go.maximumdirect.net/releasekit v0.8.0 h1:hSaHPbUI7tAhnolfbu7UMj2fvmm9FGBY+jhkygdbxR0= +go.maximumdirect.net/releasekit v0.8.0/go.mod h1:QE4BLrAhVJTzi+/YTcVl21K/qZp9ojRLg5kuoy3Zb44= go.yaml.in/yaml/v4 v4.0.0-rc.6 h1:1h7H1ohdUh93/FyE4YaDa1Zh64K6VVbjF4K6WUxMtH4= go.yaml.in/yaml/v4 v4.0.0-rc.6/go.mod h1:aZqd9kCMsGL7AuUv/m/PvWLdg5sjJsZ4oHDEnfPPfY0= golang.org/x/mod v0.40.0 h1:hUv+3cXcdRHz08UmSiOob7sadHig73uo5bkXxQ/tvUs=