Files
Paul HittandClaude Opus 5.5 465a192d7f
ci / secret-sweep (pull_request) Successful in 13s
ci / image (pull_request) Successful in 2m1s
ci / vectors-head (pull_request) Failing after 1m0s
ci / unit-tests (pull_request) Failing after 1m2s
ci: move CI to Gitea Actions
Translates .gitlab-ci.yml to .gitea/workflows/ci.yml and deletes it. Kept:
secret sweep, the four-module unit run with --rerun-tasks against the
pinned vectors, the XML floors (595/405/68/515, 1580 total), vectors-head
(advisory).

Runs on mac1/mac2 inside a pinned toolchain image (ci/android-ci.Dockerfile:
Temurin 21.0.5, cmdline-tools 11076708, platform 35, build-tools 34.0.0 and
35.0.0, Node 22.11.0), never on pauls-imac. The `image` job pushes the tag
to git.extant2000.com when it is missing.

Vector and README links now point at git.extant2000.com/extant2000.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 10:03:52 -04:00

1.6 KiB

Why this repository pins flamenet-e2e

.e2e-ref is the commit of flamenet-e2e whose protocol vectors the unit-tests job checks against. AccountKdfTest, PQVectorTest and PublishedVectorsTest all read them.

It exists because a merge in that repository could stop all work in this one. flamenet-relay learned this the hard way: its jobs cloned main at HEAD, and the switch got thrown three times in twelve hours (flamenet-relay#56). Once it was a deadlock with no way out from inside either repository, that repo expected a change this one had not made, so every pipeline failed, including the pipeline for the branch that made it. See .e2e-ref.md there for the full account; the conclusion was that a pin makes that situation impossible rather than survivable.

A pin alone is worse than HEAD, though. The argument for HEAD is real: a client tested against a pinned old harness is tested against a pinned old spec, and if the vectors move and nothing says so, this suite quietly stops checking the protocol anybody is actually running. That is why vectors-head exists and is continue-on-error: true in .gitea/workflows/ci.yml.

Being behind is LOUD and NON-BLOCKING. Being broken is a hard stop. A red vectors-head means an update is waiting, not that anything is wrong.

Taking an update

One MR, both parts together:

  1. Put the new e2e commit in .e2e-ref.
  2. If the vectors themselves changed, read what changed before accepting it, a moved vector is a protocol change, and this app is one of the two ends that has to agree about it.