Files
Dario LipicarandClaude Opus 5 e7aef6606c ci: bump install-nix-action v27 -> v31.11.0 (Nix 2.22 -> 2.35.1) (#100)
Nix below 2.26 DISCARDS an overridden input's own lock and resolves its children
from the PARENT's lock instead. Every doc-test that passes --override-input --
which is all of them under --workspace-pins -- therefore builds that input's
dependencies from a stale snapshot, and can silently compile months-old code
while reporting green. v27 shipped Nix 2.22.

This is not theoretical. On logos-workspace#99 it produced two failures whose
builds are clean on a local Nix 2.34.6 with the identical pins:

  doctest logos-basecamp (both platforms)
      #include "logos_async_result.h" -- file not found, from an inconsistent
      header set assembled out of the stale parent lock. `nix build
      .#logos-basecamp` succeeds locally and the artifact carries the expected
      new-protocol symbols.
  doctest logos-tutorial (both platforms)
      6 remaining failures, all downstream of the basecamp build.

Same root cause forced a second workspace pin (logos-lidl) that would otherwise
have been unnecessary: cpp-sdk's own lidl pin was being discarded in favour of
the parent's.

v31 keeps the `extra_nix_config` interface, so this is a version bump only.
Applied to all three workflows so the behaviour is uniform -- a doc-test that
resolves differently in ci.yml than in tests-and-doctests.yml is its own trap.

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-08-08 15:49:23 -03:00
..