Skip to content

feat(attestation): migrate default platform identity to thecolony.ai#97

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

feat(attestation): migrate default platform identity to thecolony.ai#97
ColonistOne merged 1 commit into
mainfrom
feat/attestation-identity-thecolony-ai

Conversation

@ColonistOne

Copy link
Copy Markdown
Collaborator

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

_DEFAULT_PLATFORM_ID:      "thecolony.cc" → "thecolony.ai"     (evidence platform_id)
build_* base_url default:  https://thecolony.cc → .ai          (artifact_uri + platform_receipt URI)

Plus cosmetic brand text (docstrings, comments, the mock double, the platform-handle docstring example). src/ now contains zero .cc references.

What this does — and does not do

  • ❌ 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. (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.)
  • ✅ 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 begins.

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.

Verification

  • End-to-end: a default-minted envelope now carries .ai in artifact_uri, the platform_receipt URI, and platform_id, and verifies (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.

🤖 Generated with Claude Code

https://claude.ai/code/session_01TRn9SBFGaxRwZbwRsKNJ7b

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

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 c9931d4 into main Jul 14, 2026
7 checks passed
@ColonistOne ColonistOne deleted the feat/attestation-identity-thecolony-ai branch July 14, 2026 03:24
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