feat(cli)!: remove remaining config-shaped flags (--tmux, --tool, build --compression, shutdown --timeout)#536
Merged
Conversation
added 2 commits
July 3, 2026 09:33
…ild --compression, shutdown --timeout Flag-consistency audit follow-up: everything config-shaped goes via config/profiles; flags are only for per-invocation choices. - coi shell --tmux removed: [shell] use_tmux is the single source of truth (the flag+config pair with a documented override rule was exactly the two-sources-of-truth pattern 0.10 eliminates). - coi shell --tool removed: [tool] name in config, or a per-tool profile (which can carry the tool's whole setup, not just its name). - coi build --compression removed; NEW [container.build] compression config key (merge + schema), read from the resolved profile at all four build sites. coi image publish --compression stays (raw plumbing). - coi shutdown --timeout removed; NEW [container] shutdown_timeout config key (merge + schema + ShutdownTimeoutSeconds() accessor, default 60). - removedFlagHint generalized to a flag→config-key map: every removed flag errors with a hint naming its exact replacement key; exact-token matching keeps prefix collisions (--tmux-session, --tooling, --timeouts, --compression-level) hint-free. - Tests migrated; README rewritten config-first; CHANGELOG breaking entry expanded.
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.
Follow-up to the #532 flag-consistency audit: removes the four remaining config-shaped flags so the CLI is fully coherent with the config/profiles-first model. Flags now exist only for per-invocation choices (workspace, slot, resume, profile, force, format, ...).
Removed → replacement (config, project config, or profile)
coi shell --tmux[shell] use_tmux(was a flag+config duplicate with a documented override rule — the exact two-sources-of-truth pattern 0.10 eliminates)coi shell --tool[tool] name, or a per-tool profile (carries the tool's whole setup, not just the name)coi build --compression[container.build] compressionconfig key — a profile defining a build can now declare its compression;coi image publish --compressionstays (raw plumbing)coi shutdown --timeout[container] shutdown_timeoutconfig key (default 60) — a graceful-shutdown window is policy, not a per-invocation whimDetails
removedFlagHintgeneralized to a flag→config-key map: every removed flag errors with a hint naming its exact replacement key; exact-token matching keeps prefix collisions (--tmux-session,--tooling,--timeouts,--compression-level) hint-free. All verified live.ShutdownTimeoutSeconds()accessor defaults to 60.compression_config.py); shutdown tests use trusted-config timeout; hint coverage for all four removals in Go + Python; shell help asserts the flags are gone.Gates: go build/vet/test, golangci-lint v2.12.2 (0 issues), gofmt, ruff — all green locally.