feat(config): unified config — Phase B#51
Merged
Conversation
…t) + DetectorOverride.empty() for symmetry
…ation.yml + CLI defaults
… with provenance)
…nfigExplainSubcommand Spring 7.0 deprecated this annotation. Fields are already private with javadoc comments that document the nullable contract, so the annotation is pure ceremony here. No behavior change; 11 config CLI tests still green.
Neo4jConfig and Map imports were left over from an earlier draft. Build green; 6/6 adapter tests still pass.
… legacy CodeIqConfig adapted from it
…accepted as deprecated alias Canonical keys are now snake_case across the board (matches CODEIQ_* env var casing and the legacy .osscodeiq.yml schema users are migrating from). camelCase spellings continue to load for one release as deprecated aliases; each alias produces at most one WARN per file. When both spellings appear for the same leaf, snake_case wins and a conflict WARN fires naming the camelCase form as deprecated. Full suite: 3275 tests pass, 0 failures (up from 3271 baseline).
…om .osscodeiq.yml
Records the Task 14 verification pass against spec §3.6 (Pillar 1 — Unified Config). All four acceptance criteria met; 3275/0/31 tests green; no release blockers. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Summary
Phase B of the code-iq hardening plan: collapses the three-tier configuration (
application.yml+.osscodeiq.yml+ ~30 CLI flags) into a single authoritativecodeiq.ymlwith deterministic layered resolution, first-class validation, per-field provenance tracking, and documented migration from the legacy schema.codeiq.ymlat repo root, snake_case keys (camelCase accepted as deprecated alias for one release)CODEIQ_*) → CLI (last wins)code-iq config validate(type-check + field-anchored errors, exit 0/1),code-iq config explain(per-leaf provenance table).osscodeiq.ymlloads for one release with a deprecation WARN (per-path dedupe) and transparent flat-key-to-unified-shape translationCodeIqConfigbean is now produced viaUnifiedConfigAdapter.toCodeIqConfig(unified); ~100 call sites unchangedapplication.ymlcleaned — only 4 Spring-owned keys remain (codeiq.neo4j.enabled,codeiq.neo4j.bolt.port,codeiq.cors.allowed-origin-patterns,codeiq.ui.enabled), all driving@ConditionalOnProperty/@Valuedocs/codeiq.yml.example(authoritative schema reference), README §Configuration rewrite, CLAUDE.md §Configuration rewrite23 commits, TDD per task. 3275 tests pass, 0 failures, 0 regressions. Exit-gate report at
docs/superpowers/baselines/2026-04-17/PHASE-B-EXIT-GATE.md.Follow-ups (post-release, tracked separately)
ProjectConfigLoaderstatic methods + migrateAnalyzer/CliOutputcall sites — eliminates the last setter-mutation pathCodeIqConfigsetters once legacy path is goneSQL_ENTITYNodeKindUnifiedConfigBeansTestto avoid full@SpringBootTestcontextTest plan
mvn -B teston merge commit — expect 3275 passcodeiq.ymlwithserving.port: 9090, run `code-iq config explain`, confirm the row reads `PROJECT`.osscodeiq.yml, run a command, confirm deprecation WARN fires once🤖 Generated with Claude Code