diff --git a/docs/roadmap/configkit-v1.1.0.md b/docs/roadmap/configkit-v1.1.0.md index a58958d..8a405f0 100644 --- a/docs/roadmap/configkit-v1.1.0.md +++ b/docs/roadmap/configkit-v1.1.0.md @@ -1,6 +1,7 @@ # ConfigKit v1.1.0 adoption -Status: adoption scope selected; implementation has not begun. This roadmap +Status: the selected ckconfig adoption is implemented and prepared for a later +release; source publication and ckprompt migration remain pending. This roadmap defines the embedded `ckconfig` dependency and source-report target. [Selected scope decisions](#selected-scope-decisions) distinguish adoption from deferred extensions. The [implementation plan](implementation.md) owns stage @@ -143,8 +144,8 @@ without duplicate legacy report fields. Include `EmptyImportSelections` as `empty_import_selections` in both text and YAML source reports under OD-2. Project each declaration path, location, and native selector in the returned record order. Emit `empty_import_selections: []` -when there are no records. These are planned report changes; update the owning -CLI contract when implemented. +when there are no records. The [CLI reference](../cli.md#list-configuration-sources) +owns the implemented report contract. ### Deferred inspection expansion @@ -221,8 +222,8 @@ source release is reported separately from implementation completion. ## Selected scope decisions These dispositions record the user's selected adoption scope. -They define the target, not implemented contracts or authorization to -publish. Deferred features still need focused API and CLI design. +They record the selected target and do not authorize publication. Deferred +features still need focused API and CLI design. | Decision | Selected disposition | Reason | | --- | --- | --- | diff --git a/docs/roadmap/implementation.md b/docs/roadmap/implementation.md index cc086e7..ca18962 100644 --- a/docs/roadmap/implementation.md +++ b/docs/roadmap/implementation.md @@ -1,6 +1,6 @@ # ConfigKit v1.1.0 adoption implementation plan -Status: Stages 1–5 complete; Stage 6 is not started. +Status: Stages 1–6 complete. This plan is for a Luna coding agent implementing the selected [ConfigKit adoption target](configkit-v1.1.0.md). Follow Stage 1 through Stage 6 @@ -268,6 +268,16 @@ with authentic source/license references and no unrelated attribution rewrite. ## Stage 6: Validate the final state and finish the sprint +**Completed.** With Go 1.27.0 and workspace discovery off, the complete core, +ckconfig, and ckprompt suites passed offline with read-only metadata. Ckconfig's +suite was repeated after adding an explicit native main-layer explanation +assertion. The simple example's text and YAML source reports and fixture diff +ran successfully; the focused source fixture covers nonempty import evidence. +Core and ckprompt were tested against their own declared dependency graphs, +not against local migrated ckconfig. Full local workspace composition remains +pending the later ckprompt migration. The v0.3.0 note is a candidate; no source +release or hosted delivery was performed. + 1. Format changed Go files; inspect final diffs and module metadata. Confirm ckconfig-owned Go imports use the vanity ConfigKit identity, the old requirement is gone, its Go minimum is 1.27.0, core stays at v0.3.0, and no diff --git a/integrations/ckconfig/family_reports_test.go b/integrations/ckconfig/family_reports_test.go index 26305a6..0cba1cd 100644 --- a/integrations/ckconfig/family_reports_test.go +++ b/integrations/ckconfig/family_reports_test.go @@ -441,6 +441,7 @@ func TestExplainParsesBeforeAcquisitionAndPreservesNativeSafeHistory(t *testing. value: configkit.Explanation{ Path: configkit.Path{}, Effective: configkit.ValueSnapshot{Present: true, Redacted: true}, + Origin: configkit.Origin{Layer: configkit.LayerMain}, History: []configkit.ValueChange{{ Before: configkit.ValueSnapshot{Present: true, Redacted: true}, After: configkit.ValueSnapshot{Present: true, Redacted: true}, @@ -460,7 +461,7 @@ func TestExplainParsesBeforeAcquisitionAndPreservesNativeSafeHistory(t *testing. if outcome.Kind != commandkit.OutcomeSuccess || acquireCalls != 1 || reader.path.String() != "" { t.Fatalf("root explanation outcome=%#v calls=%d path=%q", outcome, acquireCalls, reader.path.String()) } - if strings.Contains(output.String(), "APP_TOKEN_VALUE") || !strings.Contains(output.String(), "redacted: true") || !strings.Contains(output.String(), "history:") || !strings.Contains(output.String(), "dependencies: []") || !strings.Contains(output.String(), "name: APP_TOKEN") { + if strings.Contains(output.String(), "APP_TOKEN_VALUE") || !strings.Contains(output.String(), "redacted: true") || !strings.Contains(output.String(), "layer: main") || !strings.Contains(output.String(), "history:") || !strings.Contains(output.String(), "dependencies: []") || !strings.Contains(output.String(), "name: APP_TOKEN") { t.Fatalf("safe explanation report = %s", output.String()) }