Plan shared core report output before integration additions

This commit is contained in:
2026-11-06 19:34:26 +00:00
parent b6a8f1f2cc
commit 756954f056
2 changed files with 214 additions and 70 deletions

View File

@@ -36,9 +36,10 @@ The published ckprompt v0.2.0 retains its earlier dependencies; see the
### PromptKit v0.19.0 adoption ### PromptKit v0.19.0 adoption
The [PromptKit v0.19.0 roadmap](promptkit-v0.19.0.md) owns the proposed adoption, The [PromptKit v0.19.0 roadmap](promptkit-v0.19.0.md) owns the proposed adoption,
operator CLI additions for PromptKit and ConfigKit, open decisions, the agreed shared core report output prerequisite, operator CLI additions for
and completion checklist. Scope is agreed in principle and remains subject to PromptKit and ConfigKit, open decisions, and completion checklist. Scope is
roadmap review. Implementation has not started. Use released upstream contracts agreed in principle and remains subject to roadmap review. Implementation has
not started. Use released upstream contracts
only; do not inspect or monitor unreleased work in anticipation of adoption. only; do not inspect or monitor unreleased work in anticipation of adoption.
## Future capability targets ## Future capability targets
@@ -78,8 +79,8 @@ adoption identifiers OD-3 through OD-6; the new roadmap has its own decision num
belongs in `ckconfig`, with PromptKit exposing native evidence through its belongs in `ckconfig`, with PromptKit exposing native evidence through its
configuration scope. The configuration scope. The
[initial report implementation approach](promptkit-v0.19.0.md#initial-report-implementation-approach) [initial report implementation approach](promptkit-v0.19.0.md#initial-report-implementation-approach)
favors direct Go-to-YAML serialization, thin projections, and shared output uses the shared core reporting prerequisite, direct serialization, and thin
helpers. Further presentation refinements should follow practical feedback. projections. Further presentation refinements should follow practical feedback.
Transient acquisition overrides are included as an opt-in loader capability in Transient acquisition overrides are included as an opt-in loader capability in
[roadmap OD-11](promptkit-v0.19.0.md#od-11-transient-configuration-overrides). [roadmap OD-11](promptkit-v0.19.0.md#od-11-transient-configuration-overrides).
@@ -102,10 +103,10 @@ public reusable `ckprompt` collections for standard and application-owned CLI
commands, composed through existing core bindings. commands, composed through existing core bindings.
[Roadmap OD-2](promptkit-v0.19.0.md#od-2-request-controls-and-provider-parameter-grammar) [Roadmap OD-2](promptkit-v0.19.0.md#od-2-request-controls-and-provider-parameter-grammar)
records the agreed canonical naming, scoped convenience aliases, integration records the agreed canonical naming, scoped convenience aliases, integration
installation collection, and selected text/file input forms; no core extension installation collection, and selected text/file input forms; those flag and alias
is required. Output-contract overrides and appended-message flags are deferred features need no core extension. Output-contract overrides and appended-message
below. These are CLI features; general-purpose helpers for application-internal flags are deferred below. These are CLI features; general-purpose helpers for
PromptKit use are outside CommandKit's ownership boundary. application-internal PromptKit use are outside CommandKit's ownership boundary.
- **Focused backend inspection.** Defer a standard backend detail command - **Focused backend inspection.** Defer a standard backend detail command
until a released PromptKit version provides a suitable public backend until a released PromptKit version provides a suitable public backend
@@ -159,6 +160,14 @@ steps. No delivery date or final API is selected here.
### Reporting extensions ### Reporting extensions
The [shared core report output prerequisite](promptkit-v0.19.0.md#shared-core-report-output-prerequisite)
is now part of the working adoption roadmap. It records the agreed command
output declarations, format-independent reporting operation, and centralized
representation rules, initially targeting YAML. Human-oriented/native rendering
and format availability remain open discussions there. Additional renderers such
as JSON, XML, and Markdown remain future work; planning for them does not select
their mappings, command coverage, or delivery dates.
Error-conversion helpers such as `WarnError` remain deferred pending demonstrated Error-conversion helpers such as `WarnError` remain deferred pending demonstrated
value; applications can already use `report.Warn(err.Error())`. Terminal redraw value; applications can already use `report.Warn(err.Error())`. Terminal redraw
and progress-bar presentation were outside the completed reporting scope and and progress-bar presentation were outside the completed reporting scope and
@@ -183,7 +192,8 @@ candidate checks do not become general prohibitions on development workspaces.
These capabilities remain outside the delivered scope and require a concrete These capabilities remain outside the delivered scope and require a concrete
operator or consumer need and an appropriate ownership/behavior decision: operator or consumer need and an appropriate ownership/behavior decision:
- JSON reports and output-file management or reloadable export. - Additional report renderers as described under [reporting extensions](#reporting-extensions),
and output-file management or reloadable export.
- Shell completion extensions, including alias discovery described above and - Shell completion extensions, including alias discovery described above and
dynamic discovery of configured or remote values. dynamic discovery of configured or remote values.
- Persistent configuration mutation. Transient CLI overrides are selected under - Persistent configuration mutation. Transient CLI overrides are selected under

View File

@@ -1,4 +1,4 @@
# PromptKit v0.19.0 adoption and ConfigKit operator CLI # Shared report output, PromptKit v0.19.0 adoption, and ConfigKit operator CLI
Status: proposed roadmap for review. Scope is agreed in principle; implementation Status: proposed roadmap for review. Scope is agreed in principle; implementation
has not started. Command spellings, report designs, and API changes below are has not started. Command spellings, report designs, and API changes below are
@@ -10,7 +10,11 @@ will guide later refinements rather than requiring exhaustive layout design now.
Adopt released PromptKit v0.19.0 and expose useful operator tasks through Adopt released PromptKit v0.19.0 and expose useful operator tasks through
standard CommandKit commands, flags, and reports. This roadmap covers CLI standard CommandKit commands, flags, and reports. This roadmap covers CLI
exposure, including ConfigKit v1.1.0 operator features in `ckconfig`. It does not exposure, including ConfigKit v1.1.0 operator features in `ckconfig`, with a new
public core reporting capability as a prerequisite to the downstream work.
Core standardizes report format selection, representation, rendering, and
delivery for core commands, integrations, and application-owned commands.
Applications and integrations continue to choose report content. This does not
turn `ckprompt` into a convenience library for application-internal PromptKit turn `ckprompt` into a convenience library for application-internal PromptKit
operations. Applications continue to own engine construction, domain inputs, operations. Applications continue to own engine construction, domain inputs,
credentials, execution, and their executable lifecycle. credentials, execution, and their executable lifecycle.
@@ -29,9 +33,9 @@ The completed v0.18.0 adoption is not reopened.
| Component | Current baseline | Target | | Component | Current baseline | Target |
| --- | --- | --- | | --- | --- | --- |
| Core | `go.maximumdirect.net/commandkit`; Go 1.26.0 minimum | No core change needed for flag collections or scoped aliases; assess a small shared YAML output helper during implementation. | | Core | `go.maximumdirect.net/commandkit`; Go 1.26.0 minimum | Public format-independent report output API, initially targeting YAML, as a prerequisite. Flag collections and scoped aliases still use existing core APIs. |
| `ckconfig` | ConfigKit v1.1.0; Go 1.27.0; core v0.3.0 | Shared CLI inspection extensions and a new appropriate module release. | | `ckconfig` | ConfigKit v1.1.0; Go 1.27.0; core v0.3.0 | Adopt the new core reporting API, shared CLI inspection extensions, and an appropriate module release. |
| `ckprompt` | PromptKit v0.18.0; ConfigKit v1.1.0; ckconfig/core v0.3.0; Go 1.27.0 | PromptKit v0.19.0 and the ckconfig version delivering the shared work. | | `ckprompt` | PromptKit v0.18.0; ConfigKit v1.1.0; ckconfig/core v0.3.0; Go 1.27.0 | Adopt the new core reporting API, PromptKit v0.19.0, and the ckconfig version delivering the shared work. |
| Candidate | [ckprompt v0.3.0](../../integrations/ckprompt/docs/releases/v0.3.0.md), recorded as unpublished | Update the unpublished candidate after checking its status during implementation. | | Candidate | [ckprompt v0.3.0](../../integrations/ckprompt/docs/releases/v0.3.0.md), recorded as unpublished | Update the unpublished candidate after checking its status during implementation. |
| Local workspace | Core and both integrations, Go 1.27.0 | Validate local composition and independent modules separately. | | Local workspace | Core and both integrations, Go 1.27.0 | Validate local composition and independent modules separately. |
@@ -82,6 +86,10 @@ they do not replace already-delivered explanation or smoke functionality.
## Targeted end state ## Targeted end state
First establish the [shared core report output capability](#shared-core-report-output-prerequisite).
The integration work below uses that public API instead of adding independent
format-selection and encoding machinery in each module.
The original adoption tasks remain included: The original adoption tasks remain included:
1. Update the dependency, checksums, attribution, and unpublished candidate note. 1. Update the dependency, checksums, attribution, and unpublished candidate note.
@@ -180,9 +188,9 @@ Use the existing core `CommandSpec[I].Flags`, typed flag constructors, and
`Supplied[T]`. A generic collection factory can accept destination accessors `Supplied[T]`. A generic collection factory can accept destination accessors
and return ordinary `[]commandkit.Flag[I]`. Direct binding is sufficient for and return ordinary `[]commandkit.Flag[I]`. Direct binding is sufficient for
ordinary use; existing [CaptureFlags and FlagValues.ApplyTo](../../flag_values.go) ordinary use; existing [CaptureFlags and FlagValues.ApplyTo](../../flag_values.go)
support deferred application or multiple destinations where needed. No core support deferred application or multiple destinations where needed. These flag
change or new core collection abstraction is currently required. Exact exported collections require no core change or new core collection abstraction. Exact
names and accessor signatures remain implementation design choices. exported names and accessor signatures remain implementation design choices.
Keep execution-target overrides and the request-level transient retry field Keep execution-target overrides and the request-level transient retry field
distinct even when one convenient collection includes both. Preserve omission distinct even when one convenient collection includes both. Preserve omission
@@ -297,22 +305,109 @@ PromptKit execution override's complete provider-map replacement. Do not reuse
one grammar implementation in a way that erases that distinction. Source-load one grammar implementation in a way that erases that distinction. Source-load
errors remain errors even if an override would replace the affected value. errors remain errors even if an override would replace the affected value.
## Shared core report output prerequisite
**Agreed scope:** add a first-class public reporting capability to CommandKit
core before implementing the downstream integration additions. An application
or integration gathers report data and hands it to core; core selects the
default or operator-requested format, renders the report, and delivers it.
Centralize formatting and translation machinery to the greatest practical
extent so commands share output conventions and avoid repeated infrastructure.
Core remains independent of ConfigKit and PromptKit types and domain semantics.
YAML is the initial structured output target. Design the public entry points
for additional formats, such as JSON, XML, and Markdown, without requiring
handlers to change their reporting call. This selects extensibility now, not
implementation of those additional renderers in this adoption. It supersedes
the earlier suggestion to assess only an optional YAML writer during
implementation. Keep the implementation proportionate; exact public names,
signatures, and internal representation remain design work.
### Agreed command declarations and format selection
Declare output behavior once per command, including its default format and
supported alternatives. Core uses that declaration for a standard `--format`
flag, help, input validation, and renderer selection. Omission selects the
declared default; an explicit supported value selects the requested format.
Use one format flag rather than separate `--yaml`, `--json`, or `--xml` flags.
An unsupported selection is a usage error before acquisition or other command
work. Handlers do not repeat this plumbing.
This establishes the declaration and selection mechanism. How available
renderers become supported alternatives for a particular report remains a
separate open discussion below.
### Agreed format-independent reporting operation
Provide one public operation through the invocation Reporter that accepts report
data without requiring a handler to switch on the selected format or configure
an encoder. `invocation.Reporter().Report(report)` illustrates the intended
shape only; it is not a selected signature or an existing API.
Provide a corresponding writer-based API for rendering outside an invocation.
Both entry points share the rendering implementation. Invocation reporting uses
the existing Reporter lifecycle for visibility, destinations, delivery, and
presentation failures, preserving domain outcomes and causes. This extends the
existing reporting facility rather than creating a second delivery lifecycle.
### Agreed shared representation rules
Centralize representation rules as well as encoders. Define how report fields,
field names, omissions, numbers, and custom serialized values become output so
different renderers do not silently give the same report different meanings.
The objective is to prepare a report once and render that representation in
multiple formats, avoiding a separate translation tree per format.
Use Go report values with small, explicit adaptations where needed. Owned
report values follow shared naming and representation conventions; suitable
upstream values can reuse their established serialization contracts through a
shared adapter. Preserve meaningful distinctions among absent, null, false,
zero, and empty values, and avoid numeric precision loss in intermediate
conversions. Paths, durations, and other values needing a different presentation
can use thin projections. Do not assume JSON tags or custom JSON serialization
automatically have the same meaning to a YAML encoder.
Exact conventions, serialization-contract selection, and adapter APIs need to be
specified during design. A large public document model or custom reflection
framework is not selected by this decision.
### Remaining core reporting discussions
The following topics remain open and must be settled before their corresponding
API contracts are finalized:
- **Human-oriented presentation (discussion point 4).** Determine how concise
text and richer formats such as Markdown relate to automatic structured
rendering, what shared layout helpers are useful, and where custom or native
renderers fit. Generic tables, field lists, custom-renderer hooks, and a
native-document path are candidates, not accepted API requirements. Preserve
the previously agreed operator reports while deciding their implementation.
- **Format availability (discussion point 5).** Determine how core renderer
availability relates to the formats offered by each command or report,
including whether adding a renderer automatically enables it for suitable
reports or requires explicit adoption. Do not infer that every command must
support every format, or select mandatory per-report opt-in, from the agreed
declaration mechanism alone. XML mapping conventions and cross-format
limitations will need deliberate treatment when those formats are added.
These discussions do not reopen the agreed declaration mechanism, shared
reporting operation, or centralized representation rules. They also do not
silently expand the YAML-only reports already selected in this roadmap.
## Initial report implementation approach ## Initial report implementation approach
Use the accepted OD-4 through OD-6 flags and formats as a practical starting Use the accepted OD-4 through OD-6 flags and formats as a practical starting
point. Keep added code, report types, and translations proportionate. Beta point. Keep added code, report types, and translations proportionate. Beta
feedback on actual reports should guide changes; do not delay implementation feedback on actual reports should guide changes. Resolve the core discussions
for speculative layout options or build a report framework in anticipation of above, then implement the agreed extension points without delaying delivery
future formats. for exhaustive layout design or speculative additional renderers.
The repository already uses `go.yaml.in/yaml/v4` and small Go-value-to-YAML The repository already uses `go.yaml.in/yaml/v4` and small Go-value-to-YAML
writers in core and both integrations. Centralize common encoder configuration writers in core and both integrations. Consolidate suitable report paths onto
and reusable output helpers where practical. A small shared writer accepting an the new core API and share encoder configuration and representation helpers.
`io.Writer` and a Go report value is sufficient; exact placement and exported Use the capability in core, both integrations, and a maintained application-owned
API, if needed across module boundaries, are implementation choices. Keep any command example. A separately versioned output module or custom serialization
core helper independent of ConfigKit and PromptKit types. A separately versioned engine is not needed. Follow module release/dependency ordering under OD-7.
output module or custom serialization engine is not needed. Account for module
release/dependency ordering under OD-7 if a shared public core helper is added.
Prefer directly encoding suitable native inspection/report values or a thin Go Prefer directly encoding suitable native inspection/report values or a thin Go
projection with serialization tags. Do not mirror a whole upstream object graph projection with serialization tags. Do not mirror a whole upstream object graph
@@ -325,12 +420,13 @@ or provide a small explicit adapter rather than inventing a reflection framework
Exceptions serve concrete report semantics: preserving absent/null/false/zero Exceptions serve concrete report semantics: preserving absent/null/false/zero
and empty collections, expressing paths and durations readably, projecting safe and empty collections, expressing paths and durations readably, projecting safe
snapshot values, and retaining native redaction. Encode report/inspection values, snapshot values, and retaining native redaction. Encode report/inspection values,
not engines, mutable runtime configuration, or request credential storage. Reuse not engines, mutable runtime configuration, or request credential storage.
native writers where their output already serves the selected report. Keep the Preserve existing native-document semantics and concise diff and validation
existing concise diff and validation presentations; the simpler YAML approach presentations. Their connection to the shared API is part of the open
applies to detailed reports and other suitable projections. human-oriented/native-rendering discussion, not a decision to rewrite them as
generic structured dumps.
Separate content projection from YAML encoding and from invocation delivery. Separate content projection from format rendering and from invocation delivery.
Use the existing Reporter and outcome lifecycle for delivery and failures. Use the existing Reporter and outcome lifecycle for delivery and failures.
Share common helpers without forcing text output through a YAML round trip or Share common helpers without forcing text output through a YAML round trip or
forcing semantically different reports into one schema. Validate representative forcing semantically different reports into one schema. Validate representative
@@ -340,23 +436,34 @@ incidental formatting detail in tests.
## Work sequence ## Work sequence
1. **Confirm remaining implementation choices.** Use the accepted flags and 1. **Confirm remaining implementation choices.** Use the accepted flags and
report formats as the MVP target. Resolve outstanding acquisition/binding report formats as the MVP target. Resolve the two remaining core reporting
grammar and flag collisions; use concrete examples to review report details discussions and specify the public API and shared representation conventions.
during implementation rather than reopening accepted scope. Resolve outstanding acquisition/binding grammar and flag collisions; use
2. **Adopt v0.19.0.** Update `integrations/ckprompt/go.mod` and `go.sum`, then concrete examples to review report details during implementation rather than
reopening accepted scope.
2. **Implement shared core report output.** Deliver the agreed command output
declarations, `--format` selection, format-independent Reporter operation,
writer-based API, and shared representation/encoding machinery, with YAML as
the initial structured target. Exercise the public API with core reporting
and an application-owned command example, and consolidate suitable existing
integration reports onto it. Cover the selected contracts and update their
canonical documentation with the implementation. Complete this prerequisite
before building the downstream additions; use the aligned workspace until
the core release is available under OD-7.
3. **Adopt v0.19.0.** Update `integrations/ckprompt/go.mod` and `go.sum`, then
[module attribution](../../integrations/ckprompt/docs/oss/attribution.md) [module attribution](../../integrations/ckprompt/docs/oss/attribution.md)
against the released notices and source commit. Update the unpublished against the released notices and source commit. Update the unpublished
candidate note and affected canonical dependency/compatibility guidance. candidate note and affected canonical dependency/compatibility guidance.
No core Go-minimum increase follows from this adoption. No core Go-minimum increase follows from this adoption.
3. **Implement request inspection and selection.** Add preview, literal-text 4. **Implement request inspection and selection.** Add preview, literal-text
input and renamed file-input flags, applicable override flags, input and renamed file-input flags, applicable override flags,
provider-parameter input, and namespace selectors. Implement provider-parameter input, and namespace selectors. Implement
public `ckprompt` execution-flag collections on existing core bindings and public `ckprompt` execution-flag collections on existing core bindings and
reuse them in the standard commands. Generate scoped convenience aliases and reuse them in the standard commands. Generate scoped convenience aliases and
provide a collection for installing the commands and routing declarations. provide a collection for installing the commands and routing declarations.
Reuse the standard suite's lifecycle and preserve existing application adapter Reuse the standard suite's lifecycle and preserve existing application adapter
seams. seams. Render suitable new reports through the shared core API.
4. **Implement shared configuration inspection.** Add discovery and metadata 5. **Implement shared configuration inspection.** Add discovery and metadata
within `config explain`, structured diagnostics via `config validate --details`, within `config explain`, structured diagnostics via `config validate --details`,
detailed diff presentation, and source evidence on failure in `ckconfig`. detailed diff presentation, and source evidence on failure in `ckconfig`.
Retain the six-command suite and wire native PromptKit facets through Retain the six-command suite and wire native PromptKit facets through
@@ -364,26 +471,45 @@ incidental formatting detail in tests.
metadata/diagnostic filters using those evidence capabilities. Extend typed metadata/diagnostic filters using those evidence capabilities. Extend typed
comparison selection and add the agreed assertion outcome. Implement explicit comparison selection and add the agreed assertion outcome. Implement explicit
override acquisition and comparison-side wiring under OD-11 as a separate override acquisition and comparison-side wiring under OD-11 as a separate
reviewable unit. Reuse and centralize output helpers under the initial report reviewable unit. Use the shared core API under the initial report
implementation approach. Keep boundary coverage with each change. implementation approach. Keep boundary coverage with each change.
5. **Update operator and consumer documentation.** The CLI reference owns 6. **Update operator and consumer documentation.** The CLI reference owns
syntax, report schemas, availability, and outcomes; GoDoc owns callback and syntax, report schemas, availability, and outcomes; GoDoc owns callback and
value contracts. Extend maintained simple/composed examples to demonstrate value contracts. Extend maintained simple/composed examples to demonstrate
the new CLI tasks using local fixtures, without adding application-internal the new CLI tasks using local fixtures, without adding application-internal
execution helpers. Record intentional compatibility effects in module notes. execution helpers. Record intentional compatibility effects in module notes.
6. **Align module dependencies and validate.** Prepare the `ckconfig` release 7. **Align module dependencies and validate.** Prepare the core release needed
needed by `ckprompt`, update the latter's dependency/checksums, and complete by both integrations and the `ckconfig` release needed by `ckprompt`. Align
the validation below. OD-7 addresses the interim development dependency. requirements/checksums and complete the validation below. OD-7 addresses
interim workspace development and dependency order.
Publication and hosted delivery remain separate actions under the Publication and hosted delivery remain separate actions under the
[release procedure](../release.md). [release procedure](../release.md).
## Validation and completion checklist ## Validation and completion checklist
Select focused boundary tests under the [testing policy](../policy/testing.md). Select focused boundary tests under the [testing policy](../policy/testing.md).
The checklist concerns adapter/CLI behavior; it does not ask CommandKit to The checklist concerns core reporting and adapter/CLI behavior; it does not ask
retest PromptKit rendering, schema, namespace, or ConfigKit resolution algorithms. CommandKit to retest PromptKit rendering, schema, namespace, or ConfigKit
resolution algorithms.
Default tests remain offline and independent of real credentials. Default tests remain offline and independent of real credentials.
- [ ] Human-oriented/native rendering and format-availability decisions are
recorded before finalizing their core API contracts. Exact public signatures
and shared representation conventions are documented with implementation.
- [ ] Command output declarations drive defaults, `--format`, help, validation,
and renderer selection. Unsupported selections produce usage failures before
acquisition, and selected formats do not leak between invocations.
- [ ] The invocation and writer-based public APIs share rendering behavior;
handlers submit report data without their own format switches or encoder
setup. Existing quiet-mode, presentation-failure, and domain-outcome behavior
is preserved through the Reporter lifecycle.
- [ ] Representative report values preserve field meanings, selected omission
rules, null/false/zero/empty distinctions, and numeric values. Explicit
upstream serialization adapters honor the selected contract rather than
accidentally applying a different encoder's tag or marshaling rules.
- [ ] Core, both integrations, and a maintained application-owned command
exercise the public reporting capability. Suitable duplicate selection and
encoding code is removed; core has no optional integration dependencies.
- [ ] Dependency, checksums, attribution commit links, and candidate notes match - [ ] Dependency, checksums, attribution commit links, and candidate notes match
the final selected module versions. the final selected module versions.
- [ ] All three compatibility changes and corrected credential wording are - [ ] All three compatibility changes and corrected credential wording are
@@ -480,8 +606,8 @@ Default tests remain offline and independent of real credentials.
configuration failure workflow with deterministic local evidence, including configuration failure workflow with deterministic local evidence, including
collection reuse by an application-owned command. collection reuse by an application-owned command.
- [ ] Suitable reports use direct Go-value serialization or thin projections, - [ ] Suitable reports use direct Go-value serialization or thin projections,
sharing YAML and common output helpers where practical. Necessary adapters sharing the core representation and rendering machinery. Necessary adapters
preserve native meaning without a generic report translation framework. preserve native meaning without duplicating a full report tree per format.
- [ ] Canonical documentation, module release notes, and roadmap links agree - [ ] Canonical documentation, module release notes, and roadmap links agree
with the implemented boundary. Open decisions are resolved or deliberately with the implemented boundary. Open decisions are resolved or deliberately
superseded before the corresponding behavior is claimed complete. superseded before the corresponding behavior is claimed complete.
@@ -512,9 +638,13 @@ Focused backend inspection remains in [future work](future.md#promptkit-inspecti
until a released upstream API supports it. Do not reconstruct backend selection until a released upstream API supports it. Do not reconstruct backend selection
from configuration to deliver it in this roadmap. General execution, prepared from configuration to deliver it in this roadmap. General execution, prepared
handle lifecycle, sessions, and observer convenience APIs remain application handle lifecycle, sessions, and observer convenience APIs remain application
responsibilities. Persistent configuration editing, new live probes, dynamic completion, responsibilities. Persistent configuration editing, new live probes, dynamic
JSON report formats, and unrelated deferred proposals are not added by this completion, and unrelated deferred proposals are not added by this roadmap.
roadmap. Transient acquisition overrides are included under OD-11. JSON, XML, and Markdown renderers remain future additions; the
[shared core API](#shared-core-report-output-prerequisite) now explicitly plans
for format extensibility. Renderer availability policy remains open, and this
roadmap does not promise those formats for every report.
Transient acquisition overrides are included under OD-11.
Output-contract override and appended-message flags are deferred under OD-2 Output-contract override and appended-message flags are deferred under OD-2
and retained in and retained in
[future work](future.md#promptkit-inspection-and-selection-extensions). [future work](future.md#promptkit-inspection-and-selection-extensions).
@@ -593,10 +723,10 @@ positional prompt ID retain that argument; this naming decision does not add a r
resource-selection, and request-input collections may remain separately resource-selection, and request-input collections may remain separately
composable. Namespace controls remain subject to OD-3. composable. Namespace controls remain subject to OD-3.
**Agreed assembly approach:** keep alias generation in `ckprompt`; no core **Agreed assembly approach:** keep alias generation in `ckprompt`; alias
upgrade is required. Define each flag-to-alias relationship once and generate assembly requires no core upgrade. Define each flag-to-alias relationship once
existing `FlagAliasFor` routing declarations from the flags selected for each and generate existing `FlagAliasFor` routing declarations from the flags selected
enabled canonical command. Do not maintain a separate hand-written matrix of for each enabled canonical command. Do not maintain a separate hand-written matrix of
all command/flag combinations. Aliases target the original flag binding rather all command/flag combinations. Aliases target the original flag binding rather
than introducing duplicate bindings. Both spellings retain core parsing, than introducing duplicate bindings. Both spellings retain core parsing,
presence, and occurrence-order behavior. presence, and occurrence-order behavior.
@@ -765,12 +895,12 @@ Keep the projection close to native report values, using the
extensive translation for cosmetic layout. Exact field names are implementation extensive translation for cosmetic layout. Exact field names are implementation
choices for the initial release and can evolve with beta feedback. choices for the initial release and can evolve with beta feedback.
Keep implementation localized to flag selection and a second report writer, Keep implementation localized to detail selection and a report projection,
with focused boundary tests, help, and examples. The existing `Scope.Compare` with focused boundary tests, help, and examples. The existing `Scope.Compare`
contract and both native adapters already return the required difference contract and both native adapters already return the required difference
records. Reuse that data and existing safe-snapshot decoding; no new comparison records. Reuse that data and existing safe-snapshot decoding; no new comparison
callback, additional load, or comparison algorithm is required. A shared YAML callback, additional load, or comparison algorithm is required. Use the shared
output helper may be used, but detailed comparison needs no domain-specific core core report output capability; detailed comparison needs no domain-specific core
API. A side-by-side terminal display is not part of this adoption. Comparison API. A side-by-side terminal display is not part of this adoption. Comparison
exit status follows OD-10. exit status follows OD-10.
@@ -828,19 +958,23 @@ during implementation and practical testing.
### OD-7: Module release and interim workspace coordination ### OD-7: Module release and interim workspace coordination
**Agreed:** complete the planned integration work together rather than splitting **Agreed:** complete the core reporting prerequisite and planned integration work
out a dependency-only PromptKit release. With no current consumers, an early together rather than splitting out a dependency-only PromptKit release. With no
compatibility release has no demonstrated benefit. Prepare a new ckconfig minor current consumers, an early compatibility release has no demonstrated benefit.
release for the shared API/CLI features, then update the still-unpublished Prepare the core release supplying the reporting API, then a new ckconfig minor
ckprompt candidate to require that released version. Confirm candidate status release for the shared API/CLI features, and update the still-unpublished
and available versions under the release procedure before choosing versions. ckprompt candidate. Both integrations must require a core version supplying the
new API, and ckprompt must require the ckconfig version supplying the shared
work. Confirm candidate status and available versions under the release
procedure before choosing versions.
Use the ignored aligned workspace during joint development. Workspace success Use the ignored aligned workspace during joint development. Workspace success
does not establish independent ckprompt correctness with its old ckconfig does not establish independent integration correctness with old core or ckconfig
requirement. Before final independent validation, pin the released ckconfig requirements. Before final independent validation, pin released dependency
version supplying the APIs and validate both independent modules and the aligned versions supplying the APIs and validate all three independent modules and the
workspace. Release ckconfig before ckprompt. Publication remains a separate aligned workspace. Dependency release order is core, ckconfig, then ckprompt.
action requiring authorization; this decision does not authorize publication. Publication remains a separate action requiring authorization; this decision
does not authorize publication.
### OD-8: Focused configuration reports and filtering ### OD-8: Focused configuration reports and filtering