229 lines
14 KiB
Markdown
229 lines
14 KiB
Markdown
# PromptKit Adoption Outline
|
|
|
|
**Updated:** 2026-11-07
|
|
|
|
**Status:** Initial outline. Follow the [master roadmap](library-adoption.md)
|
|
for shared adoption principles, dependency identities, and sequencing.
|
|
|
|
## Baseline and Target
|
|
|
|
Audita currently uses PromptKit v0.14.0. Its
|
|
[LLM runtime](../internal/llm-runtime.md) uses a shared engine, application-owned
|
|
backend overrides, curated profile inspection, and prepared execution.
|
|
|
|
Adopt PromptKit v0.20.0 through its native configuration and execution APIs.
|
|
Retain the built-in OpenRouter backend and bundled profiles. They must be usable
|
|
through the normal selection and credential mechanisms, not merely visible in
|
|
an inventory while Audita rejects them for lacking a duplicate registration.
|
|
Expose native resource and configuration inspection through the full standard
|
|
ckprompt surface described in the [CommandKit outline](commandkit.md).
|
|
|
|
PromptKit owns resources, composition, provider settings and credentials,
|
|
preparation, transport, structural repair, and backend admission. Audita owns
|
|
proposal/validation role selection, transcript processing, domain decisions,
|
|
response contracts, and truthful partial-success reporting. Remove the existing
|
|
application-only endpoint and credential restrictions as described below.
|
|
|
|
Use the pinned [migration guide](https://forge.maximumdirect.net/base-layer/promptkit/src/commit/8ff9aa3efdc9f16b9d2729e0a29ea083eb3c3eaf/docs/consumers/configuration-migration.md),
|
|
[format reference](https://forge.maximumdirect.net/base-layer/promptkit/src/commit/8ff9aa3efdc9f16b9d2729e0a29ea083eb3c3eaf/docs/formats.md),
|
|
and [v0.20 release notes](https://forge.maximumdirect.net/base-layer/promptkit/src/commit/8ff9aa3efdc9f16b9d2729e0a29ea083eb3c3eaf/docs/releases/v0.20.0.md).
|
|
The bundle is default-on; older migration prose about catalog removal does not
|
|
mean the current release has no bundled resources. It does not select an implicit
|
|
execution profile or make provider calls during construction.
|
|
|
|
## Agreed Direction and Migration Work
|
|
|
|
### Backend Concurrency Ownership — Resolved
|
|
|
|
Adopt PromptKit's native per-backend concurrency behavior, including backend
|
|
defaults and supported configuration and CLI overrides. The purpose is to keep
|
|
requests within the concurrency a backend can accommodate; no separate Audita
|
|
domain requirement has been identified for an additional limit.
|
|
|
|
Remove Audita-owned concurrency settings, default injection, validation, and
|
|
enforcement wherever they duplicate or override that native behavior. Do not
|
|
retain a second limiter or impose an Audita-specific finite-cap requirement on
|
|
otherwise valid PromptKit configuration. Use the shared PromptKit engine so
|
|
proposal and validation work for the same backend share its admission control.
|
|
Audita still owns cancellation and deterministic processing around model calls.
|
|
|
|
Verify the exact upstream override APIs while wiring the adopted configuration
|
|
and CLI integrations. Update the architecture policy's finite-admission wording,
|
|
runtime documentation, examples, and tests with implementation. Remove superseded
|
|
behavior directly in the major release, with hard-cutover guidance.
|
|
|
|
### Backend and Credential Ownership — Resolved
|
|
|
|
Native PromptKit backend/profile resources are authoritative for endpoints,
|
|
provider settings, and credential selection. No domain-specific requirement has
|
|
been identified for a separate Audita ownership policy.
|
|
|
|
- Remove Audita's separate `backends` mapping and generated backend override
|
|
layer. Remove duplicate registration requirements and checks that force profile
|
|
endpoints to match an Audita-owned backend endpoint. Native selection and
|
|
validation govern bundled and operator-defined resources.
|
|
- Use PromptKit's native credential sources and precedence. Remove Audita's
|
|
LLM-specific credential references, automatic direct-key injection, and
|
|
rejection of profile-level environment lookups. Backend/profile documents
|
|
contain environment-variable names, not credential values; operators may use
|
|
the bundled OpenRouter lookup or configure their own names.
|
|
- Follow native credential availability timing. Loading and resource inspection
|
|
must not require credentials for every configured backend. Preparation and
|
|
execution enforce the selected request's native required/optional semantics:
|
|
missing optional credentials permit unauthenticated requests. Do not add an
|
|
eager all-backend credential check or silently strengthen those semantics.
|
|
|
|
Audita retains role/profile selection, operation budgets, domain request
|
|
construction, response contracts, and safe handling of its reports and debug artifacts. Native
|
|
configuration redaction does not replace redaction at Audita's artifact boundary.
|
|
Keep preparing and executing the same captured request while retiring target
|
|
checks whose purpose was enforcing the removed application backend registry.
|
|
|
|
Remove superseded fields, code, and tests in the major-release cutover and update
|
|
the affected policies and current contracts with implementation. The ConfigKit
|
|
outline owns file discovery and import policy; those choices govern how native
|
|
resources are supplied, not who owns their semantics.
|
|
|
|
### Bundled Prompts and Operator Replacements — Resolved
|
|
|
|
Ship Audita's production default prompt definitions in `embed.FS`, exposed as
|
|
`io/fs.FS`. Load them through PromptKit's filesystem inputs into a ConfigKit
|
|
underlay, with operator sources at higher priority. Using the shipped prompts
|
|
must not require a separate external prompt installation.
|
|
|
|
Place all Audita-owned default prompts in the native `audita` collection
|
|
namespace. Keep local IDs such as `modules.glossary.proposal`; callers use the
|
|
qualified runtime ID `audita/modules.glossary.proposal`. Update registry entries,
|
|
call sites, references, examples, and diagnostics accordingly. Mounting a source
|
|
does not rewrite references, so qualified references must be explicit.
|
|
|
|
Operators may replace individual prompts or supply a complete replacement set
|
|
by defining the same collection and local IDs in higher-priority sources.
|
|
Unreplaced prompts continue to come from the underlay. Follow native whole-record
|
|
replacement semantics for matching IDs and document the required complete prompt
|
|
definitions. The namespace identifies Audita's prompts without making them
|
|
immutable or requiring a separate development mode.
|
|
|
|
The development workflow is edit external definitions and rerun Audita using the
|
|
same binary. A newly constructed runtime captures the changed definitions and
|
|
message files; live reload within an active run is not required. The same
|
|
mechanism supports production customization. Standard inspection, provenance,
|
|
and request preview must make effective prompts and their origins understandable.
|
|
Audita's response schemas and domain validation continue to apply.
|
|
|
|
External source selection follows the [ConfigKit discovery/import plan](configkit.md).
|
|
This workflow is required PromptKit adoption scope and should use
|
|
native composition rather than a separate prompt loader or override system.
|
|
|
|
### Profile Inspection and Summary — Resolved
|
|
|
|
Retire `config print-effective --view profiles` and its Audita-owned summary
|
|
code. Use application configuration inspection to show proposal/validation
|
|
profile selections, standard PromptKit resource inspection for profile/backend/
|
|
prompt definitions, and request preview for resolved execution settings and
|
|
rendered messages. These views have distinct meanings and must be presented as
|
|
such.
|
|
|
|
Do not add a replacement custom role summary at this stage. Native interfaces
|
|
cover the selected needs and reduce maintenance without a parallel target
|
|
resolver. Include the retired view and its standard replacements in the
|
|
hard-cutover guidance. The [CommandKit outline](commandkit.md) owns the operator
|
|
surface and request-preview integration work.
|
|
|
|
### Migration Work
|
|
|
|
1. Move to `go.maximumdirect.net/promptkit` together with ConfigKit's new types.
|
|
Remove the old external catalog dependencies when no longer incorporated;
|
|
retain PromptKit's built-in catalog rather than disabling it.
|
|
2. Convert root and collection backends, profiles, and prompts to identified lists
|
|
with explicit `id` fields. Use sibling `extends: {id: parent}` and complete
|
|
same-ID replacement records. Typed source builders use ordered slices.
|
|
Preserve provider settings deliberately: partial same-ID replacements no
|
|
longer merge fields. Use exact native collection references where collections
|
|
are selected; mounting does not rewrite stored references.
|
|
3. Convert the seven embedded prompts into the `audita` collection and update
|
|
maintained operator examples/fixtures for the resolved replacement workflow.
|
|
Remove prompt version selectors and descriptive `PromptVersion` metadata from
|
|
requests, registries, inspection, and diagnostics. Response-schema versions
|
|
are separate and need not change. Keep domain instructions and per-call schemas;
|
|
this adoption is not a prompt-quality rewrite. Shared instruction variables
|
|
remain available to templates, while native operator overrides control their
|
|
inclusion. Domain validation remains enforced after model responses.
|
|
4. Adapt resource inspection to optional profile fields and separate backend
|
|
inspection. These describe resources, not completed requests. Use real
|
|
`PrepareExecution` details and `RunPrepared` for execution of the same captured
|
|
request. Remove the curated profile view and its supporting projection code;
|
|
do not duplicate PromptKit's full resolver or construct synthetic requests
|
|
merely to reproduce that summary. Inspect bundled and unselected partial
|
|
resources without requiring them to be runnable.
|
|
5. Implement the resolved backend and credential ownership decision above.
|
|
Replace application backend/credential configuration with native resources
|
|
and document the hard cutover. Preserve secret-safe diagnostics using the
|
|
library's public boundaries and Audita's domain artifact redaction; evaluate
|
|
actual gaps with synthetic keys.
|
|
6. Review presence semantics field by field. Null endpoint, credential-source,
|
|
and whole provider map now allow backend defaults; explicit empty strings
|
|
clear endpoint/credential sources. Null does not suppress the entire backend
|
|
provider map. Sampling fields have distinct semantics. Avoid blanket null or
|
|
zero conversion and document intentional request changes.
|
|
7. Update captured-source accounting for list indexes and collection prefixes,
|
|
including inherited/moved content-file origins. Preserve output-collision
|
|
protection for consumed host documents and effective message files. Array
|
|
positions are addresses, not durable resource identities.
|
|
8. Keep self-contained embedded response schemas. The new schema rule does not
|
|
require a bundler for Audita's current schemas. Check custom artifact-reader
|
|
ownership only where such a reader is actually used. Preserve native retries,
|
|
structural repair, cancellation, deadlines, and shared engine admission while
|
|
retaining Audita's domain reconciliation and partial-success outcomes.
|
|
|
|
Update [configuration](../config.md), [LLM integration](../integrations/openai-compatible-llm.md),
|
|
[runtime internals](../internal/llm-runtime.md), [prompt guidance](../internal/prompts.md),
|
|
operator examples, diagnostics metadata documentation, and attribution with the
|
|
implementation. Standard inspection replaces curated-only disclosure; prompts
|
|
and provider settings may appear where the library's normal inspection exposes
|
|
them, with native redaction. Do not accidentally promise old prompt hashes.
|
|
|
|
## Acceptance and Upstream Requests
|
|
|
|
Verify native bundle inventory and selection, configuration/resource/prepared
|
|
view distinctions, inheritance and replacement, credential precedence, optional
|
|
fields, source-relative messages and collisions, and captured configuration.
|
|
Use controlled providers to verify actual targets, domain schemas, shared
|
|
admission, retry/repair budgets, cancellation, and partial success. Standard
|
|
inspection must work without model calls; library presence alone does not prove
|
|
successful Audita integration.
|
|
|
|
Verify backend defaults and explicit concurrency overrides through the assembled
|
|
application, including shared admission across proposal and validation roles.
|
|
Check that Audita no longer injects an additional limit or rejects native settings
|
|
under its former finite-cap policy. Keep integration coverage for Audita's wiring;
|
|
remove tests that only preserve retired local concurrency behavior.
|
|
|
|
Verify native bundled and custom backend selection without duplicate Audita
|
|
registration, supported profile endpoint and credential overrides, and inspection
|
|
without credential availability. Use controlled requests to cover required-key
|
|
failures and optional unauthenticated execution under native semantics. Check
|
|
that no application override layer or direct-key injection defeats native
|
|
precedence, and that synthetic keys stay out of Audita diagnostics and artifacts.
|
|
|
|
Verify the embedded `audita` prompts work without external prompt definitions.
|
|
Exercise both individual-prompt and complete-set replacements using native
|
|
collection IDs, checking that unreplaced defaults remain available. Demonstrate
|
|
that editing external prompt/message files changes a newly constructed runtime's
|
|
prepared request without rebuilding the binary, while the existing runtime keeps
|
|
its captured inputs. Check qualified-ID selection, effective prompt inspection,
|
|
source provenance, and continued response-schema and domain validation with
|
|
controlled responses. Include a maintained edit-and-rerun example for developers.
|
|
|
|
Verify that role selections are visible in application configuration inspection,
|
|
resources through standard inspection, and completed request settings through
|
|
preview. Remove tests and examples that only preserve the retired curated view;
|
|
cover its replacement workflows through the assembled CLI.
|
|
|
|
No upstream request is yet selected. PromptKit is mature but pre-v1: significant
|
|
blockers or awkward public boundaries can justify focused requests. Submit the
|
|
minimal reproducer, desired outcome, and domain justification before building
|
|
substantial local machinery. A review probe demonstrated distinct base/derived
|
|
backend records preserving provider fields; that is an available native technique,
|
|
not a decision to retain Audita's old backend ownership model.
|