Skip to content

ci: no PR check evaluates a NixOS host — PR #699's broken amd service merged green and failed only on the laptop switch #705

Closed

Description

@dezren39

Finding

No PR check evaluates any NixOS host configuration, so a host definition that fails at evaluation merges green and is only discovered at just switch time on the machine itself. This already happened:

Evidence (current main f7dfea35)

  • .github/workflows/nix-ci.yml:60-70 — the flake-check job named "Nix flake evaluation" (the PR gate that passed on amd: KRdp remote desktop, declaratively (package + user service) #699/fix(amd): quote KRdp service name so it is one systemd unit #701) runs exactly three evals, none of them a host:

    nix eval .#devShells.x86_64-linux.default.drvPath
    nix eval .#packages.x86_64-linux.mcpx.drvPath
    nix eval .#apps.x86_64-linux.format-check.program
    

    (Verified two ways: local clone git show origin/main:.github/workflows/nix-ci.yml and gh api repos/developing-today/code/contents/.github/workflows/nix-ci.yml — lines 68-70 agree.)

  • A grep of .github/workflows/ for nixosConfigurations finds exactly one hit: jules-daily-flake-sync.yml:71, which evaluates .#nixosConfigurations.nixos.config.system.build.toplevel.drvPath (the Intel host, not amd) inside a scheduled Jules prompt — not a PR gate.

  • Prior instance of the same discovery pattern: amd host fails at evaluation: no outputHashes for p2panda-core-0.7.1 #158 (closed) — "amd host fails at evaluation" — was also found manually, not by CI.

Single-repo: the NixOS hosts (nixos/hosts/, amd, nixos) live only in this repo; dezren39/nix has no nixos/ host tree and no equivalent workflow.

Why it matters

The hosts are Drew's actual machines. An evaluation error that reaches main surfaces at the worst possible moment — mid-switch on the laptop — instead of on the PR that introduced it. Host modules are edited regularly (KRdp is one example), and the type system only protects them if something actually forces the evaluation.

Acceptance criteria

Filed by the pr-diff-review job from its review of PRs #699/#701.

Activity

  1. dezren39 commented on Oct 26, 2026

    @dezren39
    MemberAuthor

    Intake review

    Still live (verified this run, fleet monitor): current main's .github/workflows/nix-ci.yml (lines 68–70) still evaluates exactly three things — devShells.x86_64-linux.default, packages.x86_64-linux.mcpx, apps.x86_64-linux.format-check — and no PR workflow evaluates any nixosConfigurations host. The gap PR #699 slipped through is unchanged.

    Related: PR #699 (the broken amd service, merged green), PR #701 (the fix, with the switch-time error in its body), closed #158 (the same discovery pattern found manually).

    Notes / risks: host evaluation is heavier than the current three evals — scope the gate deliberately (eval-only drvPath of each host's toplevel, as the Jules scheduled workflow already does for the Intel host at jules-daily-flake-sync.yml:71, is the cheap shape). Watch CI time; evaluating both hosts on every PR may warrant path filtering to nixos/** + flake files.

    Suggested approach: add a PR job/step evaluating nixosConfigurations.{nixos,amd}.config.system.build.toplevel.drvPath (eval only, no build), triggered at least when host/flake paths change.

    Labels normalized by the fleet monitor: kind/ci, status/needs-triage, priority/high (the hosts are Drew's actual machines; failure surfaces mid-switch), effort/m, area/ci.

  2. added
    kind/ciCI/CD pipelines, workflows, and build automation
    priority/highImportant and time-sensitive
    effort/mMedium: expected under 1 day of work
    area/ciCI/CD pipelines, workflows, and build automation (area)
    meta/enrichedIntake review done: acceptance criteria, links, and normalized labels added
    work/assignedQueue worker lifecycle state
    queue/claimedQueue worker lifecycle state
    and removed on Oct 26, 2026
  3. dezren39 commented on Oct 30, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · picked up

    • Agent: queue worker (repo-worker-code), lane D shift
    • Session / ID: queue task 1072
    • Found via: queue claim
    • Task: CI investigation only — confirm whether any PR check evaluates a NixOS host config on current main, and propose a host-eval job shape (hosts, command, cost). No workflow change.
    • Expectation: effort s; done = findings comment on this issue with workflow evidence and a concrete job proposal
    • Links: task 1072 (repo-health-code-pilot queue)
  4. 134 remaining items

  5. added
    status/parkedDeliberately paused with a recorded resume condition
    and removed
    queue/claimedQueue worker lifecycle state
    on Oct 31, 2026
  6. dezren39 commented on Oct 31, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · parked

  7. added
    queue/claimedQueue worker lifecycle state
    and removed
    status/parkedDeliberately paused with a recorded resume condition
    queue/parkedQueue task is parked (waiting on CI, time, or an event)
    on Oct 31, 2026
  8. dezren39 commented on Oct 31, 2026

    @dezren39
    MemberAuthor

    agent-note:v1 — Agent: repo-worker-code (lane B); state: claimed. Task 4048 resumed: GREEN direction now verified in CI — run 41231411994 (nix ci @ 25154dc) completed SUCCESS including job "basic: NixOS host evaluation". Codex summary on 25154dc: completed, no findings; 0 unresolved threads. Remaining gate: RED direction — dispatch run 41235601344 on scratch branch queue/4048-705-redcheck is still QUEUED; verifying the red tree on the laptop in parallel (nix eval drvPath must fail with #701 quoting reverted).

  9. added a commit that references this issue on Oct 31, 2026
  10. dezren39 commented on Oct 31, 2026

    @dezren39
    MemberAuthor

    agent-note:v1 — Agent: repo-worker-code (lane B); state: done (fixed_merged). Task 4048 completed: PR #3025 merged (568c7b9) — the "basic: NixOS host evaluation" job is now on main in .github/workflows/nix-ci.yml. Verification both directions: GREEN — CI run 41231411994 (nix ci @ 25154dc) completed SUCCESS including the host-evaluation job (plus flake evaluation and proxy fallbacks). RED — the job command (NIXPKGS_ALLOW_UNFREE=1 nix eval --impure .#nixosConfigurations.amd.config.system.build.toplevel.drvPath) run on the laptop against the scratch redcheck tree (queue/4048-705-redcheck @ 4dc37b6, #701 KRdp quoting reverted) exits 1 with the exact #699-class TypeError in nixos/hosts/amd-krdp.nix (option home-manager.users.user.systemd.user.services.app-org.kde.krdpserver). The CI dispatch for the red tree (run 41235601344) was still queued in the fleet runner backlog at merge time; its eventual red verdict corroborates the laptop proof. Codex on 25154dc: completed, no findings, 0 unresolved threads. Scratch branch deleted after merge.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area/ciCI/CD pipelines, workflows, and build automation (area)effort/mMedium: expected under 1 day of workkind/ciCI/CD pipelines, workflows, and build automationmeta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedpriority/highImportant and time-sensitivesource/pr-diff-reviewFiled by the pr-diff-review jobtask/ci-investigationQueue packet kind: investigate a CI failure

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions