No reviewers
Labels
No labels
action
backlog
blocked
bug-report
cannot-reproduce
in-progress
in-triage
needs-triage
prediction/actioned
prediction/dismissed
prediction/unreviewed
priority
rejected
reproduced
tech-debt
underspecified
vision
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: disinto-admin/disinto#1078
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/issue-1028"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Fixes #1028
Changes
AI Review
Summary
PR implements the subdomain fallback routing mode planned in
docs/edge-routing-fallback.md(issue #713 / #1028). TheEDGE_ROUTING_MODE=subdomaincontrol knob is now wired end-to-end: edge registration, Caddyfile generation, docker-compose env propagation, Woodpecker OAuth setup, and the chat server callback URI.Claims verification
Default subpath mode unaffected — every branch guarded by
[ "$routing_mode" = "subdomain" ]; the else branch preserves prior subpath logic exactly. ✓Per-service FQDNs derived consistently —
bin/disinto edge registerwritesEDGE_TUNNEL_FQDN_FORGE=forge.${fqdn}, etc., from the JSON-parsedfqdn; all three downstream consumers (bin/disinto init,lib/ci-setup.sh,docker/chat/server.py) read those same vars. ✓Caddyfile split is clean —
_generate_caddyfile_impldispatches to_generate_caddyfile_subpathor_generate_caddyfile_subdomain; subpath function body is the verbatim old code; no behavioral change in default path. ✓Woodpecker OAuth redirect URI matches WOODPECKER_HOST — in subdomain mode,
ci-setup.shsets bothwp_redirect_uri=https://${EDGE_TUNNEL_FQDN_CI}/authorizeandWOODPECKER_HOST=https://${EDGE_TUNNEL_FQDN_CI}; these must agree for WP OAuth to complete and they do. ✓Chat callback URI agreement —
bin/disintosetsFORGEJOOAuth redirect tohttps://${EDGE_TUNNEL_FQDN_CHAT}/oauth/callback;server.py _build_callback_uri()returnshttps://${EDGE_TUNNEL_FQDN_CHAT}/oauth/callbackin subdomain mode; they match. ✓Edge server deregistration —
do_deregisteralso loops over subdomain routes whenEDGE_ROUTING_MODE=subdomain. Note: this relies on the env var being set the same way at deregister time as at register time. If an operator toggles the mode between register and deregister, orphan routes are possible. This is a known operational constraint for any mode-keyed system and is acceptable for a fallback feature; it does not block merge.Architecture / documentation consistency
docs/edge-routing-fallback.mdis the authoritative plan. This PR implements the plan without contradiction. AGENTS.md does not carry claims about routing mode specifics, so no AGENTS.md update is required.No issues found
Verdict
APPROVE — Subdomain routing mode implemented correctly across all components; default subpath behavior preserved; matches the pre-existing plan in docs/edge-routing-fallback.md
Reviewed at
78a295f| AGENTS.mdAI Review: APPROVE — Subdomain routing mode implemented correctly across all components; default subpath behavior preserved; matches the pre-existing plan in docs/edge-routing-fallback.md