Plan the Audita adoption sprint

This commit is contained in:
2026-11-09 16:03:16 +00:00
parent 4920393204
commit 0c7622375f
6 changed files with 689 additions and 311 deletions

View File

@@ -2,8 +2,9 @@
**Updated:** 2026-11-09
**Status:** Initial outline. The [master roadmap](library-adoption.md) owns the
agreed adoption policy, reviewed versions, shared sequencing, and completion.
**Status:** Target decisions resolved; implementation pending. The
[master roadmap](library-adoption.md) owns shared policy and dependency selection;
the [implementation plan](implementation.md) owns sequencing.
## Baseline and Target
@@ -92,69 +93,29 @@ native absent-main lifecycle instead of manufacturing a placeholder file or
source record. Explicit-file errors and failures loading a selected discovered
file remain terminal.
### Migration Work
### Target Boundaries
1. Move imports to `go.maximumdirect.net/configkit` with the coordinated
PromptKit cutover. Raise the toolchain as specified by the master roadmap.
Replace `Resolution.Record` uses with the appropriate dedicated recording
method; review affected metadata and diagnostics APIs, not only compilation.
Relevant renamed concepts include `EntryInfo`, `Sensitive`, `LayerMain`,
version evidence, and destination fallback. Typed `Secret` and its field tag
retain their spelling.
2. Adopt the native lifecycle: source composition and inheritance, typed decoding,
explicit CLI assignments, then application resolution and validation. CLI
assignments do not repair earlier decoding failures, alter inheritance
relationships, or propagate parent edits through already resolved children.
Update the current loading-order explanation and realistic integration tests.
3. Migrate genuine source-root control blocks to `config:` where present.
Implement the version-3 application schema and hard cutover above. Distinguish
application schema versions from source version evidence; do not impose
headers on every fragment merely because the API supports them.
4. Use identified collections where records have meaningful identity. ConfigKit
upsert replaces matching records in full; inspection follows registered
identities through movement, while list diffs remain atomic. Preserve ordinary
ordered/repeated pipeline stages and explicit empty-pipeline semantics:
these express Audita domain behavior, so uniqueness/upsert is inappropriate.
5. Integrate native source discovery and standard inspection instead of retaining
equivalent private infrastructure. Adopt source diagnostics, explanation,
history, normalization, and safe effective output through ckconfig. Account
for the provenance label changing from `base` to `main`.
6. Apply the resolved [PromptKit ownership decision](promptkit.md#backend-and-credential-ownership--resolved):
remove Audita's separate backend mapping and LLM credential references from
its application schema. Native PromptKit resources own those settings and
their resolution. Coordinate the hard cutover and examples here, using the
resolved discovery and import policy above and the
[automatic PromptKit source contract](promptkit.md#automatic-prompt-sources--resolved).
7. Account for the [root-default and stage-override model](glossary-stages.md#root-defaults-and-stage-overrides--resolved)
in version-3 schema design. Implement it during the glossary feature stage
after library adoption. Each stage resolves independently with explicit-value
presence and source provenance, and its module and validators receive consistent
effective settings. Apply its [selected scope and fallback rules](glossary-stages.md#configuration-scope--resolved)
and [compound-value and clearing rules](glossary-stages.md#compound-values-and-explicit-clearing--resolved),
together with its [CLI precedence and native-support boundary](glossary-stages.md#cli-overrides-and-stage-precedence--resolved).
Use its [separate glossary and protection selections](glossary-stages.md#glossary-selection-and-protected-vocabulary--resolved),
including root protection defaulting through recorded application resolution.
Adopt its [glossary configuration ownership boundary](glossary-stages.md#glossary-configuration-ownership--resolved):
glossary assets use native loading, composition, inheritance, collection
identity, and typed decoding before handoff. Audita derives consumer-specific
runtime views from that result and removes its separate glossary YAML loader.
Use its [named collections and recursive import placement](glossary-stages.md#named-collections-and-recursive-imports--resolved),
retaining native discovery, source context, and tier semantics.
Supply its [optional default glossary sources](glossary-stages.md#default-sources-and-explicit-configuration--resolved)
in one underlay, with higher-priority explicit main configuration.
Register its [collection-scoped entry IDs](glossary-stages.md#entry-identity--resolved)
through native sequence identity registration. Apply its
[extensible entry content contract](glossary-stages.md#entry-content-fields--resolved)
using native typed fields and inline extension data. Honor its
[list-input and handoff contract](glossary-stages.md#list-inputs-and-configuration-handoff--resolved):
complete configuration resolution through ConfigKit before handoff; runtime
consumers treat null selections as empty without restoring defaults. Follow its
[Audita preflight boundary](glossary-stages.md#empty-collections-and-audita-preflight--resolved):
permit empty collection configuration and check glossary-stage readiness in
Audita after handoff, before execution.
Apply its [optional stage identity and attribution contract](glossary-stages.md#stage-identity-and-attribution--resolved)
and complete its required durable decision record. This application scope model
does not change native source composition or sibling-inheritance semantics.
The application uses the `go.maximumdirect.net/configkit` module and native
recorded resolution, discovery, source diagnostics, and safe effective output.
Source composition and inheritance precede typed decoding and explicit CLI
assignment; application resolution and validation follow. CLI assignments do
not repair earlier decoding failures, change inheritance relationships, or
propagate parent edits through resolved children. Native source provenance uses
`main` in place of `base`. Genuine source-root controls use `config:`.
PromptKit [owns backend and credential resources](promptkit.md#backend-and-credential-ownership--resolved).
Audita's v3 schema has no separate backend or LLM credential registry. Native
[automatic resource sources](promptkit.md#automatic-prompt-sources--resolved)
remain independent of main application-file discovery.
The v3 schema includes the glossary roadmap's [scope and inheritance model](glossary-stages.md#configuration-scope--resolved),
[typed handoff](glossary-stages.md#list-inputs-and-configuration-handoff--resolved),
and [optional stage identity](glossary-stages.md#stage-identity-and-attribution--resolved).
Glossary definitions use native composition, [default underlay sources](glossary-stages.md#default-sources-and-explicit-configuration--resolved),
and [collection-scoped identity](glossary-stages.md#entry-identity--resolved).
Pipeline stages remain an ordinary ordered list, including repetitions and
explicit empty-pipeline behavior. The application supplies domain resolution
rules within the native lifecycle, with no second runtime defaulting pass.
## Documentation and Acceptance