| CommandKit dependencies | Core v0.3.0 and ckconfig v0.2.0 |
| Available ckconfig | v0.3.0, with vanity ConfigKit v1.1.0 and Go 1.27.0 |
| Maintainer toolchain | Go 1.27.0; root ReleaseKit v0.9.0 |
Direct module discovery verified PromptKit v0.18.0 at published commit
`d9f6aad30509e538fc73ea16710df3a3ec084502`. Its module requires Go 1.27.0 and
vanity ConfigKit v1.1.0. Published ckconfig v0.3.0 downloads through its vanity
path and selects that same ConfigKit identity. The current ckprompt still
selects ckconfig v0.2.0 independently and cannot compose with local ckconfig
v0.3.0 in the development workspace.
The upstream [v0.17 migration notes](https://forge.maximumdirect.net/base-layer/promptkit/src/commit/d9f6aad30509e538fc73ea16710df3a3ec084502/docs/releases/v0.17.0.md),
and [configuration/API migration guide](https://forge.maximumdirect.net/base-layer/promptkit/src/commit/d9f6aad30509e538fc73ea16710df3a3ec084502/docs/consumers/configuration-migration.md)
own the upstream changes crossed by this upgrade.
A disposable migration established the following, without changing repository
code or using local dependency replacements:
- Changing dependencies and imports alone fails at four production accesses to
removed prompt-version metadata.
- After removing that metadata, production packages build on Go 1.27.0 against
published ckconfig v0.3.0, ConfigKit v1.1.0, and PromptKit v0.18.0.
- After converting the composed example's PromptKit resources to identified
lists, its profile catalog, source inventory, requirements inspection, and
configuration validation run successfully. The native bundle appears in
catalogs and as source evidence through ckconfig's current report path.
- The full suite still needs version-fixture, configuration-shape, and report
expectation changes. These diagnostics do not establish completed adoption.
A follow-up review compared the published v0.18.0 API with ckprompt at
CommandKit revision `69cc642`. Existing report shapes cover the current prompt,
profile, requirements, catalog, and smoke inspection results after removing
obsolete prompt-version fields. Smoke reports already carry the native facts,
timing, attempts, and usage; the review found no additional report fields to add
in those operations.
Three capabilities merit consideration beyond compatibility migration:
| Capability | Current integration | Recommendation and scope decision |
| --- | --- | --- |
| Configuration metadata and history | Native `ConfigurationInspection.Metadata()` returns ConfigKit metadata. `ConfigScope` connects effective configuration, sources, explanations, and comparison, but has no metadata facet. | Extend the shared optional ckconfig capability first, then connect PromptKit's native metadata. Keep this as the next shared enhancement following adoption; see OD-3. |
| Prepared-request inspection | Native `Engine.Prepare` returns a `PreparedRun` snapshot. ckprompt exposes concrete request validation but has no operation returning preparation results. | Consider an optional provider capability and report as the next substantive ckprompt enhancement. This extends standard inspection into rendering and needs an explicit scope choice; see OD-4. |
| Namespace selection helpers | Native `Engine.WithNamespaces` supplies separate prompt, profile, and backend namespace defaults for unqualified selections. Applications can already return that view from an engine loader. Existing standard namespace selectors filter catalogs. | Begin with documented loader wiring; consider reusable helpers or standard selectors when consumers demonstrate repeated wiring. Keep name resolution distinct from catalog filtering; see OD-5. |
The released [configuration inspection API](https://forge.maximumdirect.net/base-layer/promptkit/src/commit/d9f6aad30509e538fc73ea16710df3a3ec084502/configuration_inspection.go),
and inference request-construction errors reported as concluded diagnostics by
the [native smoke tester](https://forge.maximumdirect.net/base-layer/promptkit/src/commit/d9f6aad30509e538fc73ea16710df3a3ec084502/internal/usecase/smoke_tester.go).
Those findings inform OD-1; the disposable CommandKit review did not reproduce
the full upstream audit set.
Keep domain corrections upstream. This adoption does not add local response
limits, duplicate request validation, or replacement error classification to
compensate for those defects. Evaluate any published corrective release for
compatibility and adapt to its public contract using ordinary change review.
## Open Decisions
### OD-1: Ship on v0.18.0 or await relevant upstream corrections?
**Recommendation:** develop the migration now against the published v0.18.0
baseline and prefer a published corrective release addressing the relevant
native diagnostic issues for the final shipping pin. That keeps integration
work concrete while keeping fixes with their upstream owner. Taking a newer
release requires reviewing its actual changes and rerunning affected checks;
waiting for corrections can delay ckprompt publication. Whether to publish on
v0.18.0 if those corrections are not yet available remains a release choice.
**Viable alternative:** finish and publish the ckprompt migration with exactly
v0.18.0 using the existing release workflow, then adopt an upstream correction
separately. This restores the compatible module set without an upstream-dependent
schedule. It ships with the recorded native defects still present and requires
a later dependency update. Neither option selects local workarounds or makes
completion of every upstream audit finding a new release prerequisite.
### OD-2: Which bundle policy should the maintained example demonstrate?
**Recommendation:** retain upstream's default bundle in the composed example
and make catalog/report assertions about the application-defined records and
returned native evidence rather than duplicating the complete bundled catalog.
Use explicit opt-out in focused fixture loaders when their purpose is a minimal
application-only inventory. This demonstrates the current native default while
keeping adapter tests focused. Example inventories and list-index paths need
updating, and offline smoke wiring must still select the intended fixture target.
**Viable alternative:** opt out explicitly in the composed example with
`WithBundledOpenRouter(false)`. This is a supported application-loader choice
that keeps the example's inventory small and its resource positions simple.
It does not demonstrate the default-on inventory; documentation should state
the example's choice, and focused adoption coverage should still show that the
integration exposes a default-constructed engine's returned bundle evidence.