Finalize the v0.2.0 implementation plan

This commit is contained in:
2026-10-07 21:25:58 +00:00
parent 3974a4686a
commit 9086306498
2 changed files with 482 additions and 635 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -1,10 +1,10 @@
# ReleaseKit v0.2.0 roadmap
Status: Draft scope for the next release.
Status: Agreed feature scope; implementation planning is recorded separately.
This roadmap catalogs improvements to ReleaseKit v0.1.0. Each item records its
rationale, target state, and scope of work. A staged implementation plan will
follow once the release scope is finalized.
rationale, target state, and relevant scope decisions. The
[implementation plan](implementation.md) owns the staged work.
The priorities in [ADR 0002](../adr/0002-routine-releases.md) guide this work:
minimize application-owned release code, duplicated mechanics, and routine
@@ -14,9 +14,11 @@ developer decisions through a standard, minimal API.
### Rationale and current baseline
ReleaseKit has a shared candidate workflow and a product-specific additional
check extension point. The optional validation capabilities planned for v0.2.0
need a coherent selection and diagnostic model across the Go API and profile.
The shared validation foundation and its remediation are complete. ReleaseKit
has common candidate execution, facade-owned diagnostics, committed-file
inspection, and a product-specific additional-check extension point. The
optional v0.2.0 capabilities still need their functioning API/profile selections
and checker implementations.
The [validation-model roadmap](model.md) records this enabling work and its
rationale. A common model lets consumers declare choices once and receive
@@ -30,17 +32,8 @@ ReleaseKit owns coordination and diagnostics through the existing `Check` and
`Publish` operations. Product-specific checks, publication expectations,
artifact builds, and delivery retain their distinct responsibilities.
### Work needed
- Design and integrate the shared specification, profile mapping, execution,
and error model described in [model.md](model.md).
- Preserve existing default behavior and additional-check support, and align
GoDoc, profile guidance, and CLI reporting as the model lands.
- Evaluate the model against Audita, ConfigKit, and PromptKit before finalizing
the interfaces used by the individual validation features.
Completion should provide a common foundation for the validation capabilities
below, with small consumer declarations and reusable execution.
Completion should provide equivalent Go and profile declarations for the
validation capabilities below through the existing shared foundation.
## 2. Use the application's module-selected ReleaseKit version in CI
@@ -76,21 +69,7 @@ validation and builds. Source publication and hosted delivery retain separate
outcomes. ReleaseKit's own source bootstrap and consumers using a separately
installed tool remain supported use cases.
### Work needed
- Revise the maintained CI template to establish the tagged checkout before
selecting and building the module's ReleaseKit command. Remove the separate
version setting from this module-based integration and keep bootstrap logic
small and reusable.
- Update adoption and upgrade guidance to explain module-based selection,
compatible Go environments, dependency preparation, and migration from the
existing workflow pin. Explain the applicable bootstrap for consumers that
use a separately installed tool.
- Adapt workflow verification to exercise tool selection from the tagged
module configuration, including a dependency-version change, while preserving
tag/commit checks and existing source-only and binary delivery behavior.
- Apply the revised integration to Audita as the first consumer migration and
confirm that its local wrapper and CI use the same module-selected tool.
Audita adopts the module-based integration as the first consumer migration.
Completion should leave downstream maintainers with one ReleaseKit dependency
update for this integration and a maintained template they can adopt directly.
@@ -120,15 +99,6 @@ scope, offline execution, ordering, and failure reporting. Additional product
checks remain available after shared validation. Selecting race testing reports
unavailable prerequisites clearly and preserves the selected validation.
### Work needed
- Add compact validation options to the facade and profile, and carry them
through both candidate-check and publication paths.
- Extend shared Go invocation handling to apply race selection to the base
suite while preserving its offline environment and native test behavior.
- Update consumer guidance and verify default behavior, one selected suite run,
consistent API/CLI behavior, and propagation of validation failures.
Completion should let ConfigKit and PromptKit select a race-enabled suite once
and remove the corresponding consumer-owned test invocation.
@@ -151,14 +121,6 @@ with failures reported through the ordinary check and publication flow.
The option preserves current defaults for consumers that leave it unset.
ReleaseKit owns the offline command and its coordination with base testing.
### Work needed
- Add the full-vet selection to shared validation configuration and execution.
- Coordinate the base test invocation with the separate pass so consumers
express the desired coverage once.
- Document the selection and verify ordering, test-time vet omission, failure
handling, and unchanged default behavior through the shared validation path.
Completion should replace ConfigKit's and PromptKit's separate vet commands and
manual test-time vet settings with one declarative choice.
@@ -186,16 +148,6 @@ require no binary name, version smoke command, or artifact manifest. Successful
compilation establishes build compatibility; execution on a target remains a
separate concern. Consumers select targets for their support commitments.
### Work needed
- Add a package-compilation target declaration to validation configuration,
distinct from the existing artifact build specification.
- Reuse internal Go environment and target handling for offline compilation,
replacing consumer-owned loops and preserving one base test execution.
- Document the distinction between compatibility checks and deliverables, and
verify selected-target compilation, failure reporting, and unchanged
source-only delivery behavior.
Completion should let ConfigKit declare its two Linux targets and remove its
release-specific compilation loop.
@@ -221,15 +173,6 @@ The expectation applies to the publication destination. Fetch configuration
retains its existing semantics, and `Check` retains its local-only behavior.
Consumers that omit the expectation keep the current remote-selection model.
### Work needed
- Add the optional expectation to the facade and profile and compare it at
the existing publication endpoint-resolution boundary.
- Reuse captured-endpoint handling and define the destination-comparison
semantics in GoDoc and consumer guidance.
- Verify matching, mismatching, and omitted expectations, including resolved
Git URL behavior, while preserving existing recheck and recovery coverage.
Completion should let consumers declare the intended push destination without
maintaining their own publication preflight logic.
@@ -253,15 +196,6 @@ Consumers select the capability once and rely on ReleaseKit for enumeration,
format checking, and failure reporting. Existing validation defaults remain
unchanged when the option is unset.
### Work needed
- Add formatting selection and shared inspection of tracked Go source to the
candidate-validation API, profile, and execution path.
- Provide actionable diagnostics for formatting differences and inspection
failures while preserving source files.
- Document the formatting convention and verify formatted and unformatted
inputs, consistent API/CLI behavior, and unchanged default validation.
Completion should let PromptKit remove its local formatting loop and select
the shared check through its release profile.
@@ -298,20 +232,6 @@ the checkout a validation failure, using the same parser and diagnostics.
Boundary validation remains independent of neighboring checkout contents.
Existing validation defaults remain unchanged when the option is unset.
### Work needed
- Define the supported Markdown link forms and heading-anchor convention,
including destination resolution and diagnostics for out-of-scope links.
- Add shared parsing and local destination/fragment validation behind the
public validation API and profile selection.
- Add the optional checkout-boundary rule to the shared Markdown settings,
with diagnostics that identify the source location and destination.
- Document supported behavior and verify valid and broken links, heading
fragments, representative Markdown syntax, and handling of code examples
and links outside the checkout with the boundary rule enabled and disabled.
- Verify that checking is offline, preserves files, and behaves consistently
through candidate checking and publication.
Completion should let PromptKit replace its local Markdown checker with a
profile selection and rely on shared parsing rules and diagnostics.
@@ -340,16 +260,6 @@ The checks inspect candidate contents independently of the Go test environment.
`Check` and `Publish`, including their CLI forms, apply the same offline,
read-only checks. Omitted selections preserve current defaults.
### Work needed
- Add independent distribution-rule selections to the validation API and profile.
- Implement shared candidate-file inspection and module-declaration parsing,
distinguishing local filesystem replacements from versioned replacements.
- Document the inspection scope and diagnostics, and verify workspace files,
local and versioned replacements, and independent rule selection.
- Verify equivalent API/CLI behavior, unchanged defaults, and inspection of
distributed files regardless of workspace discovery settings during testing.
Completion should let PromptKit declare its distribution requirements and
remove the corresponding consumer-owned checks.
@@ -376,14 +286,5 @@ repository size remain separate concerns. `Check` and `Publish`, including
their CLI forms, use the same offline, read-only inspection. The check is
disabled by default.
### Work needed
- Add file-size selection, a configurable byte limit, and path exclusions to
the shared validation API and profile.
- Implement candidate-file size inspection with actionable diagnostics.
- Document units, threshold behavior, exclusions, and the scope of inspection.
- Verify files below, at, and above the limit; configured limits and exclusions;
and equivalent API/CLI behavior with the check enabled and disabled.
Completion should let consumers catch oversized candidate files through a
small declaration and remove any corresponding local inspection code.