Document PromptKit comparison and catalogs

This commit is contained in:
2026-10-12 02:38:27 +00:00
parent 4bc0689c44
commit ee038df530
13 changed files with 203 additions and 103 deletions

View File

@@ -36,8 +36,8 @@ disclosure; CommandKit owns selection, coordination, adaptation, and presentatio
| --- | --- |
| Core module | Go 1.26.0; captured commands, typed bindings, dispatch, outcomes, help, and version. No ConfigKit dependency. ReleaseKit v0.4.0 is the declared maintainer tool. |
| `integrations/ckconfig` | Requires ConfigKit v0.7.1. `Scope`, `Suite`, `FromConfigKit`, and `AppCommand` expose independently declared validate/show/sources/explain/diff capabilities. |
| `integrations/ckprompt` | Requires ConfigKit v0.7.1 and PromptKit v0.12.0. It depends on ckconfig's public scope contracts and adapts engine configuration plus named definitions; its ConfigKit scope does not declare comparison. |
| Comparison status | ConfigKit-backed `config diff` is implemented. The [CLI reference](../cli.md#compare-configuration-selections), integration GoDoc, and [implementation record](https://gitea.maximumdirect.net/eric/CommandKit/src/commit/20e19b95694f7fdfd5c342ec4d543152986623dc/docs/roadmap/implementation.md) own current contracts and evidence. PromptKit comparison remains deferred. |
| `integrations/ckprompt` | The later PromptKit adoption selects PromptKit v0.14.0 and ConfigKit v0.7.1. It adapts engine configuration and exposes native comparison, prompt/profile catalogs, and named definitions through ckconfig and core contracts. |
| Comparison status | ConfigKit-backed `config diff` and PromptKit engine-scope comparison are implemented. The [CLI reference](../cli.md#compare-configuration-selections) and [PromptKit adoption record](promptkit.md) describe current behavior; the [implementation record](https://gitea.maximumdirect.net/eric/CommandKit/src/commit/20e19b95694f7fdfd5c342ec4d543152986623dc/docs/roadmap/implementation.md) records ConfigKit completion. |
The ConfigKit adapter acquires typed `*configkit.Result[T]` values and exposes
effective, source, and explanation facets through `View` for ordinary operations.
@@ -62,9 +62,11 @@ and [comparison contract](https://gitea.maximumdirect.net/eric/ConfigKit/src/com
## Dependency adoption and ownership
Both integration modules now select ConfigKit v0.7.1 and carry normal dependency
metadata for their actual graphs. Consumer Go minimums remain 1.26.0, the selected
release toolchain remains 1.26.8, and PromptKit remains v0.12.0 for this work.
Both integration modules select ConfigKit v0.7.1 and carry normal dependency
metadata for their actual graphs. Consumer Go minimums remain 1.26.0, and the
selected release toolchain remains 1.26.8. At completion of this ConfigKit work,
ckprompt still selected PromptKit v0.12.0; the later PromptKit adoption is tracked
in [promptkit.md](promptkit.md).
Core continues to have no ConfigKit or optional-integration dependency.
ConfigKit's declared tool requirement brings ReleaseKit v0.4.1 into the integration

View File

@@ -5,8 +5,8 @@ Status: retained future work and unselected proposals; no implementation schedul
## Purpose and authority
Completed initial delivery, performance, ReleaseKit upgrade, and remediation
records have been retired. This document preserves their unfinished capability
targets and deferred ideas under the
records have been retired. This document preserves remaining deferred
capabilities and unselected ideas under the
[release policy](../policy/release.md#release-documentation-and-preparation).
The original records remain available in
[Git history](https://gitea.maximumdirect.net/eric/CommandKit/src/commit/6bc37e7ba64ca0920b4d0cc77039a18d4006b24e/docs/roadmap).
@@ -18,13 +18,13 @@ an idea here does not select its syntax, API, priority, or delivery date.
## Deferred capability targets
### PromptKit configuration comparison
### PromptKit requirement inspection
ConfigKit-backed `config diff` is implemented by `ckconfig` for scopes that
declare that capability. `ckprompt.ConfigScope` does not declare comparison.
Reassess PromptKit's supported public comparison capabilities before planning a
PromptKit comparison. Do not reach into ConfigKit internals or infer comparison
semantics from rendered YAML.
PromptKit exposes `Engine.InspectRequirements`, but a standard CommandKit
operation for requirement inspection remains deferred. Its command syntax,
selection behavior, presentation, and readiness semantics have not been
selected. Reassess the owning library's public contract and make those product
choices before planning delivery.
### Comparison extensions
@@ -33,16 +33,6 @@ unselected extensions to the delivered ConfigKit comparison. Consider them only
for a concrete consumer need and a deliberate API/behavior decision under the
relevant ADRs.
### CAT-01: PromptKit catalogs
List captured prompt/version entries and named profiles through owning public
catalog APIs, with deterministic reports of loaded definitions. Resource names,
enumeration details, and report shapes remain future design work.
The initial PromptKit v0.12.0 review did not find public enumeration APIs.
Reassess current released capabilities before planning delivery. Do not infer
catalogs by reparsing configuration YAML or inspecting sibling internals.
## Other deferred proposals
These capabilities remain outside the delivered scope and require a concrete

View File

@@ -1,6 +1,6 @@
# Implement PromptKit comparison and catalogs
Status: Stages 1–9 complete; remaining stages are planned.
Status: Stages 1–10 complete; remaining stages are planned.
## Scope and authority
@@ -583,6 +583,29 @@ Review diffs, links/fragments, examples, and stale statements; run documented
Markdown whitespace checks. Describe native semantics as upstream-owned. Do not
promise arbitrary catalog/provider data is safe for public disclosure.
**Completion evidence (2026-10-12)**
- Updated ckprompt GoDoc for native configuration comparison, all four optional
callbacks, callback narrowing, selector/input preparation, nil-factory zero
values, and catalog YAML defaults. Root and module READMEs now describe the
shipped integration.
- Updated the CLI reference for PromptKit `config diff` and independent prompt
and profile catalogs, including selectors, YAML schema/default, empty results,
and the owning-library boundary for comparison and catalog membership. It
leaves catalog data disclosure with the application/provider.
- Updated consumer guidance with a narrowing-before-capture example, the
internal package overview, and development commands. The PromptKit roadmap now
records delivered behavior; the ConfigKit roadmap summary reflects the later
PromptKit adoption; and `deferred.md` retains only requirement inspection as a
PromptKit capability deferred from this feature.
- Reviewed the architecture policy and ADRs 0004 and 0008–0012. They remain
consistent with the delivered ownership and invocation model; no decision
record changes were needed. Historical baseline and ConfigKit completion
records remain clearly scoped to their original work.
- Markdown whitespace checks passed. A local-link and fragment check passed for
all ten changed Markdown files. Composed example behavior was exercised and
passed with Stage 9's example and complete ckprompt suite checks.
## Stage 11: Reconcile notices and prepared release notes
**Outcome:** distributed metadata/notices match actual graphs, and unpublished

View File

@@ -1,7 +1,8 @@
# Adopt PromptKit v0.14.0 and expose comparison and catalogs
Status: accepted feature end state; implementation has not started. Scope,
ownership, catalog API, and initial presentation choices are settled.
Status: comparison, catalogs, and current behavior documentation are implemented.
Dependency notice/release-note reconciliation and complete validation remain in
the [implementation record](implementation.md), Stages 11–12.
## Purpose and authority
@@ -34,9 +35,7 @@ This roadmap defines the selected end state. The
[implementation plan](implementation.md) assigns the ordered work and records
stage completion evidence.
## Current baseline
Baseline: CommandKit commit `ab270e2`.
## Baseline at commit ab270e2
CommandKit is a prerelease alpha codebase with no existing consumers. The
maintained consumer examples demonstrate intended usage; this adoption needs no
@@ -48,7 +47,19 @@ consumer migration plan.
| `integrations/ckconfig` | ConfigKit v0.7.1; independent validate/show/sources/explain/diff capabilities, paired selection/input preparation, and the shared YAML comparison report and delivery path. Report placement uses a report-local mapping index. |
| `integrations/ckprompt` | PromptKit v0.12.0 and ConfigKit v0.7.1. `ConfigScope` exposes validate/show/sources/explain, without comparison. `Suite` and `FromEngine` expose named prompt/profile inspection; `Command` generates only `promptkit show` children. |
| Maintained composed consumer | Demonstrates both configuration scopes, app configuration comparison, named prompt/profile inspection, and an application-owned session command. Application configuration caching distinguishes selections and supplied campaign inputs. |
| Deferred work | PromptKit comparison and catalogs are recorded as future capabilities in [deferred.md](deferred.md). They are targets of this adoption; requirement inspection is deferred separately. |
| Deferred work | PromptKit comparison and catalogs were future capabilities at this baseline. The later adoption delivers them; requirement inspection remains deferred in [deferred.md](deferred.md). |
## Delivered status
The current repository uses PromptKit v0.14.0. `ConfigScope` declares native
comparison through `config diff`; `FromEngine` supplies prompt/profile catalog
and named-inspection callbacks; and `Command` installs only the supplied `list`
and `show` operations. The maintained composed consumer exercises comparison,
both catalogs, named inspection, and its application-owned session command.
Stages 1–10 and their completion evidence are recorded in the
[implementation plan](implementation.md). Requirement inspection remains
deferred; distribution reconciliation and complete validation are still pending
there.
The existing [ckprompt contracts and adapters](../../integrations/ckprompt/adapters.go)
and [command assembly](../../integrations/ckprompt/command.go) are the starting
@@ -113,8 +124,8 @@ app config diff --scope promptkit --config before.yml --against-config after.yml
app config diff --scope promptkit --config base.yml --against-overlay candidate
```
These are target invocations, not currently implemented PromptKit comparisons.
They use the existing [comparison CLI contract](../cli.md#compare-configuration-selections):
These invocations use the existing
[comparison CLI contract](../cli.md#compare-configuration-selections):
one scope, left selectors and inherited right overrides, shared applicable domain
selector values, YAML-only additions/changes/deletions presentation, and success
for completed comparisons regardless of whether differences exist. There is no
@@ -290,7 +301,10 @@ exact strings; quote through the YAML encoder rather than interpreting
numeric-looking versions. CommandKit defines these report fields explicitly;
serialization of an upstream Go struct does not define the CLI schema.
## Work needed from the baseline
## Selected implementation scope
The sections below record the scope selected for adoption. Implementation status
and evidence are tracked in the [implementation plan](implementation.md).
### Dependencies and distribution