State model
V2 state is address-native.
Core selectors
- account bookkeeping is keyed by
owner_address - project ownership is stored as
owner_address - collaborators use
target_owner_address - links and reactions use
owner_addressand reverse address-native indexes - commit metadata uses
author_address
Account defaults
If an account row is absent, the canonical default view is:
key_count = 0project_count = 0storage_units = 0custody_nonce = 0created_at = 0
Merkle scope
The canonical merkleized prefixes are 0x03 through 0x17 inclusive, plus 0x1A through 0x1C.
0x02, 0x18, and 0x19 remain persisted but are not part of state_root.
Merge request state
Three prefix families support merge requests:
| Prefix | Entity | Layout |
|---|---|---|
0x1A | Fork parent (retained lineage) | `[0x1A |
0x1B | Merge request (forward) | `[0x1B |
0x1C | Merge request (reverse, by requester) | `[0x1C |
0x1Astores the immediate fork parent for each fork project, independent of prunable project rows, so merge-request lineage validation survives project pruning0x1Band0x1Care a forward/reverse pair — for every forward entry, a matching reverse entry must exist, and vice versaProjectStateincludesmerge_request_count, which tracks the number of active merge requests targeting the project0x1A,0x1B, and0x1Care all queryable and merkleized
Removed state concepts
V2 state does not include:
- registry allocation metadata
- ownership transfer markers
- signer-authorization event markers
- storage-rent event markers
- relay checkpoint provenance