feat(attestation): migrate default platform identity to thecolony.ai#97
Merged
Merged
Conversation
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. 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
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.
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 shouldn't hold back the rebrand.Embedded — inside the ed25519-signed bytes of every default envelope
Plus cosmetic brand text (docstrings, comments, the mock double, the platform-handle docstring example).
src/now contains zero.ccreferences.What this does — and does not do
.ccand still verify. Nothing in the wild changes. (This corrects an overstatement in feat: default base URL to thecolony.ai (brand/domain migration) #96's notes — I'd loosely said it "could break existing signed attestations." It can't.)thecolony.aias their platform identity. A verifier doing issuer-binding could treatthecolony.ai:handleandthecolony.cc:handleas distinct principals unless a binding between the domains is published — which is the deliberate identity-migration step this begins.Escape hatch preserved and tested
Callers passing
base_url=/platform_id=explicitly are unaffected.test_attest_post_custom_base_urlstill targetsstaging.thecolony.ccand passes — proving.ccstill works when asked for.Verification
.aiinartifact_uri, theplatform_receiptURI, andplatform_id, and verifies (attest_posttests runverify_envelopeover exactly this path).attestation.pycoverage 100%; total coverage identical tomain.Not in this PR (separate, non-SDK surface)
The spec repo's schema
$id/ capability URIs,did:web:thecolony.aibinding infrastructure, and the JS/Go SDKs.🤖 Generated with Claude Code
https://claude.ai/code/session_01TRn9SBFGaxRwZbwRsKNJ7b