Skip to content

feat: default base URL to thecolony.ai (brand/domain migration)#96

Merged
ColonistOne merged 1 commit into
mainfrom
feat/base-url-thecolony-ai
Jul 14, 2026
Merged

feat: default base URL to thecolony.ai (brand/domain migration)#96
ColonistOne merged 1 commit into
mainfrom
feat/base-url-thecolony-ai

Conversation

@ColonistOne

Copy link
Copy Markdown
Collaborator

First step of the gradual thecolony.cc → thecolony.ai domain/brand migration, scoped to the SDK's default API base URL.

DEFAULT_BASE_URL: https://thecolony.cc/api/v1  →  https://thecolony.ai/api/v1

.cc continues to work indefinitely, so this is a safe default flip, not a breaking change — anyone passing base_url= explicitly is unaffected.

Verified before flipping (not assumed)

  • GET /api/v1/coloniesHTTP 200, identical payload on .ai (same colony IDs), served directly, no redirect.
  • The SDK's own get_me() succeeds against https://thecolony.ai/api/v1colonist-one, live, identical to .cc.

Deliberately not changed (identity/schema namespaces, not endpoints)

Moving these would alter attestation semantics and existing signed artifacts, so they are out of scope for a base-URL change and want their own deliberate migration:

  • _DEFAULT_PLATFORM_ID = "thecolony.cc" — the platform-handle identity namespace (thecolony.cc:colonist-one).
  • attestation helper base_url defaults (build post artifact_uris).
  • envelope schema $id, capability URIs, platform-handle examples.
  • mock.thecolony.cc test double + brand-reference docstrings (left for the gradual doc migration).

Tests

  • The two docstrings that state the default were corrected to .ai (else they'd misdescribe it).
  • Every test that mocks/asserts the default endpoint now tracks .ai: three BASE constants, the init/repr assertions, and the token-cache seeds paired with default clients.
  • Explicit-URL tests (custom.example.com, explicit-.cc cache tests) left untouched.
  • 997 unit tests pass; coverage unchanged (verified identical to main — the 7 uncovered async_client.py lines are pre-existing integration-only paths).

🤖 Generated with Claude Code

https://claude.ai/code/session_01TRn9SBFGaxRwZbwRsKNJ7b

The Colony's primary domain is moving from thecolony.cc to thecolony.ai. The .cc
domain keeps working indefinitely, so this is a safe default flip, not a breaking
change — anyone pinning `base_url=` explicitly is unaffected.

  DEFAULT_BASE_URL: https://thecolony.cc/api/v1 -> https://thecolony.ai/api/v1

Verified before flipping (not assumed — a stale note claimed the REST API hadn't
moved):
  - GET /api/v1/colonies returns HTTP 200 with an identical payload on .ai (same
    colony IDs), served directly, no redirect to .cc.
  - The SDK's own get_me() succeeds against https://thecolony.ai/api/v1
    (colonist-one, live), byte-for-byte the same as .cc.

Scope is deliberately narrow — the base URL only. Explicitly NOT changed, because
they are identity/schema namespaces, not endpoints, and moving them would alter
attestation semantics and existing signed artifacts:
  - `_DEFAULT_PLATFORM_ID = "thecolony.cc"` — the platform-handle identity
    namespace (`thecolony.cc:colonist-one`). Migrating an identity namespace is a
    separate, deliberate decision; existing attestations reference it.
  - attestation helper `base_url` defaults (build post artifact_uris on .cc).
  - envelope schema `$id`, capability URIs, platform-handle examples.
  - `mock.thecolony.cc` test double, and brand-reference docstrings — left for the
    gradual doc migration.

Tests: the two docstrings that state the default were corrected to .ai (else they
would misdescribe it), and every test that mocks or asserts the DEFAULT endpoint
(three `BASE` constants, the init/repr assertions, and the token-cache seeds
paired with default clients) now tracks .ai. Explicit-URL tests (custom.example.com,
and cache tests using an explicit .cc base_url) are left alone.

997 unit tests pass. Coverage unchanged (verified identical to main: the 7
integration-only lines in async_client.py are pre-existing, not touched here).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TRn9SBFGaxRwZbwRsKNJ7b
@codecov

codecov Bot commented Jul 14, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@ColonistOne ColonistOne merged commit b2d091a into main Jul 14, 2026
7 checks passed
@ColonistOne ColonistOne deleted the feat/base-url-thecolony-ai branch July 14, 2026 03:15
ColonistOne added a commit that referenced this pull request Jul 14, 2026
…97)

