Isolate failing flake input groups after combined candidate validation fails #92
Labels
No labels
host:electra
host:fleet
host:lyra
host:vega
host:vega
phase:cutover
phase:deploy
phase:mcp
phase:module
phase:packaging
phase:prep
phase:validation
project:attic-postgres-lyra-rollout
project:auto-update-reliability
project:declarative-purity-cleanup
project:external-review
project:host-facts-refactor
project:lyra-nixos-deploy
project:lyra-service-stack-migration
project:nebula-mesh-network
project:security-hardening
project:service-stack-migration
project:vega-sillytavern-cutover
service:auto-update
service:mem0
service:sillytavern
No milestone
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
nimmo/nixos-config#92
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Context
The scheduled update on 2026-07-24 found a fixed-output
paseo-0.2.0-npm-depshash mismatch while building Electra. The updater correctly restored the originalflake.lock, but because all changed input groups were validated as one combined candidate, the Paseo failure rejected every group. This leaves otherwise valid updates unpublishable until the unrelated upstream issue is resolved.The current combined-candidate design was deliberately introduced for efficient normal updates: all groups update one lock candidate, affected hosts are deduplicated, and each host is built at most once. Keep that fast path.
Desired behaviour
Use a combined-first, split-on-failure validation strategy:
The 2026-07-24 Paseo update is the reference case: reject
shared-ai-toolingwhile allowing unrelated groups to advance if their final combined candidate validates.Scope
scripts/nixos-update-common.shso candidate construction, host derivation, validation, rollback, and outcome recording can be reused during isolation.lib/auto-update-policy.nix.unchangedoutcome.Non-goals
Acceptance criteria
nix flake checkpass.Implementation outline
nixos_update_run_input_groups.Trade-off
Failures become more expensive: a normal successful run stays at one validation pass, but a failed combined candidate triggers extra builds to isolate it. This is intentional: cheap in the common case, more diagnostic and resilient only when something goes wrong.
Closed in error
Implemented as part of PR #93