From f08646d7cf5ab73f89f16570caa336745d4e5b59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Tremblay?= <1619947+marctrem@users.noreply.github.com> Date: Mon, 21 Sep 2026 21:07:31 -0400 Subject: [PATCH] Make BaseResourceAttributes.revision a 1-based uint32 revision is one of the two counters that walk an issuance lineage forward, and it is the number CreateResult.version reports. Genesis moves from 0 to 1 so that 0 is free as the "serve the latest" sentinel every read lane accepts, and the width drops to uint32 to match the rest of the issuance version surface. Wire-compatible: both are varint on the same field number. Claude-Session: https://claude.ai/code/session_01831dCLD2h5WosR6heb2nqC --- .../teamresource/v1/base_resource_attributes.proto | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/proto/splitsecure/teamresource/v1/base_resource_attributes.proto b/proto/splitsecure/teamresource/v1/base_resource_attributes.proto index 4b64498..e3514ef 100644 --- a/proto/splitsecure/teamresource/v1/base_resource_attributes.proto +++ b/proto/splitsecure/teamresource/v1/base_resource_attributes.proto @@ -33,8 +33,9 @@ message BaseResourceAttributes { // never set this directly; it is enclave-derived only. bytes lineage_id = 7; - // revision counts supersessions within a lineage: 0 at genesis, and the + // revision counts supersessions within a lineage: 1 at genesis, and the // enclave stamps predecessor.revision + 1 into the signed bytes of each - // superseding CREATE. Callers never set this directly. - uint64 revision = 8; + // superseding CREATE. Callers never set this directly. Never 0 — 0 is the + // "latest" sentinel the read lanes use to select a revision. + uint32 revision = 8; }