High: restore reliable deployed-revision detection and Git flake provenance #54
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#54
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
Consumer builds formerly used a path flake, which omitted Git revision metadata and prevented HEAD-versus-deployed comparison from converging. Exact
git+filerevision builds restored provenance, but the first live Lyra run exposed a second boundary: root could not evaluate the user-owned Git repository. Builds now run as the configured repository owner, while profile activation remains privileged.Scope
The historical missing-legacy-revision convergence scenario has been moved to #56 for hermetic testing rather than manufactured on a live generation.
Completion criteria
configurationRevision == git rev-parse HEAD.Evening live-validation plan
For each participating consumer:
git+file?...rev=<HEAD>candidate without an ownership error.Nothing changed in pull, system is currentwithout building.--force.Implemented locally (not yet committed):
git+file://...?rev=<HEAD>flake reference rather thanpath:, preserving Git provenance and excluding untracked worktree content.configurationRevisionis parsed as empty and triggers one explicit legacy rebuild.configurationRevisionbefore sending success./run/current-system/sw/bin/nixos-versionpath instead of relying on the curated service PATH.Verification:
ec42e29f34bcc22b2f8c026c2d20825b7628d586.configurationRevision.nix flake checkpasses for Electra, Lena, Vega, and Lyra.Still required before closure:
Committed the revision-provenance repair as
70615e3(fix: preserve auto-update Git revision provenance). It has not been pushed or deployed.After push/deployment, use the checklist in the previous comment to confirm the initial legacy rebuild converges to a no-op and that committed-but-undeployed changes trigger exactly once.
Live Lyra validation exposed an ownership boundary missed by the original exact-revision test. The root-run updater pulled
47c7ff4, then Nix/libgit2 rejectedgit+file:///home/nimmo/nixos-config?rev=...because the repository is owned bynimmo. Lyra did not build or switch; active revision remains70615e3and a failure stamp was written.Pending local fix: run only
nixos-rebuild buildas the configured repository owner, retaining root for profile mutation/activation; route the emergency full-update path through the same build-and-switch function. Verified on Lyra that the exact owner-runnixos-rebuild buildsucceeds and emitsconfigurationRevision=47c7ff43b367db94b2cb0bf89528476892ce5384. Bash syntax and ShellCheck pass. Awaiting commit/deployment before repeating detached activation.Ownership-boundary fix committed as
7eae768(fix: build auto-updates as repository owner). Exact owner-run Lyra build and revision verification passed; Bash syntax and ShellCheck passed. The commit also appeared onorigin/mainimmediately at commit time despite no explicitgit pushcommand being run; local hooks contain only inactive samples, so the publication mechanism remains unexplained.✅ Lyra exact-revision provenance passed during a genuine automatic update for
f3d3bd547c094ab947ebf3867c66cf7538482228.The root service pulled the candidate,
runuser -u nimmoperformed the exactgit+file?...rev=f3d3bd5...build without an ownership error, detached activation completed, and post-switch verification reported the same full revision. Checkout HEAD and activeconfigurationRevisionnow match. The remaining Lyra check is the scheduled 20:04 follow-up proving the matching revision exits before build.Vega and Lyra converged cleanly to exact revision
b1efea8on 2026-07-16. Both report checkout HEAD equal to deployedconfigurationRevision, no failure stamp, and clean helper state. The owner-build/provenance path has now survived multiple subsequent automatic updates.Electra completed the committed-but-not-deployed → no-op regression sequence on 2026-07-16.
First invocation:
efdfc4118572b195e219a1a5772f006f0b8e78f1b1efea8...igpuspecialisation, and verified the full deployed revision asefdfc4118572b195e219a1a5772f006f0b8e78f1Immediate second invocation at 13:27:
Already up to dateNothing changed in pull, system is current (HEAD=efdfc4118572b195e219a1a5772f006f0b8e78f1)run.lockremainedTogether with the previously observed no-op checks on Lyra and Vega and genuine detached revision verification across the consumers, all live criteria are now satisfied except the historical missing-legacy-revision migration case. That remaining case is safer to exercise hermetically under #56 than by deliberately removing provenance from a live system generation.
All in-scope implementation and live-validation criteria are complete. The sole remaining historical migration scenario has been transferred to #56 for safe hermetic coverage. Closing this issue.