Migration and upgrade
Issue #25, verification run on 2026-10-12 against loop/issue-25 at 2393e75. Testing-plan rows: T10.
uv run pytest tests/unit/core/test_task_compat.py tests/unit/test_config.py -v
text
tests/unit/core/test_task_compat.py::test_a_pre_change_task_loads_from_the_store_and_answers_get_task PASSED [ 11%]
tests/unit/test_config.py::test_no_push_key_is_read_or_required PASSED [ 22%]
tests/unit/test_config.py::test_loads_toml_and_secrets_with_typed_defaults PASSED [ 33%]
tests/unit/test_config.py::test_missing_secret_names_variable PASSED [ 44%]
tests/unit/test_config.py::test_unknown_key_rejected PASSED [ 55%]
tests/unit/test_config.py::test_secrets_never_print PASSED [ 66%]
tests/unit/test_config.py::test_optional_secrets_fill_their_sections PASSED [ 77%]
tests/unit/test_config.py::test_missing_file_and_invalid_toml_are_config_errors PASSED [ 88%]
tests/unit/test_config.py::test_a_pre_issue_25_file_loads_unchanged PASSED [100%]
============================== 9 passed in 5.30s ===============================- A task stored before this change, with no
lifecycleand no status key, still loads andGetTaskanswers. Its lifecycle is derived fromparent_tasks. - An existing
--configfile loads unchanged; the new[openai] modelsandreasoning_effortkeys are optional.