Document the latest library updates and adoption work
This commit is contained in:
245
docs/roadmap/imports.md
Normal file
245
docs/roadmap/imports.md
Normal file
@@ -0,0 +1,245 @@
|
||||
# Library Updates: ConfigKit, ReleaseKit, and PromptKit
|
||||
|
||||
**Reviewed:** 2026-10-11.
|
||||
**Status:** Reviewed and recommended; dependency upgrades and optional feature
|
||||
adoption are not implemented by this document.
|
||||
|
||||
## Scope and Reviewed Baseline
|
||||
|
||||
Review the released library changes since Audita's current imports and identify
|
||||
the work needed to adopt them. Audita's baseline is commit
|
||||
`6debe7e`, with the versions declared in [go.mod](../../go.mod).
|
||||
The local library checkouts were clean and matched the released source commits;
|
||||
the remote annotated tags were checked against their peeled commits.
|
||||
|
||||
| Library | Current import | Recommended import | Full reviewed upstream commit |
|
||||
| --- | --- | --- | --- |
|
||||
| ConfigKit | v0.5.0 | v0.7.1 | `6fffde4af8f31f99d3ee295c426eb3234cb0fb77` |
|
||||
| ReleaseKit | v0.3.0 | v0.4.1 | `2d5a8110c61e31daf8698766114ae305d0e0e469` |
|
||||
| PromptKit | v0.12.0 | v0.14.0 | `143c6e9b3a675872117b0471e2ff8bcb25055a54` |
|
||||
|
||||
The review covers intervening releases, not just each latest patch. Evidence
|
||||
includes release notes, consumer documentation, public API implementations,
|
||||
Audita's integration code, and a disposable compatibility exercise using the
|
||||
released modules. Public web rendering was unavailable; local tagged sources
|
||||
and remote Git tag checks supplied the evidence.
|
||||
|
||||
## Target State and Recommendation
|
||||
|
||||
Upgrade all three libraries together to the versions above, retaining Audita's
|
||||
current configuration format, CLI, processing, diagnostics, and release model.
|
||||
No application-code migration was needed in the compatibility exercise.
|
||||
ConfigKit and PromptKit improvements become available through existing calls;
|
||||
new operator-facing discovery and comparison features remain separate choices.
|
||||
|
||||
All selected libraries declare Go 1.26.0. Audita already declares that minimum
|
||||
and uses Go 1.26.8 for release validation, so this adoption requires no minimum,
|
||||
CI image, or distributed Go-runtime notice change. PromptKit v0.14.0 requires
|
||||
ConfigKit v0.7.1; both library module graphs also select ReleaseKit v0.4.1 as a
|
||||
maintainer tool dependency. Go module selection therefore couples these updates,
|
||||
even though ReleaseKit's orchestration is not part of their runtime imports.
|
||||
|
||||
Keep the ownership boundaries in the [architecture policy](../policy/architecture.md):
|
||||
ConfigKit owns loading and provenance, PromptKit owns LLM execution and captured
|
||||
definitions, ReleaseKit owns release mechanics, and Audita owns transcript
|
||||
behavior and application meaning. This review does not select CommandKit
|
||||
adoption or introduce new release gates.
|
||||
|
||||
## ConfigKit: New Capabilities and Adoption Work
|
||||
|
||||
### Changes Since v0.5.0
|
||||
|
||||
- **v0.6.0:** Reduces loading and inspection work through fewer path allocations,
|
||||
combined metadata traversal, indexed resolution and sensitivity processing,
|
||||
lightweight presence queries, and prepared immutable inspection lookups.
|
||||
Existing composition, inheritance, presence/null, provenance, and secret
|
||||
contracts remain unchanged. It raises the consumer minimum to Go 1.26.0 and
|
||||
adopts ReleaseKit for its own publication.
|
||||
- **v0.7.0:** Adds `configkit.Diff[T](left, right *Result[T])`, comparing frozen
|
||||
effective inspection values from two successful loads. Results contain a
|
||||
semantic `Path`, left/right `ValueSnapshot` values, and `HiddenChanged`.
|
||||
Mappings compare recursively, sequences are atomic changed regions, and
|
||||
presence distinguishes missing values from explicit null. Combined sensitivity
|
||||
from both loads protects the paired snapshots, including historical and
|
||||
dependency-derived sensitivity.
|
||||
- **v0.7.1:** Updates the maintainer ReleaseKit dependency to v0.4.1. Runtime
|
||||
behavior and public APIs are unchanged from v0.7.0.
|
||||
|
||||
References: [v0.6.0 notes](https://gitea.maximumdirect.net/eric/ConfigKit/src/tag/v0.6.0/docs/releases/v0.6.0.md),
|
||||
[v0.7.0 notes](https://gitea.maximumdirect.net/eric/ConfigKit/src/tag/v0.7.0/docs/releases/v0.7.0.md),
|
||||
[v0.7.1 notes](https://gitea.maximumdirect.net/eric/ConfigKit/src/tag/v0.7.1/docs/releases/v0.7.1.md),
|
||||
and [comparison guidance](https://gitea.maximumdirect.net/eric/ConfigKit/src/tag/v0.7.1/docs/consumers/README.md#effective-configuration-diffs).
|
||||
|
||||
### Work Needed
|
||||
|
||||
The dependency update needs module/checksum and attribution changes. Existing
|
||||
`internal/core/config` callers need no signature or configuration migration.
|
||||
Retain coverage for application resolution, explicit CLI overrides, overlays,
|
||||
inheritance, provenance, and redaction; these are the boundaries affected by
|
||||
upstream internal optimizations. No fixed performance gain is promised or
|
||||
required for adoption.
|
||||
|
||||
If configuration comparison is selected later, load two complete selections
|
||||
through Audita's normal application definition and call the public diff API.
|
||||
Audita would own selection syntax and presentation. Use presence and
|
||||
`HiddenChanged` directly rather than interpreting redaction-marker strings.
|
||||
Do not add separately rendered full configurations as purportedly cross-protected
|
||||
context: protection applies to the returned changed regions. Reference names,
|
||||
not resolved credential bytes, participate in typed secret-reference comparison.
|
||||
Equal values with different provenance do not produce differences; later
|
||||
mutations of `Result.Config` are outside the captured comparison.
|
||||
|
||||
## ReleaseKit: New Capabilities and Adoption Work
|
||||
|
||||
### Changes Since v0.3.0
|
||||
|
||||
- **v0.4.0:** Adds individual-module releases with `ModuleDir`, module identity,
|
||||
complete module-prefixed tags, module-local validation/builds, separate Gitea
|
||||
pages, and mapped multi-module launchers. Root-module defaults retain ordinary
|
||||
tags and note locations.
|
||||
- Adds explicit shared-file selection for optional file checks, module-bound
|
||||
versioned build receipts, expected-module checks, and `ci-deliver --prepared`
|
||||
for an already verified detached checkout.
|
||||
- Improves checkout-root and symlink resolution, offline committed-source
|
||||
inspection, available build-failure evidence, and reuse of Go discovery and
|
||||
asset verification. Independent nested modules are excluded from automatic
|
||||
parent-module file inspection; product tests can still use nested fixtures.
|
||||
- Introduces an API/receipt cutover: `TaggedCheckoutRequest.Version` becomes
|
||||
`Tag`; `PrepareBuildDependencies` takes `DependencyPreparationRequest`; old
|
||||
prebuilt receipts need regeneration with the new builder.
|
||||
- **v0.4.1:** Fixes concurrency in delivery test fixtures. Production behavior
|
||||
and public APIs are unchanged from v0.4.0.
|
||||
|
||||
References: [v0.4.0 notes and migration guidance](https://gitea.maximumdirect.net/eric/ReleaseKit/src/tag/v0.4.0/docs/releases/v0.4.0.md),
|
||||
[v0.4.1 notes](https://gitea.maximumdirect.net/eric/ReleaseKit/src/tag/v0.4.1/docs/releases/v0.4.1.md),
|
||||
and [current delivery contract](https://gitea.maximumdirect.net/eric/ReleaseKit/src/tag/v0.4.1/docs/cli.md).
|
||||
|
||||
### Work Needed
|
||||
|
||||
Audita uses the Go tool CLI and lightweight `buildinfo` facade. It has no callers
|
||||
of the changed preparation APIs and does not need module maps, prefixed tags,
|
||||
new shared-file settings, or a multi-module layout. Its root-module
|
||||
[release profile](../../releasekit.json) and [launcher](../../scripts/release.sh)
|
||||
can retain their current configuration. Runtime version access is unchanged.
|
||||
|
||||
Update the selected dependency, checksums, attribution, and v0.3.0-pinned
|
||||
consumer links in [the release runbook](../release.md). Recommend adding
|
||||
`--prepared` to [.woodpecker/release.yml](../../.woodpecker/release.yml): bootstrap
|
||||
already verifies and checks out the event tag before reading module metadata,
|
||||
so the new mode avoids repeating fetch/checkout while retaining ReleaseKit's
|
||||
verification. Update the runbook and focused workflow coverage for that deliberate
|
||||
change. Keeping the current default preparation mode is also supported and is
|
||||
not an adoption blocker.
|
||||
|
||||
Keep historical delivery retries paired with their tagged tool selection and
|
||||
workflow. Existing v0.3.0 retained artifacts should use that version's delivery
|
||||
path; regenerate receipts with the new builder when intentionally using v0.4.1
|
||||
prebuilt delivery. Do not imply that historical receipts are portable across the
|
||||
cutover or replace already published contents.
|
||||
|
||||
Use existing launcher/profile/CI tests, verify the two production builds and
|
||||
injected version behavior during implementation, and keep source publication
|
||||
separate from asynchronous delivery. This upgrade requires no real tag push,
|
||||
hosted upload, CI wait, expanded platform matrix, or new approval gate.
|
||||
|
||||
## PromptKit: New Capabilities and Adoption Work
|
||||
|
||||
### Changes Since v0.12.0
|
||||
|
||||
- **v0.13.0:** Adds `Engine.InspectRequirements` for recognizable input and
|
||||
caller-variable dependencies before artifacts exist. It distinguishes
|
||||
required, conditional, and optional dependencies and reports incomplete
|
||||
discovery with structured issues. It analyzes selected prompt/template and
|
||||
caller context without preparing artifacts or executing a model request.
|
||||
- Adds `Engine.ListProfiles` and `Engine.ListPrompts`, exposing lexically ordered,
|
||||
caller-owned effective profile IDs and exact prompt ID/version pairs from the
|
||||
captured engine configuration, without provider calls.
|
||||
- Reduces avoidable response/rendering copies, repeated parameter encoding,
|
||||
artifact-file allocation, prepared-snapshot copying, and inspection lookup
|
||||
work. ConfigKit v0.6.0 improves engine construction and configuration inspection.
|
||||
The Go minimum becomes 1.26.0, and maintainer publication adopts ReleaseKit.
|
||||
- **v0.14.0:** Adds `ConfigurationInspection.Diff`, delegating paired captured
|
||||
configuration comparison to ConfigKit. It also selects ConfigKit v0.7.1 and
|
||||
ReleaseKit v0.4.1.
|
||||
|
||||
References: [v0.13.0 notes](https://gitea.maximumdirect.net/eric/promptkit/src/tag/v0.13.0/docs/releases/v0.13.0.md),
|
||||
[v0.14.0 notes](https://gitea.maximumdirect.net/eric/promptkit/src/tag/v0.14.0/docs/releases/v0.14.0.md),
|
||||
and [consumer inspection guidance](https://gitea.maximumdirect.net/eric/promptkit/src/tag/v0.14.0/docs/consumers/pkg-promptkit.md).
|
||||
|
||||
### Work Needed
|
||||
|
||||
Existing runtime construction, keyed prompt/profile assets, schema preparation,
|
||||
execution, retry/repair, and backend admission calls remain supported. Upgrade
|
||||
the module and checksums, update attribution and affected pinned integration
|
||||
references, and reuse Audita's offline adapter/runtime and subprocess tests.
|
||||
Preserve its selected-profile completeness checks, direct backend credentials,
|
||||
capacity sharing, schema/domain validation, partial success, and redaction.
|
||||
No prompt rewrite, profile conversion, or new validation gate is needed.
|
||||
|
||||
Optional adoption opportunities are:
|
||||
|
||||
- **Definition discovery:** Use listing APIs for operator discovery or better
|
||||
unknown-profile diagnostics. Keep returned membership separate from readiness
|
||||
to execute. Define the user surface before adding CLI commands; coordinate
|
||||
shared inspection syntax with any separately selected CommandKit adoption.
|
||||
- **Prompt requirement analysis:** Use `InspectRequirements` as a development
|
||||
diagnostic for embedded or operator-overridden prompts. Partial discovery is
|
||||
useful evidence, not proof of a broken prompt. Do not turn incomplete analysis
|
||||
into a startup prohibition or treat complete discovery as execution validation.
|
||||
Existing `InspectPrompt`, preparation, schemas, and domain checks retain their
|
||||
different roles. This API is unrelated to guided response recovery.
|
||||
- **Engine configuration comparison:** Compare two successful engines through
|
||||
their captured configuration inspections. A future Audita comparison feature
|
||||
should distinguish application settings from the PromptKit scope; engine
|
||||
inspection alone does not represent every application setting or execution
|
||||
effect. An empty diff does not prove identical behavior: referenced file
|
||||
contents, resolved credentials, preparation, and request overrides are outside
|
||||
the comparison. Ordinary public values may still be sensitive application data.
|
||||
|
||||
These APIs are useful foundations, but exposing them is additional product work,
|
||||
not necessary to obtain the dependency updates and efficiency improvements.
|
||||
|
||||
## Common Adoption Work and Verification
|
||||
|
||||
Update `go.mod` and `go.sum` together, retaining the registered ReleaseKit tool.
|
||||
The reviewed module graphs retain existing catalog versions, YAML dependency,
|
||||
and other selected dependency versions; the disposable tidy changed only the
|
||||
three direct versions in `go.mod`.
|
||||
|
||||
Update the three entries in [attribution](../oss/attribution.md) to the exact
|
||||
reviewed commits under the [OSS policy](../policy/oss.md). Their root `COPYRIGHT`
|
||||
and `LICENSE` files are unchanged relative to Audita's current selected versions;
|
||||
retain existing LGPL/GPL texts. Check actual resulting dependency selection
|
||||
before finalizing notices. Audita's application grant remains unchanged.
|
||||
|
||||
Recommend one bounded dependency-and-documentation update, with the small CI
|
||||
prepared-mode adjustment if selected. Do not introduce compatibility shims or
|
||||
implement new comparison/discovery commands merely to exercise optional APIs.
|
||||
Any selected user-facing feature should get its own defined scope and roadmap.
|
||||
|
||||
The review used a temporary archive of Audita's baseline, selected the actual
|
||||
released modules with `go get`, and ran `go mod tidy`. On Go 1.26.8 Linux amd64:
|
||||
|
||||
- The complete Audita suite passed with `GOWORK=off`, `GOTOOLCHAIN=local`,
|
||||
`GOPROXY=off`, and `GOSUMDB=off` after dependency preparation.
|
||||
- Both Linux targets built, and the native executable's version command ran.
|
||||
- The ReleaseKit v0.4.1 CLI built and displayed `ci-deliver` help.
|
||||
- Local, inheritance, service, and service-testing-overlay configuration examples
|
||||
validated with a synthetic credential and no inference calls.
|
||||
|
||||
This evidence supports compatibility; it does not certify real source
|
||||
publication, version injection through the new release builder, hosted delivery,
|
||||
performance gains, or operator-facing optional features. Actual implementation
|
||||
should validate its final changed candidate and selected CI behavior. Live
|
||||
delivery remains separate from release completion under the existing policy.
|
||||
|
||||
## Open Decisions
|
||||
|
||||
No decision blocks the basic dependency upgrade. Whether to expose configuration
|
||||
comparison, definition listings, or requirement diagnostics remains optional.
|
||||
Recommend upgrading first and designing the chosen operator features separately:
|
||||
the current API additions are independently useful, and a dependency refresh
|
||||
need not define a new CLI. A viable alternative is one combined feature effort
|
||||
that upgrades dependencies and adds selected inspection commands; that can reduce
|
||||
repeat integration work, but requires decisions about selection syntax, report
|
||||
scope, disclosure, and command ownership before implementation.
|
||||
Reference in New Issue
Block a user