Repository navigation
Retiring a releasable now takes it out of the workspace in one commit (declarations, release hooks, scaffold state, and CI entries), several releasables retire together with a repeated --subject, and rlsbl release retract retracts released Go versions. A never-released releasable is unreleased until the owner records it active, on-hold is renamed non-releasing, the confidential-term list is found through the family settings file, and several commands require flags they used to fill in.
Breaking
- A releasable that has never been released is
unreleased, and its releases are refused until the owner records it active. The status is derived, never recorded: with no lifecycle period in effect, a releasable is active when its release archives record a release and unreleased when they do not.release run,release resume,release retry, andmonorepo release initrefuse an unreleased releasable, namingrlsbl transition lifecycle --subject <name> --status active, which allows its first release.monorepo init,monorepo add,monorepo absorb, andmigrate recordsno longer open an active lifecycle period for a releasable;transition lifecycle --status unreleasedis refused; andstatus,monorepo status, andtransition showprint each releasable's lifecycle status, recorded or derived. - Breaking.
rlsbl release editrequires the version argument;rlsbl changelog amendrequires--user-facingor--no-user-facing;rlsbl dev installrequires--uninstallor--no-uninstall;rlsbl discoverrequires--mineor--no-mine; andrlsbl secrets sync-npm-tokenrequires--allor--no-all. None of them is filled in when left out. - Breaking. The lifecycle status that refuses a releasable's releases is
non-releasing, no longeron-hold:rlsbl transition lifecycle --status non-releasing,rlsbl status --json, and every refusal name it, and a lifecycle-and-license record holdingon-holdis refused. - Breaking. The confidential-term list is read from the path the
confidential_term_listsetting names in the family's settings file,stricttools/config.tomlunder the user's configuration directory, instead of a fixed place under the home directory. A missing settings file or setting refuses only what reads the list (theconfidential-termscheck, a release, the commands that rewrite a GitHub Release, andtransition declassify), naming what to write; a missing list at that path still holds no terms.
Features
- The lifecycle-and-license guide and the release workflow describe the derived
unreleasedstatus. - The help of
monorepo release init,release retry, andrelease resume, and the monorepo guide, name theunreleasedrefusal. - Retracted versions in the release record. A release archive may record
retracted_by(and the retraction version's own archiveretracts): a retracted version keeps its tags, has no GitHub Release (unpublished-refsandrelease reconciledemand none, and a history rewrite writes none), is marked retracted inCHANGELOG.md, and does not count as a release, so a releasable whose every version is retracted is unreleased and its first release ships the version files' version. A bump landing on a retracted number is refused, naming the version-files value that bumps past it. rlsbl release retract --versions <version> --reason <text>retracts released versions of a Go module through the next free version: it commits oneretract [low, new]go.mod line on the release branch, records every covered version retracted, tags the new version and pushes only its tags (no branch, no GitHub Release), and deletes the retracted versions' GitHub Releases, keeping their tags. It works on an unreleased releasable, asks no registry about any version, and a run that stops is finished by running it again.rlsbl release retractrequests the retraction version from the Go module proxy right after pushing its tag, and reports success only once the proxy returns it, so the retraction is published to every consumer; a run the proxy stopped is finished by running the same command again.- Retiring a releasable takes it out of the workspace in one commit.
rlsbl transition lifecycle --subject <releasable> --status retirednow also removes the releasable and its members fromreleasables.toml, closes their open identities, deletes their release hooks, drops their files from the scaffold state, and regenerates the routers and the rootCHANGELOG.md; its changelog and release history stay in place and are no longer reported as residue. Retiring a standalone repository's releasable is refused: archive the repository instead. rlsbl transition lifecycle --status retiredtakes a repeated--subject.--subject a --subject bretires several declared releasables of a workspace in one commit, regenerating the routers once for what remains, so two releasables whose directories are both gone, each blocking the other's retirement, retire together. A repeated--subjectwithactiveornon-releasing, or naming a member or an undeclared subject, is refused.
Fixes
rlsbl monorepo removeaccepts a retired member, and its refusal names the retirement. A member with open lifecycle-and-license entries is refused withrlsbl transition lifecycle --subject <member> --status retiredas the fix; once retired, the remove goes through.