• v3.0.0 73a93ac8dc

    Activity-Relay 3.0.0
    All checks were successful
    Container / Container and Caddy validation (push) Successful in 35s
    Debian Package / Debian package validation (push) Successful in 1m10s
    Test / Go, Redis, and Python validation (push) Successful in 4m0s
    Stable

    alan released this 2026-09-03 15:10:29 +00:00 | 21 commits to master since this release

    Signed by alan
    SSH key fingerprint: SHA256:yvtkLe2vkdG0Y1CCxra56JR6gjOJFURf52LUTVpWqPw

    Activity-Relay v3.0.0

    • Application version: 3.0.0
    • Debian package version: 3.0.0-1
    • Accepted release-candidate baseline: 3.0.0-rc2
    • Stable outbound-signature default: dual

    Stable scope

    Activity-Relay 3.0 promotes the accepted 3.0 release-candidate line to stable
    after mixed-profile interoperability, two-relay isolation, and Activity-Relay
    Directory lifecycle acceptance. The stable preparation selects
    destination-aware dual as the omitted/default outbound HTTP-signature policy.
    Explicit legacy and rfc9421 modes remain supported for fixed-profile
    operation and troubleshooting.

    The 3.0 line adds RFC 9421 HTTP Message Signatures and RFC 9530
    Content-Digest alongside the established Fediverse Signature profile,
    bounded destination-aware negotiation, stable per-delivery retry profile
    selection, strict inbound modern-signature validation, and the opt-in
    Activity-Relay Directory version 1 client and scheduler.

    Compatibility and upgrade

    The stable promotion does not rotate or replace the relay actor, #main-key,
    public endpoints, Redis instance, subscriptions, publishers, receiver-health
    history, or operator-owned website content. Existing queued task formats remain
    readable. Back up the actor key, Redis persistence, configuration, and
    operator-owned web content before upgrading according to the normal deployment
    procedure.

    Native deployments use:

    activity-relay_3.0.0-1_amd64.deb
    

    Container deployments use the stable 3.0.0 image/tag after registry
    publication. Release acceptance is based on the canonical multi-architecture OCI
    archive built by Forgejo; do not rebuild a second release image from the tag.

    HTTP-signature behavior

    When OUTBOUND_SIGNATURE_PROFILE is omitted, 3.0 uses dual. Negotiation keeps
    fetch and delivery evidence separate, permits only the bounded GET compatibility
    fallback defined by the implementation, and does not resend a delivery POST
    under a different signature grammar. Operators that require a fixed profile may
    set legacy or rfc9421 explicitly.

    The stock NodeBB 4.15.1 forced-RFC-9421 Announce rejection tracked in upstream
    NodeBB issue #14732 remains classified as receiver-specific interoperability
    unless new wire evidence identifies an Activity-Relay defect. The accepted
    mixed-profile path does not require Activity-Relay to block stable release on
    that receiver behavior.

    Activity-Relay Directory

    The Directory client remains opt-in. Stable acceptance against
    directory.argentwolf.org included:

    • schema-3 Directory status consumption while retaining schema-2 compatibility;
    • simultaneous healthy public projection of two independent relays;
    • natural scheduler-driven heartbeat refresh from both relays;
    • authenticated unregister with durable local suppression;
    • verified Directory absence while the test relay remained disabled; and
    • re-enable plus scheduler-driven registration returning the test relay to a
      healthy public projection.

    For Compose deployments that use the stock single-file config.yml bind, an
    atomic host-file replacement changes the host inode while an existing container
    can remain attached to the old inode. Follow docs/DIRECTORY-CLIENT.md: persist
    the desired enabled state on the host, recreate the API/server before trusting
    scheduler state, keep the public actor/key endpoint online during unregister,
    and recreate workers afterward so every long-running container observes the
    current bind. File-backed unregister also requires writable access to the host
    configuration directory so the CLI can create its sibling temporary/backup
    files and perform atomic replacement.

    Accepted interoperability

    The 3.0 stable decision is based on mixed-profile testing with Mastodon,
    Friendica, WordPress, NodeBB, and the independent two-relay topology. The
    release retains the no-reflection invariant and destination-aware signature
    selection while preserving explicit legacy compatibility.

    Release artifacts and authority

    Forgejo is the source and release authority. The manual canonical release
    workflow requires an exact reviewed commit, exact version, and explicit build
    confirmation. It emits one checksummed release bundle containing:

    • the Ubuntu amd64 Debian package;
    • CycloneDX SBOM;
    • linux/amd64 + linux/arm64 OCI archive;
    • BUILD-METADATA.txt;
    • RELEASE-NOTES.md; and
    • SHA256SUMS.

    The accepted canonical bytes are the release bytes. Tagging, release
    publication, registry publication, downstream mirroring, and deployment are
    separate operator-controlled gates; none authorizes rebuilding the accepted
    Debian package or OCI archive.

    Downloads