Slice 86: Codex Default And Setup Plan
Scope#
Make the default lifecycle harness match the live agreement and expose setup's current defaults as typed service facts.
This slice changes:
- default config harness from Claude to Codex
- setup result model to include a
SetupPlan - setup terminal/JSON output to render the plan instead of hardcoded next-step strings
It does not install automation from setup and does not add interactive raw-mode selection.
Why now#
The live agreement says the default lifecycle harness is Codex. Current code
still sets DEFAULT_HARNESS = HarnessKind.CLAUDE, which means no-flag
ingest, garden, and sync can select the wrong provider unless config
overrides it.
Setup also still hardcodes next-step strings in the renderer. That makes future target selection, default agent/model selection, and local automation choices harder to implement cleanly.
Cosmic Python chapter 4 says the service layer captures the use case. Cosmic Python chapter 10 says commands capture intent. Setup should therefore return the defaults and recommended follow-up commands as request/result facts, not as renderer-only text.
Shape#
result = app.setup.run(RunSetupRequest(...))
result.plan.default_harness # codex
result.plan.instruction_targets # selected setup targets
result.plan.automation # sync/garden recommendations
result.plan.next_commands # renderer + JSON share thisDesign decisions#
- Keep setup non-interactive in this slice.
- Keep automation installation explicit. Setup recommends commands; it does not
call
AutomationService.install(...). - Keep update automation out of setup until the update-notification policy is reopened.
- Use Pydantic setup models for the shaped plan.
Verification#
uv run pytest tests/test_config_service.py tests/test_setup_service.py tests/test_cli.py::test_cli_setup_and_uninstall_codex_instructions tests/test_cli.py::test_cli_setup_skip_instructions_json tests/test_automation_service.py tests/test_public_contract.pyuv run ruff check src/codealmanac/services/config src/codealmanac/services/setup src/codealmanac/services/automation src/codealmanac/cli/render/setup.py tests/test_config_service.py tests/test_setup_service.py tests/test_cli.py tests/test_automation_service.py tests/test_public_contract.pyuv run pytestuv run ruff check .git diff --check