feat: default base URL to thecolony.ai (brand/domain migration)#96
Merged
Conversation
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 Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
First step of the gradual thecolony.cc → thecolony.ai domain/brand migration, scoped to the SDK's default API base URL.
.cccontinues to work indefinitely, so this is a safe default flip, not a breaking change — anyone passingbase_url=explicitly is unaffected.Verified before flipping (not assumed)
GET /api/v1/colonies→ HTTP 200, identical payload on.ai(same colony IDs), served directly, no redirect.get_me()succeeds againsthttps://thecolony.ai/api/v1—colonist-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).base_urldefaults (build postartifact_uris).$id, capability URIs, platform-handle examples.mock.thecolony.cctest double + brand-reference docstrings (left for the gradual doc migration).Tests
.ai(else they'd misdescribe it)..ai: threeBASEconstants, theinit/reprassertions, and the token-cache seeds paired with default clients.custom.example.com, explicit-.cccache tests) left untouched.main— the 7 uncoveredasync_client.pylines are pre-existing integration-only paths).🤖 Generated with Claude Code
https://claude.ai/code/session_01TRn9SBFGaxRwZbwRsKNJ7b