Summary
Make base-cli a fully standalone, consumer-neutral Python CLI library. Base is a consumer of the library, not an implicit dependency of its lifecycle.
The consumer-profile boundary introduced in #17 and the explicit Base adapter in Base are the right direction, but base-cli still ships a large legacy_base compatibility profile plus Base-owned paths, configuration, manifest discovery, runtime ownership, and history policy.
Refactor phases
- Make
App() select the generic profile by default; keep the legacy profile only as a temporary, explicitly named compatibility surface.
- Move Base discovery, configuration, runtime, and history adapters into the Base repository and have Base construct its profile there.
- Rename or generalize remaining public context/configuration fields whose names encode Base concepts.
- Remove the legacy compatibility profile and its Base-specific modules from
base-cli.
- Update documentation, tests, and public API checks. Package rename is explicitly out of scope.
Acceptance criteria
- A standalone consumer that imports
base_cli has no implicit Base manifest, home, cache, config, runtime, or history behavior.
- Base behavior is supplied entirely by Base-owned adapter code.
- No Base product names, paths, environment variables, command lists, or persistence schema remain in generic lifecycle modules after the migration.
- Existing Base behavior remains covered by Base tests throughout the train.
- Each phase lands as a reviewable issue-backed PR with migration notes where public API compatibility matters.
Summary
Make
base-clia fully standalone, consumer-neutral Python CLI library. Base is a consumer of the library, not an implicit dependency of its lifecycle.The consumer-profile boundary introduced in #17 and the explicit Base adapter in Base are the right direction, but
base-clistill ships a largelegacy_basecompatibility profile plus Base-owned paths, configuration, manifest discovery, runtime ownership, and history policy.Refactor phases
App()select the generic profile by default; keep the legacy profile only as a temporary, explicitly named compatibility surface.base-cli.Acceptance criteria
base_clihas no implicit Base manifest, home, cache, config, runtime, or history behavior.