feat: dial-unified-config — dial-cli (Picocli + Quarkus CLI)#1531
feat: dial-unified-config — dial-cli (Picocli + Quarkus CLI)#1531siarhei-fedziukovich wants to merge 253 commits into
Conversation
|
/deploy-review
|
|
/deploy-review
|
|
/deploy-review
|
ee00e6c to
a2400d6
Compare
|
/deploy-review
|
d1b1754 to
a4fa152
Compare
|
/deploy-review
|
|
/deploy-review
|
|
/deploy-review
|
|
/deploy-review
|
38e00fe to
29beb1a
Compare
|
/deploy-review
|
|
/deploy-review
|
6e1774e to
56c2752
Compare
|
/deploy-review
|
|
/deploy-review
|
f76793b to
d8628cc
Compare
|
/deploy-review
|
Add .classpath, .factorypath, .project, .settings/ to .gitignore. These are generated by Eclipse and the JDTLS language server (used by Claude Code's LSP integration), should not be tracked. Existing entries cover IntelliJ (.idea/) and VS Code (.vscode/). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The .claude/commands/review-unified-config.md file is a personal/local slash command, not part of the shared MVP tooling. Gitignored to avoid accidental inclusion in commits. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Refine the branch-hygiene policy in IMPLEMENTATION.md §3.2 / §9. Default remains rebase (linear history; force-push; sub-branches rebase onto new tip). Per-sync merge override is now allowed when situational — early in MVP with few slices in flight, or when conflicts resolve more cleanly with a merge commit. Late in MVP, prefer rebase to keep history readable for the final big-PR review. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Update expected outputs throughout dial-cli-devops-presentation.md to match what the implementation actually produces: plain-text Created/Updated/Deleted messages, `applied: N, failed: N` for apply, raw JSON envelope for dry-run promote, correct error message strings, exit code 2 scoped to HTTP 400/422, file-sourced key list behaviour, settings delete idempotency note, env use confirmation message, and validate subcommand in Quick Reference. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ADME Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1524d34 to
95eb970
Compare
|
/deploy-review
|
Two bugs caused inconsistent placeholder resolution in `dial-cli apply`:
1. Entity names containing `${params.*}` (e.g. `models/public/${params.model_name}`)
were stored as raw strings in the entity context, so `${entity.name}` in template
fields resolved to the literal placeholder string rather than the actual value.
Fields inside `!for` loops coincidentally got a second substitution pass and
appeared resolved, while non-loop fields did not — producing inconsistent output.
Fix: resolve the manifest name against params+vars before building entity context
and writing the apply envelope (`TemplateResolver.resolveString`,
`ApplyCommand`, `ManifestLoader.canonicalIdOf` overload for `fetchCurrentForPatch`).
2. `ControlFlowExpander.substitutePlaceholders` substituted `${...}` in object values
but silently passed keys through unchanged, leaving map keys such as
`"models/public/${params.model_name}"` unresolved in the output spec.
Fix: apply `sub.substitute()` to each key as well as its value.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
/deploy-review
|
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This comment has been minimized.
This comment has been minimized.
ApplyCommand.fetchCurrentForPatch now removes name/status/validationWarnings from the server GET response before JsonMergePatch.apply, preventing a 400 from the server when the merged spec is sent back via /v1/admin/apply. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This comment has been minimized.
This comment has been minimized.
|
/deploy-review
|
|
/deploy-review
|
This comment has been minimized.
This comment has been minimized.
Reorganise the cli module from a flat root package into a clean layered structure (command → service → client/data/exception) so responsibilities are explicit and dependency direction is one-way: command/ – picocli commands + converters + output renderers command/output/ – EntityRenderer, Json/Yaml/TableEntityRenderer service/ – EntityReader, EntityWriter, EntityDiff, EnvResolver service/auth/ – ApiKeyResolver, PasswordPrompter (was auth/) service/json/ – JsonMergePatch, JsonPatcher, JsonDiff service/manifest/ – Manifest, ManifestLoader, OverlayResolver service/template/ – template DSL pipeline (was template/) client/ – CliHttpClient (was http/) data/ – CliProfile, Environment, Defaults, Auth, ProfileLoader, YamlPatcher, OutputFormat exception/ – CliException, CliConfigException, ManifestParseException, NetworkException, TemplateException config/ – DialCliFactory, CliConfiguration (wiring only) No logic changes — pure package moves, package-declaration updates, and import fixes. New types introduced solely as extraction vehicles: • Manifest – extracted from ManifestLoader inner record • CliOptionsDto – DTO replacing direct DialCli dependency in service layer • OutputFormatDto / OutputFormatResolver – service-layer output-format handling Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
/deploy-review
|
This comment has been minimized.
This comment has been minimized.
|
/deploy-review
|
This comment has been minimized.
This comment has been minimized.
|
/deploy-review
|
…n fields Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Dependency ReviewThe following issues were found:
Vulnerabilitiessettings.gradle
License Issuessettings.gradle
OpenSSF ScorecardScorecard details
Scanned Files
|
|
/deploy-review
|
Applicable issues
Description of changes
Checklist
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.