Skip to content

Make mrwk.online the canonical domain#652

Open
ramimbo wants to merge 2 commits into
mainfrom
maintainer/mrwk-online-domain
Open

Make mrwk.online the canonical domain#652
ramimbo wants to merge 2 commits into
mainfrom
maintainer/mrwk-online-domain

Conversation

@ramimbo
Copy link
Copy Markdown
Owner

@ramimbo ramimbo commented May 30, 2026

Summary

  • Make https://mrwk.online the canonical MergeWork public host.
  • Make https://api.mrwk.online and https://mcp.mrwk.online the canonical API and MCP hosts.
  • Keep legacy mrwk.ltclab.site, api.mrwk.ltclab.site, and mcp.mrwk.ltclab.site hosts served and documented for existing links and clients.
  • Update docs, templates, helper-script defaults, deploy env example, and URL assertions.

This is maintainer infrastructure work and is not submitted for a bounty.

Deployment Notes

Before deploying the canonical switch, update production GitHub OAuth so https://mrwk.online/auth/github/callback is accepted. After deploy, set production MERGEWORK_PUBLIC_BASE_URL=https://mrwk.online and restart the app plus treasury executor so generated OAuth redirects and bounty finalization comments use the new host.

The GitHub webhook can remain on the legacy API URL because the legacy endpoint stays functional. It can optionally be moved later to https://api.mrwk.online/webhooks/github after the app deploy is verified.

Validation

  • ./.venv/bin/python scripts/check_agents.py
  • ./.venv/bin/python -m ruff format --check .
  • ./.venv/bin/python -m ruff check .
  • ./.venv/bin/python -m mypy app
  • ./.venv/bin/python scripts/docs_smoke.py
  • ./.venv/bin/python -m pytest (542 passed)
  • sudo -n docker build -t mergework:mrwk-online-check .
  • sudo -n docker run --rm -v "$PWD/Caddyfile:/etc/caddy/Caddyfile:ro" caddy:2.8 caddy validate --config /etc/caddy/Caddyfile

Summary by CodeRabbit

  • New Features

    • MergeWork is now served from the primary domain mrwk.online, with API at api.mrwk.online and MCP at mcp.mrwk.online; legacy domains remain available for compatibility.
  • Documentation

    • README, guides, runbook, and examples updated to reference the new primary domains and note legacy-compatible endpoints.
  • Tests

    • Tests added/updated to validate canonical hostnames, redirects, and default API host values.

Review Change Stack

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 30, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 868a8ca5-09d4-4d5f-8db6-59f9111e8985

📥 Commits

Reviewing files that changed from the base of the PR and between 9ff0f64 and 300403c.

📒 Files selected for processing (2)
  • README.md
  • docs/admin-runbook.md

📝 Walkthrough

Walkthrough

Production domain migrates from legacy mrwk.ltclab.site to new mrwk.online across configuration, web server routing, application service URLs, frontend templates, and user documentation. Legacy hosts remain routed and documented for backward compatibility. Configuration defaults, hub projects, templates, and all tests updated accordingly.

Changes

Production Domain Migration to mrwk.online

Layer / File(s) Summary
Configuration defaults and environment setup
.env.example, app/config.py, scripts/claim_inventory.py, scripts/submission_quality_gate.py
Environment variable and module-level constants (MERGEWORK_PUBLIC_BASE_URL, DEFAULT_API_HOST, public_base_url) default to canonical https://mrwk.online and https://api.mrwk.online.
Web server domain routing
Caddyfile
Caddy site block expanded to include mrwk.online, www.mrwk.online, api.mrwk.online, mcp.mrwk.online alongside legacy *.ltclab.site entries.
Hub project definitions and application URLs
app/hub.py, app/templates/base.html, app/templates/docs.html, app/templates/hub.html
Hub project href values and MRWK links in templates updated to use mrwk.online, api.mrwk.online, and mcp.mrwk.online.
User documentation, API examples, and admin guides
README.md, docs/agent-guide.md, docs/api-examples.md, docs/paid-bounties.md, docs/admin-runbook.md
Canonical endpoint documentation switched to mrwk.online hosts; legacy *.ltclab.site hosts are documented in explicit “legacy-compatible” sections. OAuth callback and curl examples updated.
Documentation validation enforcement
scripts/docs_smoke.py
Required-phrase checks extended to enforce canonical mrwk.online URLs and legacy-compatible mentions in docs/paid-bounties.md and docs/api-examples.md.
Test suite updates
tests/test_api_mcp.py, tests/test_caddyfile.py, tests/test_claim_inventory.py, tests/test_docs_public_urls.py, tests/test_hub.py, tests/test_public_routes.py, tests/test_submission_quality_gate.py
API redirect tests, host-specific page rendering, Caddyfile host assertions, docs validation tests, hub context tests, and module-default assertions updated to expect canonical mrwk.online endpoints; new tests added for Caddyfile host list and canonical API host defaults.

