Record proposed CLI decisions and clarify CommandKit boundaries
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# CommandKit ADR candidates
|
||||
|
||||
Status: proposed ADR inventory; no new decisions are approved by this document.
|
||||
Status: eight draft ADRs are Proposed and await review and approval.
|
||||
|
||||
Date: 2026-10-06.
|
||||
|
||||
@@ -8,7 +8,9 @@ This review covers the four numbered roadmaps:
|
||||
[CLI standard](01-cli-plan.md), [dispatcher](02-dispatch.md),
|
||||
[backend](03-backend.md), and [public facade](04-facade.md). It compares their
|
||||
choices with the existing ADRs and adopted policies. Candidate identifiers below
|
||||
are review references, not reserved ADR numbers or filenames.
|
||||
retain their original review meaning. The draft filenames now provide sequential
|
||||
record numbers after the existing three ADRs. All eight drafts remain Proposed
|
||||
pending review and approval; committing them preserves that status.
|
||||
|
||||
An ADR is useful for a significant choice with durable consequences for ownership,
|
||||
consumer behavior, compatibility, or implementation boundaries. Exact API spelling,
|
||||
@@ -24,30 +26,97 @@ owns ADR format and lifecycle.
|
||||
| [ADR 0002](../adr/0002-cobra-backend.md) | 03 | Cobra/pflag as the sole initial internal backend, fresh backend state, framework reuse with CommandKit-owned semantics, and no initial selectable backend facility. |
|
||||
| [ADR 0003](../adr/0003-public-facade.md) | 04 | Root-owned public contracts, explicit conversions, internal dependency direction, Cobra adapter isolation, error/type boundaries, and proportionate boundary protection. |
|
||||
|
||||
Recommend retaining those records without splitting them or creating overlapping
|
||||
ADRs for their constituent choices. They were created during policy adoption;
|
||||
roadmaps 02–04 now chiefly track their implementation and unresolved API design.
|
||||
New records should address distinct decisions left open, and link to existing
|
||||
records for established constraints.
|
||||
These records were created during policy adoption. ADR 0001 was revised directly
|
||||
in this review under the user's explicit override of the documentation policy's
|
||||
supersession rule. It retains dispatcher and typed-input decisions while correcting
|
||||
capability installation and consumer-policy scope. No superseding record was
|
||||
retained. Roadmaps 02–04 track implementation and unresolved API design.
|
||||
|
||||
## 2. Recommended candidates
|
||||
|
||||
| ID | Proposed ADR title | Current decision status | Recommendation |
|
||||
| Candidate | Draft ADR | Status | Policy reach |
|
||||
| --- | --- | --- | --- |
|
||||
| C1 | Use native YAML inspection and separate documents for combined scopes | YAML/JSON and combined-display principles accepted; some operational details remain proposed | Record the accepted principles first. |
|
||||
| C2 | Define the standard inspection surface and complete-family conformance | Ownership/completeness principles established; exact inventory proposed | Resolve the standard's operator responsibilities and required capabilities. |
|
||||
| C3 | Model inspection through complete named configuration scopes | Scope model and most defaults proposed; combined display accepted | Resolve with provider API design. |
|
||||
| C4 | Apply one CLI grammar through registered metadata | Shared parsing/presence established; particular grammar rules proposed | Resolve before fixing adapter behavior. |
|
||||
| C5 | Use one configuration selection path with controlled domain input extensions | Extension/ownership boundary established; detailed selection policy proposed | Resolve before provider and binding APIs are fixed. |
|
||||
| C6 | Inspect captured effective state without executing application work | Library/runtime ownership established; detailed inspection lifecycle proposed | Resolve with scope and provider design. |
|
||||
| C7 | Compare semantic configuration snapshots with explicit sensitivity gaps | Semantic diff and its comparison policy proposed | Resolve with the upstream inspection capability design. |
|
||||
| C8 | Return explicit invocation outcomes and separate reports from diagnostics | Outcome/process ownership established; public outcome model and status policy open | Resolve alongside invocation API design. |
|
||||
| C9 | Identify the CLI standard separately from application build identity | Separate CLI standard revision proposed; Go/CLI compatibility already policy | Resolve before version reporting and first publication. |
|
||||
| C2 | [0004: Standard inspection surface](../adr/0004-standard-inspection-surface.md) | Proposed | Standard operation purposes and capability-based availability. |
|
||||
| C8 | [0005: Invocation outcomes](../adr/0005-invocation-outcomes.md) | Proposed | Shared Go/CLI classification, streams, and process integration. |
|
||||
| C4 | [0006: Command grammar and vocabulary guidance](../adr/0006-command-grammar.md) | Proposed | Common parsing, discovery, and vocabulary guidance across command families. |
|
||||
| C1 | [0007: Native YAML reports](../adr/0007-native-yaml-reports.md) | Proposed | Initial report formats and combined inspection presentation. |
|
||||
| C6 | [0008: Captured inspection lifecycle](../adr/0008-inspection-lifecycle.md) | Proposed | Data ownership, acquisition effects, and inspection lifetimes. |
|
||||
| C3 | [0009: Configuration scopes](../adr/0009-configuration-scopes.md) | Proposed | Declared provider capabilities and configuration view selection. |
|
||||
| C5 | [0010: Configuration selection](../adr/0010-configuration-selection.md) | Proposed | Root, overlay, context, and override input semantics. |
|
||||
| C7 | [0011: Semantic configuration diff](../adr/0011-semantic-configuration-diff.md) | Proposed | One operation's comparison and sensitivity policy. |
|
||||
|
||||
The review sequence proceeds from the broad standard surface through common
|
||||
invocation, grammar, and reporting policy. It then covers
|
||||
inspection lifecycle and provider boundaries, specific configuration inputs, and
|
||||
finally semantic comparison. This ordering reflects policy reach; implementation
|
||||
sequencing remains with the numbered roadmaps.
|
||||
|
||||
Candidate C9, a separate integer CLI standard revision, was rejected during
|
||||
review. The tagged CommandKit release version identifies the library and its
|
||||
standard CLI contracts under the adopted release compatibility policy.
|
||||
|
||||
The accepted YAML principles carried by draft 0007 retain their existing
|
||||
planning authority, while the consolidated record and its additional details have
|
||||
Proposed status. The existing accepted ADRs 0001–0003 remain authoritative.
|
||||
|
||||
The following scopes distinguish existing commitments from recommendations.
|
||||
An accepted principle does not automatically approve every adjacent paragraph
|
||||
of the CLI proposal.
|
||||
|
||||
### C2. Define standard operations by family and declared capability
|
||||
|
||||
**Recorded direction:** each family defines its resources and supported operations;
|
||||
CommandKit assembles handlers from declared capabilities and exposes availability.
|
||||
Shared verbs retain consistent meanings. Version reporting defaults to the
|
||||
application, with explicit `--scope commandkit` selecting the embedded library.
|
||||
|
||||
**Review status:** capability-based installation, scoped version reporting, and
|
||||
consumer-policy boundaries were agreed during review. The initial operation
|
||||
inventory and remaining detailed contracts retain their prior Proposed status in
|
||||
[ADR 0004](../adr/0004-standard-inspection-surface.md).
|
||||
|
||||
Implementation: [CLI inventory](01-cli-plan.md#3-recommended-command-inventory) and
|
||||
[delivery work](01-cli-plan.md#10-implementation-dependencies-and-delivery).
|
||||
|
||||
### C8. Return explicit invocation outcomes and separate reports from diagnostics
|
||||
|
||||
**Decision to resolve:** a public outcome/error model that distinguishes usage
|
||||
errors, failed valid operations, and application domain results; selected standard
|
||||
status mappings; report/diagnostic channels; warning and writer-failure behavior.
|
||||
|
||||
**Why an ADR:** the model crosses handlers, adapter translation, output, and the
|
||||
application entry point. It affects Go error identity and subprocess compatibility.
|
||||
Concrete status values in the CLI plan are still proposals.
|
||||
|
||||
**Recommendation:** preserve existing application process/outcome ownership and
|
||||
backend-error isolation. Favor explicit classification over message matching and
|
||||
single diagnostic emission. Select stdout/stderr policy, standard mappings, and
|
||||
partial-output behavior with the invocation API. C1 owns format selection; this
|
||||
record owns result classification and delivery semantics.
|
||||
|
||||
Sources: [reports and statuses](01-cli-plan.md#9-output-diagnostics-and-failures),
|
||||
[dispatcher outcome work](02-dispatch.md#2-public-api-design),
|
||||
[adapter diagnostics](03-backend.md#diagnostics-and-outcomes), and
|
||||
[facade error conversion](04-facade.md#2-api-and-internal-representation-design).
|
||||
|
||||
### C4. Apply one CLI grammar through registered metadata
|
||||
|
||||
**Decision to resolve:** options after the complete command path, interspersed
|
||||
leaf operands/options, `--`, singleton repetition, ordered repeatable values, and
|
||||
how the selected mechanics apply to custom commands.
|
||||
|
||||
**Why an ADR:** grammar is a suite-wide compatibility contract that must survive
|
||||
backend updates or replacement. Cobra/pflag selection alone does not select it.
|
||||
|
||||
**Recommendation:** evaluate the proposed grammar as one coherent policy and
|
||||
implement selected differences from backend defaults centrally. Preserve the
|
||||
already selected presence and typed-input model; do not repeat its rationale in
|
||||
a new record. Detailed spelling and operand counts belong in command references.
|
||||
|
||||
Sources: [grammar proposal](01-cli-plan.md#flag-placement-and-repeated-flags),
|
||||
[backend presence/repetition work](03-backend.md#presence-and-repetition), and
|
||||
[existing typed-input decision](../adr/0001-command-dispatch-and-inputs.md#typed-inputs-with-explicit-bindings).
|
||||
|
||||
### C1. Use native YAML inspection and separate documents for combined scopes
|
||||
|
||||
**Decision to record:** the initial implementation defers JSON without promising
|
||||
@@ -71,109 +140,50 @@ Sources: [accepted planning decisions](01-cli-plan.md#accepted-planning-decision
|
||||
[output formats](01-cli-plan.md#9-output-diagnostics-and-failures), and
|
||||
[backend report integration](03-backend.md#provider-integration-and-native-reports).
|
||||
|
||||
### C2. Define the standard inspection surface and complete-family conformance
|
||||
### C6. Coordinate captured inspection through the provider boundary
|
||||
|
||||
**Decision to resolve:** which operator responsibilities constitute the core
|
||||
inspection standard, which belong to the optional PromptKit family, and what
|
||||
complete adoption requires once those capabilities are available. The proposed
|
||||
surface distinguishes source inventory from path explanation, effective
|
||||
configuration from definition metadata, and inspection from mutation/execution.
|
||||
**Recorded direction:** CommandKit lazily requests provider results, coordinates
|
||||
declared dependencies, reuses compatible captures within its own invocation, and
|
||||
queries supported public inspection views. Its standard handlers perform
|
||||
inspection; callback effects and application execution remain consumer choices.
|
||||
|
||||
**Why an ADR:** the chosen responsibilities determine bundled handlers, provider
|
||||
requirements, and the infrastructure applications can delete. This is a policy
|
||||
choice beyond a list of command spellings.
|
||||
**Review status:** the ownership clarification was agreed. Shared execution and
|
||||
inspection loading is recommended guidance. Detailed capture and validation
|
||||
contracts retain Proposed status in
|
||||
[ADR 0008](../adr/0008-inspection-lifecycle.md).
|
||||
|
||||
**Recommendation:** use the proposed core/optional division as the starting point.
|
||||
Select the inventory deliberately, including whether semantic diff is required
|
||||
for core conformance despite its upstream dependency. Preserve the existing
|
||||
complete-family/no-placeholder boundary. Delivery phases and deferred product
|
||||
ideas remain roadmap material; exact commands belong in the future CLI reference.
|
||||
Implementation: [validation](01-cli-plan.md#config-validate),
|
||||
[display](01-cli-plan.md#config-show), and
|
||||
[upstream work](01-cli-plan.md#10-implementation-dependencies-and-delivery).
|
||||
|
||||
Sources: [inventory](01-cli-plan.md#3-recommended-command-inventory),
|
||||
[delivery and conformance](01-cli-plan.md#10-implementation-dependencies-and-delivery),
|
||||
[deferred commands](01-cli-plan.md#11-explicitly-deferred-commands), and
|
||||
[existing capability decision](../adr/0001-command-dispatch-and-inputs.md#explicit-registry-and-capability-installation).
|
||||
### C3. Select named scopes with declared inspection capabilities
|
||||
|
||||
### C3. Model inspection through complete named configuration scopes
|
||||
**Recorded direction:** scope metadata identifies configuration targets and their
|
||||
available operations. Configuration scopes and library command families are
|
||||
independent integration points. A missing comparison or provenance capability
|
||||
leaves other supported operations available.
|
||||
|
||||
**Decision to resolve:** stable scope identities, a complete inspection capability
|
||||
per scope, scope dependencies and reuse, and the meaning/applicability of `all`.
|
||||
Select the proposed application inspection default versus all-scope validation
|
||||
default deliberately.
|
||||
**Review status:** capability-based scope support was agreed. Scope defaults,
|
||||
aggregate coverage behavior, ordering, and exact provider declarations remain
|
||||
proposals in [ADR 0009](../adr/0009-configuration-scopes.md).
|
||||
|
||||
**Why an ADR:** one scope abstraction can remove duplicated operation trees and
|
||||
support future integrations. Requiring complete scopes versus partial capability
|
||||
sets changes public provider design and consumer obligations.
|
||||
Implementation: [scope work](01-cli-plan.md#4-configuration-scopes) and
|
||||
[provider API work](02-dispatch.md#2-public-api-design).
|
||||
|
||||
**Recommendation:** prefer complete semantic scopes over separate operation trees.
|
||||
Resolve the required provider capabilities, loading dependencies, and treatment
|
||||
of unavailable operations with C2 and C6. Decide whether public providers use
|
||||
CommandKit-owned contracts or deliberately selected ConfigKit/PromptKit types;
|
||||
ADR 0003 establishes the boundary but leaves that API choice open.
|
||||
### C5. Parse and propagate inspection selection inputs
|
||||
|
||||
Sources: [configuration scopes](01-cli-plan.md#4-configuration-scopes),
|
||||
[dispatcher API work](02-dispatch.md#2-public-api-design), and
|
||||
[facade representation work](04-facade.md#2-api-and-internal-representation-design).
|
||||
**Recorded direction:** CommandKit preserves presence, validates declared selector
|
||||
applicability, and passes typed inputs to the registered provider. Application-root
|
||||
and ConfigKit overlay selectors apply to compatible providers; additional source
|
||||
models use the input extension mechanism.
|
||||
|
||||
### C4. Apply one CLI grammar through registered metadata
|
||||
**Review status:** shared loading is consumer guidance. Source discovery and
|
||||
application execution remain application-owned. Exact selector semantics and
|
||||
provider declarations retain Proposed status in
|
||||
[ADR 0010](../adr/0010-configuration-selection.md).
|
||||
|
||||
**Decision to resolve:** options after the complete command path, interspersed
|
||||
leaf operands/options, `--`, singleton repetition, ordered repeatable values, and
|
||||
how the selected mechanics apply to custom commands.
|
||||
|
||||
**Why an ADR:** grammar is a suite-wide compatibility contract that must survive
|
||||
backend updates or replacement. Cobra/pflag selection alone does not select it.
|
||||
|
||||
**Recommendation:** evaluate the proposed grammar as one coherent policy and
|
||||
implement selected differences from backend defaults centrally. Preserve the
|
||||
already selected presence and typed-input model; do not repeat its rationale in
|
||||
a new record. Detailed spelling and operand counts belong in command references.
|
||||
|
||||
Sources: [grammar proposal](01-cli-plan.md#flag-placement-and-repeated-flags),
|
||||
[backend presence/repetition work](03-backend.md#presence-and-repetition), and
|
||||
[existing typed-input decision](../adr/0001-command-dispatch-and-inputs.md#typed-inputs-with-explicit-bindings).
|
||||
|
||||
### C5. Use one configuration selection path with controlled domain input extensions
|
||||
|
||||
**Decision to resolve:** reuse application discovery and selection across execution
|
||||
and inspection, common root/overlay selectors, typed configuration overrides, and
|
||||
registered domain selectors with explicit applicability to operations/scopes.
|
||||
|
||||
**Why an ADR:** a second discovery/resolution path can inspect different state
|
||||
from actual execution. Extension choices also determine how applications express
|
||||
real domain context while CommandKit retains its standard-family ownership.
|
||||
|
||||
**Recommendation:** favor one application-owned acquisition path and ConfigKit's
|
||||
recorded override/resolution mechanisms. Resolve selector applicability, invalid
|
||||
combinations, path interpretation, and no-fallback behavior for explicit inputs.
|
||||
Do not infer a universal filesystem discovery convention from shared CLI syntax.
|
||||
|
||||
Sources: [selection and overrides](01-cli-plan.md#configuration-selection-and-overrides),
|
||||
[dispatcher binding work](02-dispatch.md#2-public-api-design), and
|
||||
[existing input-extension boundary](../adr/0001-command-dispatch-and-inputs.md#ownership-and-namespace-structure).
|
||||
|
||||
### C6. Inspect captured effective state without executing application work
|
||||
|
||||
**Decision to resolve:** expose the owning libraries' final captured views,
|
||||
coordinate dependency loading once per invocation, and distinguish configuration
|
||||
validation and definition inspection from runtime preflight, request preparation,
|
||||
provider calls, and application execution.
|
||||
|
||||
**Why an ADR:** this establishes which effects inspection may cause and which
|
||||
state reports describe. It prevents reconstruction from mutable runtime structs
|
||||
or reparsing YAML, and supports clear provider lifetimes.
|
||||
|
||||
**Recommendation:** prefer captured owning-library inspection APIs and preserve
|
||||
their resolution, provenance, and redaction semantics. Specify configuration
|
||||
validation scope, credential requirements, and acquisition effects explicitly;
|
||||
offline inspection must not silently become a credential-independent guarantee.
|
||||
Keep request-specific rendering and operational checks application-owned.
|
||||
|
||||
Sources: [validation](01-cli-plan.md#config-validate),
|
||||
[effective display](01-cli-plan.md#config-show),
|
||||
[PromptKit definitions](01-cli-plan.md#7-promptkit-definition-inspection), and
|
||||
[upstream capability work](01-cli-plan.md#10-implementation-dependencies-and-delivery).
|
||||
The basic library/runtime ownership boundary already exists in ADR 0001.
|
||||
Implementation: [selection inputs](01-cli-plan.md#configuration-selection-and-overrides)
|
||||
and [binding work](02-dispatch.md#2-public-api-design).
|
||||
|
||||
### C7. Compare semantic configuration snapshots with explicit sensitivity gaps
|
||||
|
||||
@@ -194,69 +204,19 @@ Coordinate the comparison outcome with C8 rather than defining it twice.
|
||||
Sources: [semantic diff](01-cli-plan.md#config-diff) and
|
||||
[structured inspection dependencies](01-cli-plan.md#10-implementation-dependencies-and-delivery).
|
||||
|
||||
### C8. Return explicit invocation outcomes and separate reports from diagnostics
|
||||
## 3. Review sequence and decision status
|
||||
|
||||
**Decision to resolve:** a public outcome/error model that distinguishes usage
|
||||
errors, failed valid operations, and application domain results; selected standard
|
||||
status mappings; report/diagnostic channels; warning and writer-failure behavior.
|
||||
1. Review 0004 for standard responsibilities and capability-based availability.
|
||||
2. Review 0005–0007 for outcomes, grammar, and report formats shared across the
|
||||
standard suite and common invocation mechanics.
|
||||
3. Review 0008–0010 for captured inspection, provider scopes, and configuration
|
||||
selection. Their contracts need to fit together during API design.
|
||||
4. Review 0011 for semantic comparison and its upstream sensitivity requirements.
|
||||
|
||||
**Why an ADR:** the model crosses handlers, adapter translation, output, and the
|
||||
application entry point. It affects Go error identity and subprocess compatibility.
|
||||
Concrete status values in the CLI plan are still proposals.
|
||||
|
||||
**Recommendation:** preserve existing application process/outcome ownership and
|
||||
backend-error isolation. Favor explicit classification over message matching and
|
||||
single diagnostic emission. Select stdout/stderr policy, standard mappings, and
|
||||
partial-output behavior with the invocation API. C1 owns format selection; this
|
||||
record owns result classification and delivery semantics.
|
||||
|
||||
Sources: [reports and statuses](01-cli-plan.md#9-output-diagnostics-and-failures),
|
||||
[dispatcher outcome work](02-dispatch.md#2-public-api-design),
|
||||
[adapter diagnostics](03-backend.md#diagnostics-and-outcomes), and
|
||||
[facade error conversion](04-facade.md#2-api-and-internal-representation-design).
|
||||
|
||||
### C9. Identify the CLI standard separately from application build identity
|
||||
|
||||
**Decision to resolve:** whether applications report an explicit CLI standard
|
||||
revision distinct from application and module versions; its meaning, ownership,
|
||||
change rules, and relationship to module releases and consumer adoption.
|
||||
|
||||
**Why an ADR:** a new compatibility identifier creates a durable versioning axis.
|
||||
The adopted release policy already covers Go and CLI compatibility, but does not
|
||||
define a separate standard-revision scheme.
|
||||
|
||||
**Recommendation:** consider the proposed explicit revision if it gives operators
|
||||
and subprocess consumers actionable information. Compare it with deriving the
|
||||
signal from the CommandKit module version before introducing another maintained
|
||||
identifier. Record that tradeoff; routine build-info fields and output spelling
|
||||
belong in the CLI reference.
|
||||
|
||||
Sources: [version proposal](01-cli-plan.md#version),
|
||||
[consumer migration](01-cli-plan.md#10-implementation-dependencies-and-delivery),
|
||||
[backend compatibility work](04-facade.md#4-completion-and-later-replacement), and
|
||||
[release compatibility policy](../policy/release.md#versioning-and-compatibility).
|
||||
|
||||
## 3. Suggested order
|
||||
|
||||
1. Record C1's already accepted principles; keep unresolved adjacent details
|
||||
proposed. Existing ADRs 0001–0003 already cover the other accepted architectural
|
||||
foundations from the numbered roadmaps.
|
||||
2. Resolve C2, C3, C5, and C6 together to establish the inspection surface and
|
||||
provider responsibilities before fixing public API declarations. Combine
|
||||
records if the eventual choices are inseparable and one coherent rationale
|
||||
is clearer.
|
||||
3. Resolve C4 and C8 alongside binding/invocation API design, before adapter
|
||||
defaults become observable commitments.
|
||||
4. Resolve C7 with the upstream snapshot/sensitivity contract; it may precede
|
||||
implementation of the diff command without blocking native YAML display.
|
||||
5. Resolve C9 before exposing a new standard-revision field or publishing its
|
||||
compatibility meaning.
|
||||
|
||||
This is a drafting sequence, not a requirement to produce nine ADRs before any
|
||||
implementation. Select records according to the significance of actual decisions.
|
||||
When a decision changes an accepted ADR, create a superseding record rather than
|
||||
rewriting its decision content. None of these candidates currently requires
|
||||
superseding the three existing records.
|
||||
Each candidate has its own draft as requested. Related records can be reviewed
|
||||
together while retaining their distinct policy responsibilities. The current
|
||||
records are proposals for review; accepted decisions and existing implementation
|
||||
plans retain their prior authority.
|
||||
|
||||
## 4. Items to keep outside separate ADRs for now
|
||||
|
||||
@@ -282,13 +242,67 @@ superseding the three existing records.
|
||||
|
||||
## 5. Handoff to durable records
|
||||
|
||||
For each selected candidate, capture context, decision, viable alternatives, and
|
||||
consequences using the adopted ADR format. Assign the next sequential filename
|
||||
when drafting the actual record. Keep candidate approval status accurate; listing
|
||||
a recommendation here does not approve it.
|
||||
The eight drafts use the adopted ADR format: title, status, date, context, decision,
|
||||
alternatives considered, and consequences. Review and approval determine each
|
||||
record's transition from Proposed to Accepted. Source commits preserve draft
|
||||
status until that approval occurs.
|
||||
|
||||
Once a record owns architectural rationale, replace that rationale in non-owning
|
||||
roadmaps with a link and retain implementation status and unresolved work. Update
|
||||
the architecture or release policy only where the accepted choice establishes a
|
||||
new normative rule. GoDoc and the implemented CLI reference remain the eventual
|
||||
owners of exact public contracts.
|
||||
|
||||
## 6. Review of library authority and future expansion
|
||||
|
||||
Reviewed all eleven ADRs on 2026-10-06. The three agreed revisions were applied,
|
||||
followed by a review of consumer mandates and unnecessary integration prerequisites.
|
||||
ADRs 0001–0003 retain Accepted status; ADRs 0004–0011 remain Proposed. Approval of
|
||||
individual review principles leaves other proposed choices at their prior status.
|
||||
The drafts are committed for continued review with their Proposed status retained.
|
||||
|
||||
| ADR | Review finding and action |
|
||||
| --- | --- |
|
||||
| [0001](../adr/0001-command-dispatch-and-inputs.md) | Revised directly under the user override. Installation follows declared capabilities. Fresh input, lazy calls, domain-result preservation, and namespace checks now explicitly describe CommandKit behavior. Consumer structure and migration coordination are guidance. |
|
||||
| [0002](../adr/0002-cobra-backend.md) | Clarified the existing backend boundary: CommandKit keeps Cobra internal; consumers can independently use other frameworks. Metadata-only tree construction describes CommandKit's work, with caller lifecycle retained. |
|
||||
| [0003](../adr/0003-public-facade.md) | Retained root-owned contracts, adapter isolation, and deliberate future public-package decisions. Clarified that permitted public integration dependencies can include libraries beyond ConfigKit and PromptKit. |
|
||||
| [0004](../adr/0004-standard-inspection-surface.md) | Removed universal core and PromptKit completeness prerequisites. Defined capability-based availability, consistent verb purposes, independent definition/configuration integration, and explicit version subjects. |
|
||||
| [0005](../adr/0005-invocation-outcomes.md) | Scoped report and diagnostic rules to CommandKit's output through supplied streams. Caller output, final exits, and domain mappings remain caller-owned; outcome checking is guidance. |
|
||||
| [0006](../adr/0006-command-grammar.md) | Limited grammar authority to commands dispatched by CommandKit. Preserved common parser behavior and added explicit version-subject selection. |
|
||||
| [0007](../adr/0007-native-yaml-reports.md) | Limited format choices to the initial reports. Future families choose suitable report contracts. Loading and validation are expressed as provider-result requirements; custom formats remain caller-owned. |
|
||||
| [0008](../adr/0008-inspection-lifecycle.md) | Separated implemented coordination, provider result contracts, and application guidance. Loading parity, callback internals, credential policy, and bootstrap effects remain consumer choices. |
|
||||
| [0009](../adr/0009-configuration-scopes.md) | Removed the all-operations scope prerequisite. Added declared capabilities, discoverable support, independent command families, and explicit unsupported-selection diagnostics. |
|
||||
| [0010](../adr/0010-configuration-selection.md) | Replaced the required shared consumer loader with reusable bindings and recommended practice. Selectors depend on provider applicability, allowing additional source models. |
|
||||
| [0011](../adr/0011-semantic-configuration-diff.md) | Required safe comparison data only for enabled diff support. Left other operations independently available and scoped initial root/overlay bindings to compatible integrations. |
|
||||
|
||||
### Boundaries retained deliberately
|
||||
|
||||
- Reserved standard namespaces and registration conflict checks protect the agreed
|
||||
ownership model. They constrain what CommandKit accepts through its API.
|
||||
- Typed inputs, explicit presence, parser grammar, outcomes, and report semantics
|
||||
define CommandKit behavior. Custom domain effects and report formats remain
|
||||
application-owned.
|
||||
- Root facade and internal Cobra isolation preserve the chosen public API boundary.
|
||||
The initial backend and public-package choices permit later deliberate changes;
|
||||
they are separate from a universal consumer framework policy.
|
||||
- Safe data is required for the operation consuming it. A missing capability
|
||||
affects that operation, rather than registration of unrelated capabilities.
|
||||
|
||||
### Remaining proposals and implementation questions
|
||||
|
||||
The scope defaults, aggregate coverage diagnostics, parser details, numeric status
|
||||
mappings, and detailed comparison/report choices remain proposals until separately
|
||||
approved. The revised scope proposal preserves `all` as all registered scopes and
|
||||
reports unsupported coverage before loading; it leaves explicit supported
|
||||
selections available. This is an operator-selection rule, not a completeness
|
||||
requirement for registering an integration.
|
||||
|
||||
Public API work still needs proportionate capability declarations, dependency
|
||||
identity, capture ownership, and diagnostics delivery. The design should make new
|
||||
inspection capabilities additive where practical rather than extending one
|
||||
mandatory provider interface with every future operation. Future family verbs,
|
||||
resource models, source selectors, and formats belong to their respective contracts.
|
||||
|
||||
Architecture policy and CLI/dispatcher planning were aligned in this pass so old
|
||||
completeness requirements and application-loading mandates do not reappear during
|
||||
implementation. Durable ADRs retain links to other ADRs and policies only.
|
||||
|
||||
Reference in New Issue
Block a user