Repository navigation
Conversation
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 2 potential issues.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Want reviews to match your repository better? Bugbot Learning can learn team-specific rules from PR activity. A team admin can enable Learning in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit fb80b54. Configure here.
| - ../gateway/.envs/local/opensearch.env | ||
| - ../federation-shared.env | ||
| # Optional: federation/.env.local — FEDERATION_REGISTRY_CHALLENGE_TOKEN when sync serves | ||
| # well-known (see env.local.example). Domain verify/publish use sync internal API, not django. |
There was a problem hiding this comment.
Local sync never receives challenge env
High Severity
compose.local.yaml never injects FEDERATION_REGISTRY_CHALLENGE_TOKEN (or the other .env.local registry vars) into the flagship sync container. Peer compose files interpolate that variable; local compose only comments that .env.local is optional. Compose --env-file interpolates the YAML and does not become container env unless listed in env_file or environment.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit fb80b54. Configure here.
| *) | ||
| export FEDERATION_REGISTRY_PUBLISH_TOML="" | ||
| ;; | ||
| esac |
There was a problem hiding this comment.
Onboarding omits sync internal URL
High Severity
render-site-config.sh writes FEDERATION_SYNC_INTERNAL_URL into gateway django.env but never assigns a default (unlike FEDERATION_SYNC_HEALTH_URL). envsubst therefore emits an empty value, so FederationSyncClient.from_settings() raises and every Verify domain action fails as unavailable.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit fb80b54. Configure here.


Note
High Risk
Changes authentication boundaries (Bearer admin API), crypto signing, and SSRF-sensitive verify fetch on the sync path that Traefik exposes publicly.
Overview
Moves federation registry ownership from Django to federation sync: signed manifest publish, applicant domain verify (SSRF-safe well-known fetch), and public well-known routes now live on sync; the gateway keeps intake UI and DB state and delegates verify via
FederationSyncClient→POST /internal/registry/verifywithFEDERATION_SYNC_ADMIN_TOKEN.Sync gains
[registry.publish](Ed25519 signing, Docker volumes for manifest/cache),/.well-known/sds-federation.jsonand/.well-known/sds-registry/*, plus CLIsds-federation-registry. ApplicantFEDERATION_REGISTRY_CHALLENGE_TOKENis set on whoever serves well-known (sync.env.peer/.env.local, not mothershipdjango.env). Gateway drops the well-known URL route and django-side verify/fetch/sign settings; staff Record publish only updates DB after sync publish. Compose, Traefik well-known routing,federation-doctorregistry checks, and docs are updated accordingly.Reviewed by Cursor Bugbot for commit fb80b54. Bugbot is set up for automated code reviews on this repo. Configure here.