Skip to content

id(ci): nixos-integration's id binary lacks the ssh feature, so the SSH world tests fail #4960

Closed

Description

@dezren39

Problem

nixos-integration runs the SSH world tests against an id binary that is
built without the ssh feature, so those tests cannot pass on current
main even when the harness itself is green.

  • pkgs/id/flake.nix:649-659 builds id-web with
    buildFeatures = [ "web" "sandbox" "world" ] — no ssh.
  • pkgs/id/flake.nix:637-641 passes idPackage = self.packages.${system}.id-web
    to nix/tests/integration-test.nix.
  • flake.nix:127 builds integrationTestRunner with
    cargo test --all-features --test cli_integration --no-run, so the test
    binary contains the SSH tests.

The spawned server therefore exits with:

Error: this build has no SSH support (feature `ssh`)

Evidence

VM run of checks.x86_64-linux.nixos-integration on branch
queue/7796-1372-legible-vm-timeout (PR #4913, the legibility fix for #1372),
2026-11-03, reusing the branch's built test runner and id binary:

[id-integration] 126 tests in 4 named groups: fast_unit=49, serve=43, tag=29, harness_unit=5
[id-integration] group 'fast_unit' finished in 7.4s
[id-integration] waiting on group 'serve' (filters: serve_tests::); per-group deadline 2200s, 3393s of suite budget left
...
test result: FAILED. 40 passed; 3 failed; 0 ignored; 0 measured; 83 filtered out; finished in 14.40s

Failures:

  • serve_tests::test_world_join_via_ssh_carries_the_frame_protocol
  • serve_tests::test_world_ssh_tunnel_carries_join_via_ssh
  • serve_tests::test_world_module_shared_over_iroh_and_web_presentations
    (assertion join denied; its server stderr shows the same missing-ssh exit)

Two are explicitly SSH tests; the third's server dies before the forged-join
assertion. The shared root cause in the captured stderr is
Error: this build has no SSH support (feature 'ssh').

Why it matters

#1372's acceptance is "the suite passes, or it fails fast with a named
assertion". The legibility half now holds (the run fails in seconds naming the
group and tests), but the "passes" half cannot be met while the binary under
test lacks a feature the test binary was compiled with.

Options

  1. Build the integration test's id binary with the ssh feature (matching
    the runner's --all-features), so the SSH tests exercise real behaviour.
  2. Gate the SSH tests on the spawned binary's capabilities and skip them
    otherwise — weaker, and it reduces coverage.

Preferred: option 1. A separate pre-existing blocker (#4850, ChainExt
literals missing the #3794 checkpoint field) also makes id-web's
checkPhase fail to build on main; both have to be cleared before a stock
nix build .#checks.x86_64-linux.nixos-integration can be green.

Refs #1372, PR #4913, #4850.

Activity

  1. added
    kind/ciCI/CD pipelines, workflows, and build automation
    priority/highImportant and time-sensitive
    app/idPackage/app: id (pkgs/ or apps/ in this repo)
    on Nov 3, 2026
  2. added
    queue/queuedHas a queued task in the Supabase agent queue
    source/creatorFiled by the new-issue-creator job
    task/triageQueue packet kind: verify, reproduce, and route this item
    on Nov 3, 2026
  3. developing-today commented on Nov 3, 2026

    @developing-today
    Contributor

    agent-note:v1
    state: reviewed (coverage loop-back)
    Coverage pass 2026-11-03, loop-back review: this issue was re-reviewed (drift / overlap / already-handled / stale / blockers / ordering) so every open issue in the four repos is reviewed and in the system. Verdict: still live; in the system as task 8550 (triage, queued, priority 50) in repo-health-code-pilot. Labels audited and synced. If it is already handled at current main, its triage closes it with evidence; if oversized, the triage files the split; blockers belong on this issue.
    Found via: coverage loop-back 2026-11-03

  4. added
    queue/claimedQueue worker lifecycle state
    work/assignedQueue worker lifecycle state
    and removed
    queue/queuedHas a queued task in the Supabase agent queue
    on Nov 4, 2026
  5. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · handed off

  6. 22 remaining items

  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 Nov 4, 2026
  8. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · picked up

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

    @dezren39
    MemberAuthor

    🤖 Agent note · parked

  11. removed
    status/parkedDeliberately paused with a recorded resume condition
    queue/parkedQueue task is parked (waiting on CI, time, or an event)
    work/assignedQueue worker lifecycle state
    on Nov 4, 2026
  12. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    agent-note:v1
    task: 9308
    lane: code-k
    transition: done
    PR #5339 merged (squash, merge sha 22477f8); issue #4960 closed by the PR. Verification: derivation buildFeatures "web sandbox ssh world" via laptop nix eval; production-line-guard failure pre-existing on main and untouched by this diff.

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

Metadata

Metadata

Assignees

Labels

app/idPackage/app: id (pkgs/ or apps/ in this repo)kind/ciCI/CD pipelines, workflows, and build automationpriority/highImportant and time-sensitivesource/creatorFiled by the new-issue-creator jobtask/small-fixQueue packet kind: bounded fix with reproduction and targeted tests

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions