Plan integration dependency alignment
This commit is contained in:
168
docs/roadmap/integration-dependency-alignment.md
Normal file
168
docs/roadmap/integration-dependency-alignment.md
Normal file
@@ -0,0 +1,168 @@
|
||||
# Integration dependency alignment
|
||||
|
||||
Status: proposed release-preparation roadmap. This pass adds documentation only;
|
||||
dependency changes and publication remain future work.
|
||||
|
||||
## Purpose and authority
|
||||
|
||||
Align the independently released integrations with the core APIs their current
|
||||
source already uses. Publish compatible module versions in dependency order so
|
||||
each integration builds and validates against its declared, downloaded
|
||||
dependencies with workspace discovery off.
|
||||
|
||||
The [release procedure](../release.md) owns publication commands and release
|
||||
order. The [release policy](../policy/release.md),
|
||||
[agent policy](../policy/agents.md), [testing policy](../policy/testing.md),
|
||||
[documentation policy](../policy/documentation.md), and
|
||||
[OSS policy](../policy/oss.md) govern the work. This roadmap selects the target
|
||||
and release-preparation scope; it does not change those policies.
|
||||
|
||||
## Baseline and investigation evidence
|
||||
|
||||
Reviewed baseline: `289a171e97699ad9aa57ee2cc40bdad1c0b680a9`.
|
||||
|
||||
- Both integration module declarations require core v0.2.0. The
|
||||
[ckprompt declaration](../../integrations/ckprompt/go.mod) also requires
|
||||
ckconfig v0.1.0; the [ckconfig declaration](../../integrations/ckconfig/go.mod)
|
||||
has no dependency on ckprompt.
|
||||
- Current integration source uses newer core APIs including `CompletionHint`,
|
||||
`Explanation`, and `Reporter`. Both independent Go 1.26.8 suites fail to
|
||||
compile with `GOWORK=off` and their existing read-only module graphs.
|
||||
- Updating core alone is insufficient for ckprompt: published ckconfig v0.1.0
|
||||
still uses removed core APIs, including `Invocation.Streams`,
|
||||
`Outcome.Diagnostics`, and `SeverityError`, plus the old `Failure(error)`
|
||||
call shape.
|
||||
- The authoritative `origin` tag listing contains core v0.1.0 and v0.2.0, and
|
||||
the two integration v0.1.0 tags. The proposed next versions below were unused
|
||||
at review. Remote `main` was `230187296fae5253cb1773f16c2f1d1a39499ed0`;
|
||||
the reviewed local changes still need normal publication to the authoritative
|
||||
branch as part of candidate preparation.
|
||||
- A checked-in [core v0.3.0 draft](../releases/v0.3.0.md) already describes the
|
||||
reporting and alias migration. It is an unpublished draft, not proof that
|
||||
the module version can be downloaded.
|
||||
|
||||
The investigation used disposable alternate module files, Go 1.26.8,
|
||||
`GOWORK=off`, and read-only offline tests. Only temporary dependency selections
|
||||
changed; the real module declarations, sums, and source remained unchanged.
|
||||
|
||||
| Current source under test | Temporary dependency selection | Result |
|
||||
| --- | --- | --- |
|
||||
| ckconfig | Current core source | Module suite and maintained example passed. |
|
||||
| ckprompt | Current core source, published ckconfig v0.1.0 | Compilation failed in the old ckconfig implementation. |
|
||||
| ckprompt | Current core and current ckconfig source | Module suite and maintained example passed. |
|
||||
|
||||
The successful cases retained ConfigKit v0.8.0 and PromptKit v0.16.0. These
|
||||
results isolate the CommandKit dependency alignment needed here; they do not
|
||||
prove that future published versions or their downloaded sums already exist.
|
||||
|
||||
## Targeted end state
|
||||
|
||||
### Compatible independently released modules
|
||||
|
||||
Use the following proposed next versions, subject to the existing fresh-version
|
||||
publication guards:
|
||||
|
||||
| Module | Next release | Required CommandKit dependencies | Full tag |
|
||||
| --- | --- | --- | --- |
|
||||
| Core | v0.3.0 | None | `v0.3.0` |
|
||||
| ckconfig | v0.2.0 | Core v0.3.0 | `integrations/ckconfig/v0.2.0` |
|
||||
| ckprompt | v0.2.0 | Core v0.3.0 and ckconfig v0.2.0 | `integrations/ckprompt/v0.2.0` |
|
||||
|
||||
Minor integration releases fit the existing pre-1.0 compatibility policy: the
|
||||
reporting migration changes consumer-facing behavior and adopts a core version
|
||||
with incompatible API changes. Migration notes explain the impact on provider
|
||||
results, invocation reporting, and consuming applications.
|
||||
|
||||
The three modules retain independent versions and source tags. Their candidates
|
||||
may identify successive commits: core publication need not wait for integration
|
||||
metadata that depends on that newly published core. Each selected module's
|
||||
final release suite runs against its actual declared dependencies.
|
||||
|
||||
### Retained architecture and scope
|
||||
|
||||
Keep the current library APIs and integration adapters, Go 1.26.0 consumer
|
||||
minimum, Go 1.26.8 maintainer toolchain, and root-selected ReleaseKit v0.9.0.
|
||||
The successful diagnostic suites indicate dependency selection is sufficient;
|
||||
this work selects no API rollback or compatibility shim for old reporting APIs.
|
||||
|
||||
Retain ConfigKit v0.8.0, PromptKit v0.16.0, and other dependency selections
|
||||
unless ordinary tidy changes the resolved graph as a consequence of the
|
||||
CommandKit updates. Inspect and explain the resulting graph rather than
|
||||
bundling unrelated upgrades. In particular, transitive tools with different
|
||||
module paths may coexist; attribution must reflect the actual selection.
|
||||
|
||||
Preserve the existing launchers, three release profiles, generic validators,
|
||||
credential handling, and separate source-publication and hosted-delivery
|
||||
outcomes. Development workspaces remain useful and ignored. Diagnostic local
|
||||
replacements and the earlier temporary Go shim remain development evidence;
|
||||
release validation uses normal downloaded dependencies without that redirection.
|
||||
|
||||
## Work needed
|
||||
|
||||
### Prepare and release core
|
||||
|
||||
Review the v0.3.0 draft against changes since the published v0.2.0 tag, including
|
||||
completion, invocation reporting, aliases, and release-tool maintenance. Bring
|
||||
its summary, migration guidance, and immutable source/licensing links into line
|
||||
with the final candidate and current release procedure. Keep published notes
|
||||
and tags unchanged.
|
||||
|
||||
Prepare and commit the intended core candidate on `main`, then use the existing
|
||||
source-publication workflow to publish v0.3.0. Preserve the procedure's required
|
||||
candidate-commit publication before tag publication. The root suite covers the
|
||||
root module; the still-pending integration alignment is separate work.
|
||||
|
||||
### Align and release ckconfig
|
||||
|
||||
After core v0.3.0 is published, update ckconfig's core requirement to that version
|
||||
and prepare dependencies with workspace discovery off. Tidy its module metadata
|
||||
and retain authentic sums from actual downloads. No future checksum or local
|
||||
replacement substitutes for the published dependency.
|
||||
|
||||
Prepare `integrations/ckconfig/docs/releases/v0.2.0.md`, documenting the new core
|
||||
requirement and reporting/completion behavior relevant to consumers. Update
|
||||
affected current guidance and module-local attribution from the actual resolved
|
||||
graph, including immutable notice links. Validate and publish the selected
|
||||
ckconfig candidate through the ordinary module release workflow.
|
||||
|
||||
### Align and release ckprompt
|
||||
|
||||
After ckconfig v0.2.0 is published, update ckprompt's direct requirements to core
|
||||
v0.3.0 and ckconfig v0.2.0 together. Prepare downloaded dependencies and tidy
|
||||
with workspace discovery off. Retain real sums and inspect indirect changes.
|
||||
|
||||
Prepare `integrations/ckprompt/docs/releases/v0.2.0.md`, covering the compatible
|
||||
dependency set and consumer migration. Align current guidance and module-local
|
||||
attribution with that selection. Validate and publish its candidate through the
|
||||
ordinary module release workflow.
|
||||
|
||||
### Record the aligned result
|
||||
|
||||
Record the selected versions, candidate revisions, validation outcomes, and
|
||||
source-publication outcomes separately for all three modules. Update current
|
||||
dependency-readiness statements that still describe this mismatch as unresolved;
|
||||
preserve historical baseline failures in completed review and implementation
|
||||
records. Link future implementation tracking here without restarting the
|
||||
completed ReleaseKit adoption or remediation work.
|
||||
|
||||
## Validation and completion boundaries
|
||||
|
||||
Use the selected module's ordinary deterministic offline suite with
|
||||
`GOWORK=off` and read-only metadata after dependency preparation. Its maintained
|
||||
consumer compiles and runs with that suite. ReleaseKit's publication command
|
||||
owns the final candidate suite and selected file checks; validation-only checks
|
||||
remain optional diagnostics. Reuse successful evidence for unchanged candidates
|
||||
instead of adding a required check-then-publish repetition.
|
||||
|
||||
Retrieving a newly published dependency is preparation for the next module's
|
||||
release. It does not turn proxy availability or consumer installation into a
|
||||
completion gate for the preceding source release. Continue to resolve failed
|
||||
or ambiguous publication using the existing policy and upstream recovery flow.
|
||||
Hosted Gitea delivery keeps its separate outcome; this roadmap adds no CI
|
||||
polling, live provider calls, or additional publication gate.
|
||||
|
||||
Alignment is complete when the matched source versions are published, each
|
||||
integration declares the compatible versions with authentic downloaded sums,
|
||||
each final selected-module suite passes without workspace or replacement
|
||||
redirection, and its current documentation and attribution agree with that
|
||||
graph. Temporary local-source success alone does not establish that end state.
|
||||
Reference in New Issue
Block a user