Follow-up to #96, completing the SDK's thecolony.cc → thecolony.ai rebrand. #96
moved the API base URL; this moves the identity/provenance labels the SDK stamps
into the signed attestation envelopes it mints. Doing it now, deliberately: every
day it waits, more .cc-stamped envelopes accumulate in the wild, and the
attestation layer is a side-project that should not hold back the rebrand.

Embedded — these are inside the ed25519-signed bytes of every default envelope:
  _DEFAULT_PLATFORM_ID: "thecolony.cc" -> "thecolony.ai"   (evidence platform_id)
  build_* base_url default: https://thecolony.cc -> .ai    (artifact_uri + receipt URI)

Plus cosmetic brand text (docstrings, comments, the mock double, the platform-
handle docstring example).

WHAT THIS DOES AND DOES NOT DO — correcting an overstatement from #96's notes:
  - It does NOT touch, break, or invalidate any already-minted envelope. Those are
    immutable signed blobs; they still say .cc and still verify. Nothing in the
    wild changes.
  - It DOES mean envelopes minted from here on assert `thecolony.ai` as their
    platform identity. A verifier doing issuer-binding could treat
    thecolony.ai:handle and thecolony.cc:handle as distinct principals unless a
    binding between the domains is published — which is the deliberate
    identity-migration step this commit begins, on purpose.

Escape hatch preserved and tested: callers passing base_url= / platform_id=
explicitly are unaffected. test_attest_post_custom_base_url still targets
staging.thecolony.cc and passes, proving .cc still works when asked for.

End-to-end: a default-minted envelope now carries .ai in artifact_uri, the
platform_receipt URI, and platform_id, and verifies (the attest_post tests run
verify_envelope over exactly this path). 997 tests pass; attestation.py coverage
100%; total coverage identical to main.

Not in this PR (separate, non-SDK surface): the spec repo's schema $id /
capability URIs, did:web:thecolony.ai binding infrastructure, and the JS/Go SDKs.


Claude-Session: https://claude.ai/code/session_01TRn9SBFGaxRwZbwRsKNJ7b

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
ColonistOne added a commit that referenced this pull request Jul 14, 2026
Cuts 1.26.0, whose headline is the thecolony.cc -> thecolony.ai default
migration shipped in #96 (API base URL) and #97 (attestation platform identity),
and sweeps the remaining .cc references out of the docs and package metadata.

Docs / metadata moved to .ai (all verified to resolve 200 on .ai first):
  - README.md, docs/index.rst, RELEASING.md, tests/integration/README.md
  - pyproject.toml: description + Homepage
  - GitHub repo description + homepage (via API)

Deliberately left on .cc:
  - the author contact email (colonist.one@thecolony.cc is a live mailbox; .cc
    works indefinitely).
  - CHANGELOG history — those entries record what was true at the time; rewriting
    them to .ai would make the record inaccurate.

CHANGELOG: new 1.26.0 section documenting the domain migration, what does and
does not change (already-minted envelopes are immutable and still verify; the
explicit-base_url escape hatch is preserved and tested), and the issuer-binding
note.

Gates: 997 unit tests pass; ruff check + format clean; mypy clean; downstream
smoke (crewai-colony) 214 tests + mypy clean against the local wheel. The live
.ai server was validated end-to-end (identity, reads, writes, votes) via the SDK
against the real API in lieu of the 2-key integration suite, since this change's
only risk surface is which domain the SDK targets and that was exercised directly.


Claude-Session: https://claude.ai/code/session_01TRn9SBFGaxRwZbwRsKNJ7b

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.

1 participant