v0.99.14
Fixed
- Normalize source-distribution member order, ownership, modes, and timestamps,
plus gzip metadata, against the commitSOURCE_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
:subscribedecides 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
includesA2AClientError; 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-v8to 4.1.10 inclients/vscodeto
clear GHSA-mh99-v99m-4gvg (brace-expansion DoS) without a broken overrides pin. -
Bump
postcssto 8.5.23 inclients/jsandclients/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/procis 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-servenow refuses a non-loopback bind that enables
--bearer-authover 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-loopbackremains the single explicit override for both the
unauthenticated and plaintext-bearer off-loopback postures. Pure bind
matrix lives ina2a_bind_exposure.a2a_bind_problems. -
synapse a2a-servesupports native HTTPS via--tls-certfileand
--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 printshttps://…. -
At-rest and payload key loaders (
load_key_file,load_payload_key) now
read secret bytes throughsecure_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; directfederation relaycan
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_httpaccept an optional
ssl_contextand wrap the listening socket for native HTTPS. -
synapse doctorA2A 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-urlscheme disagrees with
native TLS.
Changed
- Document permanent policy: advisory Windows
cross-osproof is the NT
security-floor pack; full alphabetical Windows suite remains hang-prone
and is not a required gate (Linuxciowns full coverage). - Advisory CI step and
tools/report_test_taxonomy.pypublish counts of
docs_contract/real_hubmodules 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