Files
logos-workspace/.github
Dario LipicarandClaude Opus 4.8 bc9824b6b0 ci(doctests): build doc-tests against the workspace snapshot (#96)
* fix: pin logos-libp2p-module's libp2p input to a SHA (deleted upstream branch)

The nightly bump's "Update flake.lock" step failed:

  error: unable to download
  'https://api.github.com/repos/vacp2p/nim-libp2p/commits/feat/cbind/xpr-decode':
  HTTP error 422

logos-libp2p-module pins its `libp2p` input to the upstream branch
`vacp2p/nim-libp2p/feat/cbind/xpr-decode`, which was deleted. Re-locking
that input (nix flake lock --update-input logos-libp2p-module) re-resolves
the branch ref and 422s, so the candidate is never staged.

Override `libp2p` at the workspace level to the exact SHA the branch last
pointed at (7c73484c — what the lock already resolved to; never merged to
master, reachable only by SHA). Behavior-preserving.

Because the nightly runs `ws sync-graph` BEFORE the lock update — which
regenerates the auto-inputs block of flake.nix — a hand-edited override
would be wiped every run. So the override is emitted by sync-graph itself
via a new `get_manual_url_overrides` helper (mirrors `get_manual_follows`),
and also applied to the committed flake.nix/flake.lock so master is
self-consistent now.

Stopgap until logos-libp2p-module SHA-pins libp2p in its own flake.nix.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* fix(ws): filter and sort transitive URL overrides in sync-graph

Address review feedback on get_manual_url_overrides emission:

- Filter each override iname against the downstream flake's declared_set
  (same guard the follows path uses) so a renamed/removed upstream input
  can't leave a stale override that adds a spurious lock node; warn on skip.
- Sort the kept overrides for deterministic, idempotent flake.nix output
  when a repo ever declares more than one override.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* test(ws): pin protocol + qt-sdk to the rejection re-exchange fix (validation)

Validation branch (not for merge). Re-pins two workspace inputs to the
rejection-driven token re-exchange work:

- logos-protocol -> 30857a7 (fix/rejection-driven-reexchange, logos-protocol#26):
  provider returns the structured unauthorized sentinel on a stale token; the
  consumer drops it, re-runs requestModule and retries once.
- logos-qt-sdk -> ceb47d0 (integration/reexchange-full): enforcement-test sentinel
  update (logos-qt-sdk#14) + async replica-caching test fix (#136).

`follows` propagates the logos-protocol override to every consumer, so only these
two inputs need re-pinning; all other repos stay at the base branch's pins. Run
the Tests-and-Doctests workflow on this ref for the end-to-end validation.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* ci(doctests): build doc-tests against the workspace snapshot

The doc-test legs already get --release-for for every submodule, but that
only pins WHICH COMMIT of a repo a spec builds. Nix resolves a repo flake
from ITS committed flake.lock, so the workspace's `follows` never reach a
doc-test: a suite happily builds a dependency at a commit this workspace
does not pin. 410 of 742 (consumer, workspace-dep) pairs across the 54
submodule locks currently disagree with the workspace pin.

That is not academic. The logos-wallet-module UI doc-test was red on both
platforms in every nightly for a week against a snapshot that already
pinned the fix (logos-standalone-app 155f21b) -- the doc-test cloned
logos-wallet-ui, whose own lock still pinned c8c0bece, and the UI never
reached Ready. The snapshot was right; only the resolution path was wrong.

Emit the snapshot as a {repo: {owner, rev}} pin map and hand it to
logos-doctest's new --workspace-pins. The harness then rewrites each
`nix build/run` of a workspace repo with --override-input flags pinning
its inputs to the snapshot, and checks out `git clone`d workspace repos
at the pinned commit instead of their default branch (a plain git URL is
not a flake ref, so nothing pinned it before -- logos-wallet-ui's master
has already moved two commits past the pin, and logos-storage-module
clones logos-storage-ui at a hardcoded feature branch).

This costs cache hits and makes the legs considerably slower. That is the
right trade for the one job whose entire purpose is validating a
snapshot; every repo's own CI is untouched.

Verified locally on aarch64-darwin: the wallet-ui doc-test, red in every
nightly, passes 3/3 with the pin map and no change to any repo's lock --
the clone is pinned to c3e0d0d and the token-race override is injected.

Requires logos-co/logos-doctest#7.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-23 08:56:01 -03:00
..