Skip to content

feat: remove feature authoring commands from CLI#11

Merged
pofallon merged 1 commit into
mainfrom
010-remove-feature-authoring
Feb 20, 2026
Merged

feat: remove feature authoring commands from CLI#11
pofallon merged 1 commit into
mainfrom
010-remove-feature-authoring

Conversation

@pofallon
Copy link
Copy Markdown
Contributor

Summary

  • Remove the entire features subcommand group (test, package, pull, publish, info, plan) and templates authoring subcommands (publish, metadata, generate-docs)
  • Narrow the CLI to consumer-only commands — users who USE dev containers, not authors who publish features
  • Clean up all dead code: 16 test files, 5 spec directories, 8 example directories, documentation references
  • Fix license metadata from Apache-2.0 to MIT in workspace Cargo.toml

Consumer feature installation during deacon up remains fully functional. 1755 tests pass, zero clippy warnings.

Test plan

  • cargo fmt --all -- --check passes
  • cargo clippy --all-targets -- -D warnings produces zero warnings
  • make test-nextest-fast — 1755 tests pass, 31 skipped
  • deacon --help does not list features subcommand group
  • deacon templates --help shows only pull and apply
  • Consumer core modules preserved: features.rs, feature_installer.rs, feature_ref.rs, oci/
  • No orphaned references to removed modules across crates/ and docs/
  • grep 'license' Cargo.toml reads MIT

🤖 Generated with Claude Code

Remove the entire 'features' subcommand group (test, package, pull, publish,
info, plan) and templates authoring subcommands (publish, metadata,
generate-docs). Narrow the CLI to consumer-only commands — users who USE
dev containers, not authors who publish features.

Changes:
- Remove FeatureCommands enum and Commands::Features variant from cli.rs
- Remove authoring variants from TemplateCommands (Publish, Metadata, GenerateDocs)
- Simplify templates.rs dispatcher to only Pull and Apply
- Delete features/, features_monolith.rs, features_publish_output.rs command modules
- Delete features_info.rs and features_test/ from core library
- Delete 16 authoring test files from deacon and core test suites
- Delete 5 spec documentation directories and 8 example directories
- Update README.md, CLI_PARITY.md, examples/README.md, nextest.toml
- Fix license metadata from Apache-2.0 to MIT in workspace Cargo.toml

Consumer feature installation during 'deacon up' is fully preserved.
1755 tests pass, zero clippy warnings.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@pofallon pofallon merged commit ff5185c into main Feb 20, 2026
3 checks passed
@github-actions github-actions Bot added docs Documentation changes build Build system changes labels Feb 20, 2026
@pofallon pofallon deleted the 010-remove-feature-authoring branch May 25, 2026 02:07
pofallon added a commit that referenced this pull request May 26, 2026
…liases and dormant scaffolding (#51)

Audit gap #11 + user directive: aggressively delete dormant /
deprecation-tracked scaffolding since nobody is using deacon yet — no
back-compat to preserve.

## Deleted CLI flags (Up + Build)

- `--experimental-lockfile` (hidden alias for the legacy `<PATH>` form,
  emitted a deprecation WARN) — replaced by `--no-lockfile` and the
  default-derived path next to the config file.
- `--experimental-frozen-lockfile` (hidden alias for `--frozen-lockfile`)
  — replaced by `--frozen-lockfile` directly.
- `--omit-syntax-directive` (Build) — was never read in any code path.
- `--skip-persisting-customizations-from-features` (Build) — was never
  read.

## Deleted code following the flags

- `crates/deacon/src/cli.rs`: removed the 2 deprecation-WARN blocks,
  the `effective_frozen_lockfile = frozen || experimental_frozen` OR,
  and the corresponding fields from the Up + Build dispatchers + enum
  variants.
- `crates/deacon/src/commands/up/args.rs`: removed `experimental_lockfile`,
  `experimental_frozen_lockfile`, and `omit_syntax_directive` from
  `UpArgs` and `NormalizedUpInput` (+ their Default impl + the
  normalize-and-validate threading). Removed the `#[allow(dead_code)]
  // TODO: Will be wired in T009` on `update_remote_user_uid_default`
  (it IS actually consumed downstream — no allow needed).
- `crates/deacon/src/commands/up/mod.rs`: simplified the frozen-lockfile
  pre-build validation — `(args.frozen_lockfile || args.experimental_lockfile.is_some())`
  → `args.frozen_lockfile`, and dropped the experimental_lockfile path
  derivation.
- `crates/deacon/src/commands/up/helpers.rs`: removed the
  `experimental_lockfile` branch in `handle_lockfile_post_build` and
  the `experimental_lockfile_path_overrides_derivation` test.
- `crates/deacon/src/commands/build/mod.rs`: removed `experimental_lockfile`,
  `experimental_frozen_lockfile`, `omit_syntax_directive`, and
  `skip_persisting_customizations_from_features` from `BuildArgs` and
  its Default impl. Tightened the `no_lockfile` / `frozen_lockfile`
  doc comments to point at the actual followup (lifting the
  byte-compare helper from `up::helpers` into a shared module).
- `crates/core/src/build/mod.rs`: removed `experimental_lockfile`,
  `experimental_frozen_lockfile`, `omit_syntax_directive` from the
  `BuildRequest` struct and updated the 2 test fixtures accordingly.
- `crates/deacon/tests/up_lockfile_frozen.rs`: removed the
  `test_experimental_frozen_lockfile_defaults_to_false` test;
  updated 2 other tests that referenced the deleted field to use
  `frozen_lockfile`.

## Deleted dead module

- `crates/deacon/src/commands/up/dotfiles.rs` (245 LoC) — module was
  marked `#[deprecated]` since T009 with dotfiles execution now in
  `deacon_core::container_lifecycle::execute_dotfiles_in_container`.
  Confirmed zero callers via grep. Removed `mod dotfiles;` registration
  in `up/mod.rs` and the matching doc-comment line.

## Verification

- `cargo build`
- `cargo fmt --all -- --check`
- `cargo clippy --all-targets -- -D warnings`
- `cargo test --lib` → 284 deacon + 1081 deacon-core pass

Refs: gap #11 from the post-1.0 audit.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

build Build system changes docs Documentation changes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant