Commit Graph
4 Commits
Author SHA1 Message Date
Thore Cimbal f4f0f997bb docs(issues): close #0060 - group call verified with federation closed
sorb tested a group call after the restart and it works. That proves what curl could
not: the full OpenID token check through /_matrix/federation/v1/openid/userinfo still
completes with federation closed, so the whitelist genuinely does not reach that
endpoint.

It is also where option C finally died. Blocking /_matrix/federation at the edge would
have removed exactly this path, and nothing before the call would have shown it.
2026-08-19 12:00:00 +00:00
Thore Cimbal 15134d1846 docs(adr): ADR-0021 - federation closed, and why the tighter option was wrong
sorb chose C, fully disabling federation at the edge. Building it showed that would
have killed group calls: lk-jwt-service verifies OpenID tokens through
/_matrix/federation/v1/openid/userinfo and reaches it over the public name, so a path
block on /_matrix/federation is the mrtc outage again with a different cause. C was
dropped and B implemented.

The ADR records the measurement the decision rests on - zero destinations, zero remote
users, zero rooms with outside participation in four months - and the trap, so nobody
completes C later as a quick follow-up. Doing that safely means binding the auth
service to Synapse in-cluster first, which is its own undertaking with a call
acceptance.

Also recorded because it nearly slipped through: Flux applied the ConfigMap while
Synapse kept running its old config from 2026-08-01. The config is rendered at pod
start, so the change was inert until a restart - the same class as #0044. Verified
afterwards inside the running process rather than in the ConfigMap, with the client
API and the OpenID endpoint still answering.
2026-08-19 12:00:00 +00:00
Thore CimbalandClaude Opus 5 7a14adb015 docs(issues): #0060 - price the federation decision instead of debating it
The question sat open since July because nobody knew what closing would cost. It is
now measured: zero. No destinations, no remote users, no rooms with outside
participation, across four months of operation - while the federation API answers
HTTP 200 from the public internet, since the well-known delegation routes federation
over 443 and port 8448 being shut changes nothing.

So the trade is not reach against safety but an unused capability against Synapse's
largest remote-facing surface. Recommended B, an empty federation_domain_whitelist:
one line, versioned, reversible in minutes, and honest about what it does not do -
the endpoints keep answering, so the server becomes unengaged rather than invisible.

Decision remains sorb's.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-19 12:00:00 +00:00
Thore CimbalandClaude Opus 5 a1def8666e feat(issues): adopt the component trackers — one backlog, one numbering (ADR-0019)
ADR-0012 made docs/issues/ canonical for the management scope only and left
gitops, ThreadNet-Web and threadnet-call on GitLab "until the component adopts".
That split produced exactly what it invited: two numbering worlds where
management#20 and gitops#20 are different issues, drift nobody had to answer for
(gitops#61 carried no milestone since 2026-08-11), and component backlogs that
host sessions without lab access cannot read at all.

The 46 open component issues are now files 0056-0101. The file id is the
group-wide identifier; provenance lives in the frontmatter (new field `projekt`
plus gitlab_iid) and in the filename, so "gitops#61" still finds 0091. Bodies are
copied verbatim; comments and history stay on GitLab, as with the 2026-08-11
management import.

Both scripts learned the second dimension: spiegel_issues.py routes each file to
its origin project, reopens issues that are open in the repo but closed on the
board, and writes the new iid back after creating one; gruppenpruefung.py checks
drift across all four trackers instead of management alone. What the mirror
cannot decide stays a finding, not a silent state.

Two things needed a hand, both recorded in the files: gitops#61 had no milestone
(M1 - it is a live account-takeover path) and carried two area labels where the
schema holds one. The Gitea migration footers in the imported bodies point at
decommissioned trackers; their links are removed, the provenance sentence stays.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-18 12:00:00 +00:00