| Public facade or adapter boundaries | [Internal overview](internal/overview.md), [ADR 0003](adr/0003-public-facade.md), and the architecture policy |
| Deferred capabilities and delivery scope | [Initial feature target](roadmap/initial.md#deferred-capability-targets) and [explicit deferrals](roadmap/initial.md#explicit-deferrals) |
| Initial planning history | [CLI](roadmap/01-cli-plan.md), [dispatcher](roadmap/02-dispatch.md), [backend](roadmap/03-backend.md), [facade](roadmap/04-facade.md), and [completed initial implementation record](https://gitea.maximumdirect.net/eric/CommandKit/src/commit/3871d837489b9955998b362587a52b47282dc021/docs/roadmap/implementation.md) |
Consumer migrations and source publication were kept outside the initial
library target. ReleaseKit adoption status is tracked in the
[adoption roadmap](releasekit.md); current release operations are in the
[maintainer procedure](../release.md). Its completed implementation record is
library target. ReleaseKit adoption is complete; current release operations
are in the [maintainer procedure](../release.md). The completed adoption record is
available at the [historical adoption revision](https://gitea.maximumdirect.net/eric/CommandKit/src/commit/c0c03285f7beac3e96f1708b655c1eb2add35e79/docs/roadmap/implementation.md).
The initial implementation targeted a usable module with maintained examples;
it did not create placeholder publisher commands or a binary build matrix.
[architecture policy](../policy/architecture.md), and
[documentation policy](../policy/documentation.md) control the work. Apply the
[OSS policy](../policy/oss.md) to dependencies and incorporated material, and the
[testing policy](../policy/testing.md) to integration evidence. Existing accepted
ADRs continue to govern the library and its standard CLI contracts.
The reviewed upstream baseline is ReleaseKit v0.2.0, commit
`e030794969fb7787e647a90bbc4eb81bd0610f07`. Its published tag and local checkout
matched that revision during adoption review. Upstream references below identify
that source; implementation must use the released module rather than require a
sibling checkout.
## Current baseline
At roadmap preparation, CommandKit is at commit `3871d83` with a clean
worktree. Its selected initial library target and documentation reconciliation
are complete. The current package inventory is maintained in the
[internal overview](../internal/overview.md).
| Area | Current state | Adoption gap |
| --- | --- | --- |
| Module | Go 1.25.5; ConfigKit, PromptKit, and CLI dependencies are declared. | No ReleaseKit tool dependency or version selection. |
| Publication | `origin` has effective push URL `https://gitea.maximumdirect.net/eric/CommandKit.git`; no local version tags were present. | No repository publication command or source-only release profile. Remote version availability must be checked when preparing a release. |
| Procedure | Release policy is adopted. | `docs/release.md` does not exist; policy still says ReleaseKit integration has not been selected. |
| Release history | No `docs/releases/` notes are present. | The first candidate will need its own version-matched note. |
| Delivery | No hosted delivery integration is present. | None for the selected source-only adoption target. |
| Licensing | Project grant and existing dependency attribution are maintained. | Review the actual tooling and copied-material scope when integration lands. |
The adoption review inspected ReleaseKit's implementation and representative
tests. It did not execute tests or exercise a CommandKit release integration.
This historical baseline is not a claim about later implementation status.
## Target state
### Release ownership and deliverables
CommandKit releases remain source-only Go module releases: one immutable version
tag identifying an exact committed candidate with its matching checked-in release
The runbook must distinguish failures before publication, known unsuccessful
pushes, conflicts, and unknown push outcomes. ReleaseKit retains a local tag
after a failed push; blindly rerunning the ordinary publisher is not a recovery
procedure. Document authoritative remote inspection and the permitted recovery
actions under the release policy, preserving published tags and unresolved tag
state. Never force an update to bypass a guard.
### Documentation and release notes
The target `docs/release.md` owns copyable preparation/publication commands,
prerequisites, automated guards,
completion point, and recovery instructions. Link to ReleaseKit's owning
references for detailed CLI statuses and profile definitions rather than
maintaining a second upstream reference in CommandKit's CLI documentation.
The procedure explains that ReleaseKit validates the note's product/version
heading but does not assess compatibility prose or enforce CommandKit's license
footer. Prepare and review that content through ordinary change review. Each
release note must include the immutable-tag `COPYRIGHT | LICENSE | ATTRIBUTION`
links required by the OSS policy. This introduces no additional network check,
manual approval gate, or custom note checker.
The implemented release policy identifies the selected integration while
preserving substantive rules and provenance. README and developer navigation
point to the implemented runbook and describe release-tooling status accurately.
Current procedures belong in the runbook; this roadmap owns the target and
adoption status. The completed execution evidence remains in the historical
adoption record.
### Licensing and incorporated material
Licensing treatment follows the actual selected source, dependency notices,
and any incorporated launcher or integration material under the OSS policy.
Applicable attribution entries and license texts identify selected upstream
revisions and preserve required notices.
Tool use alone does not establish an attribution requirement under that policy.
Determine treatment from actual incorporation or distribution rather than add
entries for every development tool. Any copied or adapted documentation needs
its own applicable treatment. CommandKit's runbook is written for this
integration, with links to upstream guidance where practical.
## Adoption coverage
These IDs identify the target capabilities and remaining baseline gaps.
The completed assignments and checks are preserved in the historical adoption
record linked above.
| ID | Capability gap | Target result |
| --- | --- | --- |
| RK-01 | Released Go tool selection | Root module metadata selects v0.2.0 and retains the tool through normal module maintenance; no sibling replacement or library import is needed. |
| RK-02 | Source-only profile | Product, authoritative remote, and effective push destination are explicit; only the default suite is selected. |
| RK-03 | Publication launcher | One repository publication command builds the module-selected CLI without changing candidate metadata and preserves its outcomes; bootstrap output is ignored. |
| RK-04 | Runbook and navigation | Maintainers have one canonical procedure for preparation, publication, and recovery; current documents describe available tooling accurately. |
| RK-05 | Licensing treatment | Incorporated material receives policy-conforming attribution and texts without blanket tooling requirements. |
| RK-06 | Integration confidence | The launcher/profile work together and adoption respects existing library boundaries; completion evidence and remaining release preparation are recorded in the completed adoption record. |
## Acceptance criteria
Successful adoption has focused evidence for these integration results:
- The repository's committed module configuration selects the tool, including
after ordinary module maintenance; bootstrap leaves module files unchanged.
- The launcher finds the repository/profile, handles its version argument,
preserves ReleaseKit's diagnostic output and distinct exit statuses, and
leaves no untracked bootstrap output in candidate status.
- A representative disposable repository exercise reaches source publication
through the selected launcher/profile without binary or hosted-service work.
Use local fixtures, not CommandKit's live remote, for publication evidence.
- Invalid candidate or publication preflight state fails through ReleaseKit
without bypassing its guards. Focus new coverage on integration mistakes;
upstream already owns comprehensive publication and recovery behavior.
- The library has no new ReleaseKit runtime imports or exported surface, and
affected documentation, notices, paths, and intended release links agree with
the implemented integration.
The completed adoption record documents proportionate checks and reused
evidence. Adoption checks are not automatically permanent
release gates. Diagnostic `check` remains optional; the actual release publisher
validates its final candidate once.
Adoption is complete when RK-01 through RK-06 are implemented and reviewed,
focused evidence is recorded, and the runbook is executable from the documented
prerequisites. Publishing CommandKit's first release remains separate work:
select a fresh version, prepare its note and final candidate, and follow the
runbook with publication authorization. Do not create a placeholder release
note or publish a tag merely to complete tooling adoption.
## Adoption completion
RK-01 through RK-06 were implemented and reviewed on 2026-10-08. The
Reviewed CommandKit at `c0c03285f7beac3e96f1708b655c1eb2add35e79`, covering the
six adoption commits from `ada2021` through `c0c0328` against the
[ReleaseKit target](releasekit.md), the completed
[ReleaseKit target at the reviewed revision](https://gitea.maximumdirect.net/eric/CommandKit/src/commit/c0c03285f7beac3e96f1708b655c1eb2add35e79/docs/roadmap/releasekit.md), the completed
[implementation record at the reviewed revision](https://gitea.maximumdirect.net/eric/CommandKit/src/commit/c0c03285f7beac3e96f1708b655c1eb2add35e79/docs/roadmap/implementation.md),
and applicable policies. The previously completed documentation reconciliation
record remains available in
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.