Possibly Related PRs

  • ramimbo/mergework#325: Originally implemented scripts/submission_quality_gate.py that this PR now updates to use canonical https://api.mrwk.online default.
  • ramimbo/mergework#379: Introduced hub context and project list constants in app/hub.py that this PR updates to point to new canonical domains.
  • ramimbo/mergework#397: Related changes to scripts/docs_smoke.py required-phrase checks that overlap with this PR's docs validation updates.
🚥 Pre-merge checks | ✅ 6
✅ Passed checks (6 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely names the main change: making mrwk.online the canonical domain, which directly matches the core objective across all file modifications.
Description check ✅ Passed The description includes a comprehensive summary of changes, deployment notes, validation steps performed, and explicitly states this is maintainer work not submitted for bounty, meeting template requirements.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Mergework Public Artifact Hygiene ✅ Passed PR contains only domain URL updates. No investment, price, cash-out, or fabricated payout claims added. MRWK described correctly as native ledger coin.
Bounty Pr Focus ✅ Passed PR #652 contains no "Bounty #N" or "Refs #N" reference; the custom check applies only when such references exist, so it is not applicable to this PR.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2


ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: b132f0ce-f570-4a40-b150-47088b4b902c

📥 Commits

Reviewing files that changed from the base of the PR and between 41c2e64 and 9ff0f64.

📒 Files selected for processing (22)
  • .env.example
  • Caddyfile
  • README.md
  • app/config.py
  • app/hub.py
  • app/templates/base.html
  • app/templates/docs.html
  • app/templates/hub.html
  • docs/admin-runbook.md
  • docs/agent-guide.md
  • docs/api-examples.md
  • docs/paid-bounties.md
  • scripts/claim_inventory.py
  • scripts/docs_smoke.py
  • scripts/submission_quality_gate.py
  • tests/test_api_mcp.py
  • tests/test_caddyfile.py
  • tests/test_claim_inventory.py
  • tests/test_docs_public_urls.py
  • tests/test_hub.py
  • tests/test_public_routes.py
  • tests/test_submission_quality_gate.py

Comment thread docs/admin-runbook.md Outdated
Comment thread README.md Outdated
@Zejia
Copy link
Copy Markdown
Contributor

Zejia commented May 30, 2026

Reviewed current head 300403cc1b1062cc78aa709ed1b1921a8b76ce86.

Evidence:

  • Inspected the canonical-domain changes across .env.example, Caddyfile, app/config.py, app/hub.py, public templates, docs, helper-script defaults, and URL/default tests.
  • Verified the change keeps legacy mrwk.ltclab.site, api.mrwk.ltclab.site, and mcp.mrwk.ltclab.site documented and served while switching new defaults and examples to mrwk.online / api.mrwk.online / mcp.mrwk.online.
  • Verified the OAuth callback documentation now names the exact new callback and keeps the legacy callback note.
  • Fetched current origin/main at 41c2e64d5cc666ac4850631fc37bac609b1e7c3e; git merge-tree --write-tree origin/main HEAD completed cleanly (c9ac44082e13b6fea5fd3d39e93458fb031bb7c6).
  • Live unauthenticated smoke checks: https://mrwk.online returned HTTP 200 with expected security headers; https://api.mrwk.online/api/v1/status returned current public status JSON.

Validation:

  • ./.venv/bin/python scripts/docs_smoke.py -> docs smoke ok.
  • ./.venv/bin/python -m pytest tests/test_api_mcp.py::test_trailing_slash_redirects_keep_forwarded_https_scheme tests/test_api_mcp.py::test_host_specific_homepages tests/test_api_mcp.py::test_docs_page_lists_live_ltclab_urls tests/test_caddyfile.py tests/test_claim_inventory.py::test_claim_inventory_uses_canonical_api_host_by_default tests/test_docs_public_urls.py tests/test_hub.py tests/test_public_routes.py::test_docs_page_marks_static_github_links_as_untrusted tests/test_public_routes.py::test_ltc_lab_header_marks_github_nav_link_as_untrusted tests/test_public_routes.py::test_hub_marks_static_service_links_as_untrusted tests/test_public_routes.py::test_ltc_lab_project_links_are_marked_untrusted tests/test_submission_quality_gate.py::test_submission_quality_gate_uses_canonical_api_host_by_default -q -> 47 passed.
  • ./.venv/bin/ruff check app/config.py app/hub.py scripts/claim_inventory.py scripts/docs_smoke.py scripts/submission_quality_gate.py tests/test_api_mcp.py tests/test_caddyfile.py tests/test_claim_inventory.py tests/test_docs_public_urls.py tests/test_hub.py tests/test_public_routes.py tests/test_submission_quality_gate.py -> passed.
  • git diff --check origin/main...HEAD -> clean.
  • GitHub Quality, readiness, docs, and image checks -> success.

Verdict: no local blocker found. The only merge-readiness caveat I saw is the still-pending CodeRabbit status context on GitHub, so maintainers should wait for or dismiss that according to branch policy. No private data, credentials, wallet material, production mutation, price/exchange/bridge/off-ramp claims, or fabricated payout claims used.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants