Skip to content
LogoLogo

Message Types

This page documents the live V2AddressNative message set from protocol/SPECIFICATION.md.

Every committed V2 message is user-submitted and carries a valid Ed25519 envelope. Validators do not inject Tempo events into blocks.

Projects

TypeDescriptionBase scope
PROJECT_CREATECreate a projectSIGNING
PROJECT_METADATAUpdate project metadataSIGNING
PROJECT_ARCHIVEArchive a projectSIGNING
FORKFork an existing projectSIGNING
PROJECT_REMOVERemove a projectSIGNING

Project ownership is keyed by owner_address.

Refs and commits

TypeDescriptionBase scope
REF_UPDATEMove a ref to a new hashAGENT
REF_DELETEDelete a refAGENT
COMMIT_BUNDLEAppend commit metadataAGENT

CommitMeta uses author_address.

Collaborators and account metadata

TypeDescriptionBase scope
COLLABORATOR_ADDAdd a collaboratorSIGNING
COLLABORATOR_REMOVERemove a collaboratorSIGNING
ACCOUNT_DATAUpdate account metadataSIGNING

Collaborator targets are address-native:

  • CollaboratorAddBody.target_owner_address
  • CollaboratorRemoveBody.target_owner_address

Merge requests

TypeDescriptionBase scope
MERGE_REQUEST_ADDOpen a merge request from a fork descendant into a target projectSIGNING
MERGE_REQUEST_REMOVEWithdraw or close a merge requestSIGNING

MERGE_REQUEST_ADD binds source_project_id, source_ref, source_commit_hash, and a suggested target_ref into a content-addressed request_id. The source project must be in the target project's retained fork lineage within MAX_FORK_LINEAGE_DEPTH = 256 hops. source_project_id must not equal project_id. No target-project membership is required for public projects; private targets require READ+ access. source_ref must resolve exactly to source_commit_hash at execution time.

MERGE_REQUEST_REMOVE closes an active merge request through dual authorization — the original requester may withdraw without any target-project membership, or a target project owner or collaborator with WRITE+ may close it. Merge request state is stored under the target project's namespace at prefix 0x1B with a requester reverse index at 0x1C. Closure attribution is available only from finalized message history, not from canonical state.

Verification and storage

TypeDescriptionBase scope
VERIFICATION_ADDProve an external addressSIGNING
VERIFICATION_REMOVERemove a verificationSIGNING
STORAGE_CLAIMClaim raw storage unitsnone

STORAGE_CLAIM is the only Tempo-backed storage ingress path in V2. It funds raw storage only and does not assign usernames.

It still requires finalized settlement verification. First successful application does not require delegated-key authorization, and duplicate replay remains marker-idempotent after settlement verification.

VERIFICATION_ADD includes address-native proof metadata:

  • claim_key_type
  • claim_block_hash when claim_key_type == 3

Username management

TypeDescriptionBase scope
USERNAME_CREATEClaim the first canonical username for an accountSIGNING
USERNAME_UPDATEReplace the current canonical usernameSIGNING

USERNAME_CREATE requires active storage (at least one accepted STORAGE_CLAIM) and that no username is currently assigned.

USERNAME_UPDATE requires an active username and active storage.

Username-bearing quota requires both active storage and an active username.

TypeDescriptionBase scope
LINK_ADDAdd a linkSIGNING
LINK_REMOVERemove a linkSIGNING
REACTION_ADDAdd a reactionSIGNING
REACTION_REMOVERemove a reactionSIGNING

FOLLOW links use target_owner_address.

STAR links use target_project_id.

Reactions remain project-and-commit scoped, but the reacting account is identified by owner_address.

Signer management

TypeDescriptionAuthorization
SIGNER_ADDAdd an Ed25519 delegated keycustody-backed
SIGNER_REMOVERemove an Ed25519 delegated keycustody-backed

SIGNER_ADD includes:

  • request_owner_address
  • request_signature
  • allowed_projects
  • custody_block_hash when custody_key_type == 3
  • request_block_hash when request_key_type == 3

Disabled families

These message families are disabled in V2 and must not appear at ingress, replay, or commit time:

  • KEY_ADD
  • OWNERSHIP_TRANSFER
  • STORAGE_RENT
  • RELAY_SIGNER_ADD
  • RELAY_SIGNER_REMOVE