Repository navigation
v1.0.0-rc.1
Pre-release
Pre-release
Immutable
release. Only release title and notes can be modified.
Hephaestus v1.0.0-rc.1
The first release candidate of Hephaestus 1.0. It completes the release
safety story (check before tagging, verify while releasing, inspect and
resume after a failure) and defines what 1.0 keeps stable. A prerelease:
it is not marked latest and does not update the Homebrew tap; v0.2.0
stays the latest stable release.
Added
- Preflight in the GitHub Action:
command: preflightruns
hephaestus preflightfor the tag. Inputsstrictandoffline; outputs
preflight-status,preflight-exit-codeandpreflight-report(JSON
report path). Failures become workflow annotations; the step summary and
report are redacted. config.release-notescheck: therelease.github.notes_fileand the
optionalpreflight.changelogmust name the tag as a whole version
(v1.2.0is not satisfied byv1.2.0-rc.1). Pluspreflight --report FILE.make publishgated on the generic preflight:make publish-check
andmake publishrunhephaestus preflight --strictfor the tag in
addition to their own checks.- Noarch archives (
targets: [{os: all, arch: all}]): one archive for
every platform, and one formula with a single top-levelurl/sha256
(noon_macos/on_linuxblocks). Mixing a noarch and per-platform
archive in one formula is an error (select withids). - Formula install verification rejects installs that cannot all
succeed: a file installed twice, a directory and a file inside it, two
installs to the same destination. Per-platform exclusive installs are
allowed. hephaestus status --tag: read-only (GETonly) state of a release:
not-started,tagged,draft,published-incomplete,conflict,
published,completed, comparing assets by digest with the local
manifest and finding each formula's tap pull request; prints the next
safe action.--format json; exit codes0read,1conflict,2
usage,3GitHub could not be read.hephaestus init --template go|rust|script|prebuilt: a starting
hephaestus.yaml(prereleases skip the tap:skip_upload: auto). Never
overwrites a file.- Documentation: recovery guide
(states, what each state allows, 12 failure scenarios and how each is
verified), CLI reference,
compatibility policy.
Changed
- A published release is never edited. Its title, notes and
prerelease flag are set while it is a draft and published with it. A
re-run whose configuration differs (for example, changed notes) logs a
warning and continues, so the formula and tap can still be resumed. Up to
v0.2.0, a re-run updated them on a published release, immutable or not. - Formula verification now rejects a formula that installs the same
file twice; such a formula could never install.
Safety and testing
- Full-pipeline E2E tests of the CLI against a fake GitHub API: stable,
prerelease, draft, immutable (complete and missing asset), recovery after
a failed publish, tap-only re-run, tap pull request failure after
publishing, and an immutable release resuming the tap. No run leaks a
token in its output or requests. - Recovery tests: lost create, upload and publish responses; concurrent
drafts; digest conflicts on drafts and published releases; tag pointing
to another commit; immutable re-runs write nothing. - CI on Linux amd64 and arm64, macOS arm64 and Windows amd64 for every
change; macOS Intel weekly. Homebrew install tests of generated formulas
(including noarch) on macOS and Linux. - The release workflow stops a prerelease whose plan would publish the tap,
in addition toskip_upload: autoand the tap token reaching only the
tap steps.
Compatibility
- v0.2.0 configurations load unchanged; Hephaestus's own and
magicdrive/t's are kept as regression fixtures. - Configuration, CLI, Action and JSON changes are additions only:
preflight.changelog, noarch targets;status,init,preflight --report; Action inputsstrict,offlineand the preflight outputs. brews[].skip_uploadstill defaults tofalse: a prerelease is
published to the tap unlessskip_upload: auto(ortrue) is set. The
default changes only in a major release.- From 1.0.0, the stable surface follows the compatibility policy above.
Limitations
- Windows arm64 archives are built but not tested (no CI runner).
- The Rust template does not cross-compile by itself: each target needs its
Rust target and a linker, or a build per runner imported as prebuilt
binaries. - Recovery is tested against a fake GitHub API; against the real API only
the normal release path is exercised. The attestation step is covered by
real releases, not by a test.
Full Changelog: v0.2.0...v1.0.0-rc.1