15 KiB
Library Updates: ConfigKit, ReleaseKit, and PromptKit
Reviewed: 2026-10-11. Status: Dependency upgrades complete. Optional inspection APIs remain unused until a concrete application need arises.
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.
The local library checkouts were clean and matched the released source commits;
the remote annotated tags were checked against their peeled commits.
| Library | Reviewed baseline import | Adopted 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: 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 semanticPath, left/rightValueSnapshotvalues, andHiddenChanged. 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, v0.7.0 notes, v0.7.1 notes, and comparison guidance.
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 --preparedfor 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.VersionbecomesTag;PrepareBuildDependenciestakesDependencyPreparationRequest; 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, v0.4.1 notes, and current delivery contract.
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 and launcher
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. Recommend adding
--prepared to .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.InspectRequirementsfor 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.ListProfilesandEngine.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, v0.14.0 notes, and consumer inspection guidance.
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
InspectRequirementsas 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. ExistingInspectPrompt, 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 to the exact
reviewed commits under the OSS policy. 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, andGOSUMDB=offafter dependency preparation. - Both Linux targets built, and the native executable's version command ran.
- The ReleaseKit v0.4.1 CLI built and displayed
ci-deliverhelp. - 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.
Selected Scope and Completion Record
The user selected a simple version upgrade, deferring inspection API exposure
until a concrete need arises. ConfigKit v0.7.1, ReleaseKit v0.4.1, and PromptKit
v0.14.0 are adopted together. The dependency/checksum changes retain Go 1.26.0,
the existing catalogs, and the current application APIs and configuration format.
Attribution and canonical upstream references now identify the selected releases.
CI delivery uses --prepared, with the runbook and existing workflow test updated.
Implementation validation on Go 1.26.8 Linux amd64 passed:
- The complete offline
go test -count=1 ./...suite. - The actual module-selected ReleaseKit builder for Linux amd64 and arm64, using
the disposable build identifier
v0.0.0; its native injected-version check passed and producedaudita v0.0.0. - Local, inheritance, service, and service-testing-overlay configuration examples, using a synthetic service credential.
- Selected source revisions, unchanged upstream grants/license texts, and updated upstream file-link destinations.
Build artifacts remained outside the repository. No source tag, hosted delivery, or inference call was performed. Live CI delivery remains unobserved and separate from this completed upgrade and source-release completion.