diff --git a/docs/oss/attribution.md b/docs/oss/attribution.md index 4408ee6..3c3b020 100644 --- a/docs/oss/attribution.md +++ b/docs/oss/attribution.md @@ -38,6 +38,20 @@ License and notices: [LGPL 3.0](../../LICENSE) | [Source](https://forge.maximumdirect.net/base-layer/configkit/src/commit/191015e289d7f2b91abb9fdd9c4f2f5cf75b4de9). +## ReleaseKit + +Selected module: `go.maximumdirect.net/releasekit` at `v0.9.0` (maintainer tool). + +Copyright (C) 2026 Eric Rakestraw + +SPDX-License-Identifier: LGPL-3.0-or-later + +License and notices: [LGPL 3.0](../../LICENSE) | +[COPYRIGHT](https://forge.maximumdirect.net/base-layer/releasekit/src/commit/2180aa868ec2caa95fc8279fd59d5f0ebac41bd4/COPYRIGHT) | +[LICENSE](https://forge.maximumdirect.net/base-layer/releasekit/src/commit/2180aa868ec2caa95fc8279fd59d5f0ebac41bd4/LICENSE). + +[Source](https://forge.maximumdirect.net/base-layer/releasekit/src/commit/2180aa868ec2caa95fc8279fd59d5f0ebac41bd4). + ## jsonschema Selected module: `github.com/santhosh-tekuri/jsonschema/v6` at `v6.0.2`. diff --git a/docs/release.md b/docs/release.md index 767bb58..f38a2b6 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.8.0/docs/consumers/check.md) -and [CLI contract](https://forge.maximumdirect.net/base-layer/releasekit/src/tag/v0.8.0/docs/cli.md) +[candidate-check guide](https://forge.maximumdirect.net/base-layer/releasekit/src/tag/v0.9.0/docs/consumers/check.md) +and [CLI contract](https://forge.maximumdirect.net/base-layer/releasekit/src/tag/v0.9.0/docs/cli.md) own shared checks and exit-status definitions. ## Deliver The Hosted Release @@ -97,14 +97,26 @@ For a later retry, use a clean checkout of the original tag with its recorded module files and supply the token there. In a separate checkout, for example: ```sh -git switch --detach vMAJOR.MINOR.PATCH -./scripts/releasekit.sh deliver vMAJOR.MINOR.PATCH +( + set -e + release_version=vMAJOR.MINOR.PATCH + release_tag_ref="refs/tags/$release_version" + git fetch origin "$release_tag_ref:$release_tag_ref" + release_tag_commit=$(git rev-parse --verify "$release_tag_ref^{commit}") + git switch --detach "$release_tag_commit" + release_worktree_status=$(git status --porcelain --untracked-files=all) + if [ -n "$release_worktree_status" ]; then + printf '%s\n' 'Delivery retry requires a clean tagged checkout.' >&2 + exit 1 + fi + ./scripts/releasekit.sh deliver "$release_version" +) ``` 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.8.0/docs/consumers/delivery.md) +[delivery guide](https://forge.maximumdirect.net/base-layer/releasekit/src/tag/v0.9.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. @@ -131,13 +143,13 @@ and explicitly select the matching attempt: 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) +[recovery procedure](https://forge.maximumdirect.net/base-layer/releasekit/src/tag/v0.9.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) +value expires. See the [evidence guide](https://forge.maximumdirect.net/base-layer/releasekit/src/tag/v0.9.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 diff --git a/go.mod b/go.mod index d1282ba..ab21e92 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.8.0 // indirect + go.maximumdirect.net/releasekit v0.9.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 998303b..f02ee1b 100644 --- a/go.sum +++ b/go.sum @@ -4,12 +4,10 @@ github.com/santhosh-tekuri/jsonschema/v6 v6.0.2 h1:KRzFb2m7YtdldCEkzs6KqmJw4nqEV github.com/santhosh-tekuri/jsonschema/v6 v6.0.2/go.mod h1:JXeL+ps8p7/KNMjDQk3TCwPpBy0wYklyWTfbkIzdIFU= github.com/yuin/goldmark/v2 v2.1.6 h1:igy0q9JcqovoFXFx/XjtU8sHVhcUHavPj2sA3EoKJUE= 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/configkit v1.1.0 h1:UzXN2ZMnEkcL0O4YSLqD9qd9M1gb/NWCHQR/H8AaQzA= go.maximumdirect.net/configkit v1.1.0/go.mod h1:s1zLJ9GGB/1Q4a+aOHMLISonJxWFgNWpA6SpPlOafeA= -go.maximumdirect.net/releasekit v0.8.0 h1:hSaHPbUI7tAhnolfbu7UMj2fvmm9FGBY+jhkygdbxR0= -go.maximumdirect.net/releasekit v0.8.0/go.mod h1:QE4BLrAhVJTzi+/YTcVl21K/qZp9ojRLg5kuoy3Zb44= +go.maximumdirect.net/releasekit v0.9.0 h1:sK+Aoj6gS6ATU/1reocjwBekp4YETYENwkcX5ti6mrE= +go.maximumdirect.net/releasekit v0.9.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=