Skip to content

v0.99.14

Choose a tag to compare

@github-actions github-actions released this 26 Jul 07:18

Fixed

  • Normalize source-distribution member order, ownership, modes, and timestamps,
    plus gzip metadata, against the commit SOURCE_DATE_EPOCH. Trusted publish
    now builds the raw sdist outside the release payload and emits a safe,
    byte-reproducible archive without extracting untrusted member paths.
  • HTTP :subscribe decides terminal refusal from the final durable
    event snapshot (not the first history event), restoring CONFLICT problem
    JSON for completed/failed tasks while keeping ordered durable replay on
    the bridge API after multi-process restart.
  • Payload-key error mapping: POSIX leaf-symlink opens (ELOOP) still report
    "must not be a symlink"; Windows directory opens that surface as
    "cannot open" report "not a regular file".
  • Surface taxonomy and public docs list a2a-client; frozen error registry
    includes A2AClientError; coverage/skip ledgers cover new A2A modules
    and owner-only file tests; mTLS fixture certs carry Authority Key
    Identifier for Python 3.13 OpenSSL.

Security

  • Add an operable, audited multi-hub serving-policy file with optional client-CA
    verification, and paired owner-only client identities for pinned watch, claim,
    operator-relay, and dead-letter routes. Partial identities, unpinned mTLS
    routes, unsafe files, unknown grants, and revoked peers fail closed.

  • Upgrade vitest / @vitest/coverage-v8 to 4.1.10 in clients/vscode to
    clear GHSA-mh99-v99m-4gvg (brace-expansion DoS) without a broken overrides pin.

  • Bump postcss to 8.5.23 in clients/js and clients/vscode (Dependabot
    GHSA path-traversal on previous source-map auto-loading; patched from
    8.5.18+).

  • Shell integration treats a default-shape */terminal-<pid> auto identity
    as foreign when /proc is missing (fail-closed re-mint), instead of
    fail-open keeping a possibly layered foreign seat (DEL-INT-C class).
    Provider sessions (SYN_TMUX_PROVIDER=1) and manual identities are
    unchanged. Applies to Bash, Zsh, and Fish hooks.

  • synapse a2a-serve now refuses a non-loopback bind that enables
    --bearer-auth over plaintext HTTP (hub R4 parity). The bearer and
    protected A2A traffic would otherwise ride the LAN in the clear. Prefer a
    loopback bind behind a TLS-terminating reverse proxy or native HTTPS;
    --insecure-off-loopback remains the single explicit override for both the
    unauthenticated and plaintext-bearer off-loopback postures. Pure bind
    matrix lives in a2a_bind_exposure.a2a_bind_problems.

  • synapse a2a-serve supports native HTTPS via --tls-certfile and
    --tls-keyfile (same TLSv1.2+ server context builder as the hub). When
    native TLS is active, the off-loopback plaintext-bearer refuse is cleared
    and the listen banner prints https://….

  • At-rest and payload key loaders (load_key_file, load_payload_key) now
    read secret bytes through secure_path.read_owner_only_file_bytes: open
    without following a leaf symlink, prove the owner-only floor, and read from
    the same descriptor so a second-open TOCTOU cannot swap key material under
    the handle. Windows still uses a path-based NT DACL proof (Win32 security
    APIs are path-keyed); content always comes from the held descriptor.

Added

  • Hub CLI wiring for --multihub-serving-policy, --claim-peer-pin, and
    independent --relay-peer/token/pin routes; direct federation relay can
    likewise pin the server and present a client certificate.

  • Multi-hub serving policy, federation-store, and client-CA inputs now require
    owner-only descriptor custody; TLS consumes captured CA bytes without a
    second path open.

  • A2A edge: make_a2a_http_server / serve_a2a_http accept an optional
    ssl_context and wrap the listening socket for native HTTPS.

  • synapse doctor A2A bind-posture diagnosis (check_a2a_bind_posture) with
    --a2a-bind-host, --a2a-bearer-auth, --a2a-tls,
    --a2a-insecure-off-loopback, and --a2a-endpoint-url; also runs under
    --a2a-policy. Serve warns when --endpoint-url scheme disagrees with
    native TLS.

Changed

  • Document permanent policy: advisory Windows cross-os proof is the NT
    security-floor pack; full alphabetical Windows suite remains hang-prone
    and is not a required gate (Linux ci owns full coverage).
  • Advisory CI step and tools/report_test_taxonomy.py publish counts of
    docs_contract / real_hub modules and e2e vs design_docs file names
    for audit honesty (no fail gate).
  • Document hub warm-start reconnect storms (accept-queue / Recv-Q
    saturation after mass waiter re-arm) in deployment and
    troubleshooting guides.

Artifact checksums (SHA-256)

a5a207d525f0c5bb2ab5df8b505de618c73383d556ecfe3e0339e4ab4798848b  synapse_channel-0.99.14-py3-none-any.whl
92fb0cfe8c2c4f4ec90e74a65fbd5fcf3983c8cf265af5a6f143806e9a3fc37a  synapse_channel-0.99.14.tar.gz
1ca1fdb0c0e8b7f751450bfd63c1c421b3e67f489b99d7815be3f25372510e78  synapse-channel-v0.99.14-sbom.cdx.json