feat(settings): server settings.toml loader + SKIP_CANONICALS_FOR_UPGRADE + release-tag-first no-canonical fallback
Some checks failed
continuous-integration/drone/push Build is failing
Some checks failed
continuous-integration/drone/push Build is failing
- harness/settings.py: stdlib tomllib loader, [upgrade].skip_canonicals_for_upgrade (bool, default false), _SCHEMA single-source defaults+validation; graceful on absent/malformed (WARN+defaults), warn-and-ignore unknown keys/tables, TypeError on wrong type. Path $CCCI_SETTINGS / /etc/cc-ci/settings.toml. + tracked settings.toml.example. - resolve_upgrade_base: flag true bypasses the canonical lookup -> no-canonical fallback; canonical-present path (incl. samever step-back) unchanged when false. - _no_canonical_base (always-on, §2.C): newest release tag < head (reuse warm_reconcile.newest_older_version) -> main-tip -> skip; replaces jump-to-main-tip. - unit: full resolution matrix + loader tests; 315 unit pass, ruff clean. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
24
machine-docs/BACKLOG-settings.md
Normal file
24
machine-docs/BACKLOG-settings.md
Normal file
@ -0,0 +1,24 @@
|
||||
# BACKLOG — phase `settings`
|
||||
|
||||
## Build backlog
|
||||
|
||||
- [x] **B1** — `harness/settings.py`: stdlib `tomllib` loader, `[upgrade].skip_canonicals_for_upgrade`
|
||||
(bool, default false), `_SCHEMA` single-source defaults+validation, graceful on absent/malformed,
|
||||
warn-and-ignore unknown keys/tables, raise on wrong type. Path `$CCCI_SETTINGS` / `/etc/cc-ci/settings.toml`.
|
||||
- [x] **B2** — tracked `settings.toml.example` documenting keys + defaults (no secrets).
|
||||
- [x] **B3** — wire `SKIP_CANONICALS_FOR_UPGRADE` into `resolve_upgrade_base` (`run_recipe_ci.py`):
|
||||
flag true → bypass canonical lookup → no-canonical fallback. Scope = upgrade base only.
|
||||
- [x] **B4** — improved no-canonical fallback `_no_canonical_base` (§2.C): newest release tag `< head`
|
||||
(reuse `warm_reconcile.newest_older_version`) → main-tip → skip. Always-on.
|
||||
- [x] **B5** — unit tests: full resolution matrix (`tests/unit/test_upgrade_base.py`) + loader
|
||||
(`tests/unit/test_settings.py`). 315 unit pass, lint clean.
|
||||
- [x] **B6 (M1 claim)** — clean tree, push, claim M1 in STATUS-settings.md.
|
||||
|
||||
### M2 (after M1 PASS)
|
||||
- [ ] **B7** — deploy to cc-ci (`/etc/cc-ci` git pull + nixos-rebuild if needed); confirm harness reads
|
||||
settings (absent → default false; or file present false).
|
||||
- [ ] **B8** — live evidence (a): a recipe WITHOUT a canonical resolves base to newest release tag `< head`
|
||||
(not raw main-tip).
|
||||
- [ ] **B9** — live evidence (b): flip `SKIP_CANONICALS_FOR_UPGRADE = true` (scratch) → a canonical-bearing
|
||||
recipe ALSO resolves to the release-tag base (canonical bypassed); then restore false.
|
||||
- [ ] **B10 (M2 claim)** — claim M2; on fresh PASS of M1+M2 → `## DONE`.
|
||||
Reference in New Issue
Block a user