From 2d082373bdb39dd8b325ad05a982ea5b0c8ed308 Mon Sep 17 00:00:00 2001 From: goodboy Date: Mon, 17 Aug 2026 14:24:44 -0400 Subject: [PATCH] Add a `--tpt-proto=tipc` CI matrix leg MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plan 01 §7.3's last item. The module ships w/ the standard ubuntu kernel package but is NOT loaded by default, so the leg gets a gated `sudo modprobe tipc` step plus a verify that asserts `TIPCAddress.is_available()` before the suite runs — i.e. a missing module fails w/ an actionable line instead of a few hundred connect timeouts. Deats, - `tipc` added to the `tpt_proto` matrix axis, and excluded on `macos-latest` bc `AF_TIPC` is a linux-kernel proto that doesn't exist on darwin at all. - `continue-on-error` is scoped to just this leg via `${{ matrix.tpt_proto == 'tipc' }}` — GH's runners have never been asked to `modprobe` for us, so it lands NON-blocking until it's had a few green runs. Drop the gate then. - if the runners do refuse, the documented fallback is a container job w/ `--cap-add NET_ADMIN`. Cross-node (bearer) TIPC still can't be CI'd; that stays the manual smoke test in `examples/multihost/tipc_cluster/README.md`. Partially addresses #420. (this patch was generated in some part by `claude-code` using `claude-opus-5` (`anthropic`)) --- .github/workflows/ci.yml | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8bb1297c..b5e49ffe 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -92,6 +92,12 @@ jobs: timeout-minutes: 16 runs-on: ${{ matrix.os }} + # XXX the `tipc` leg stays NON-blocking until the `modprobe` + # step below is proven stable on GH's runners; flip this off + # once it's had a few green runs. See plan 01 §7.3 in + # `ai/tpt-backends/01_tipc_backend.md`. + continue-on-error: ${{ matrix.tpt_proto == 'tipc' }} + strategy: fail-fast: false matrix: @@ -117,6 +123,7 @@ jobs: tpt_proto: [ 'tcp', 'uds', + 'tipc', ] # https://github.com/orgs/community/discussions/26253#discussioncomment-3250989 exclude: @@ -124,6 +131,11 @@ jobs: - os: macos-latest tpt_proto: 'uds' + # XXX `AF_TIPC` is a linux-kernel protocol; the address + # family doesn't exist on darwin at all. + - os: macos-latest + tpt_proto: 'tipc' + steps: - uses: actions/checkout@v4 @@ -150,6 +162,20 @@ jobs: - name: List deps tree run: uv tree + # XXX `AF_TIPC` needs its kernel module loaded! It ships + # with the standard ubuntu kernel package but is NOT loaded + # by default, so a bare `--tpt-proto=tipc` run would + # otherwise fail at the first `.bind()`. + # + # If GH's runners ever refuse the `modprobe`, the fallback + # is a container job w/ `--cap-add NET_ADMIN`. + - name: 'Load the `tipc` kernel module' + if: matrix.tpt_proto == 'tipc' + run: | + sudo modprobe tipc + tipc node get address + uv run python -c "from tractor.ipc._tipc import TIPCAddress; ok, why = TIPCAddress.is_available(); assert ok, why; print('AF_TIPC available')" + - name: Run tests run: > uv run