From 437c84fda597783cde93178f8d95ff175b328613 Mon Sep 17 00:00:00 2001 From: phil Date: Fri, 25 Sep 2026 14:18:12 -0400 Subject: [PATCH] fix up rules --- star-lite/spaces-archive.md | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/star-lite/spaces-archive.md b/star-lite/spaces-archive.md index a8a3b30..88a07c6 100644 --- a/star-lite/spaces-archive.md +++ b/star-lite/spaces-archive.md @@ -69,7 +69,7 @@ Zero or more key-value pairs until EOF, in strict lexicographic key order. Dupli - Keys: must be valid utf-8 (valid atproto keys are ASCII-subset) -- Values: must be [DRISL]-encoded atproto records with maximum size 1MiB +- Values: must have maximum size 1MiB, and should be [DRISL]-encoded atproto records, though readers are not required to interpret record bytes. ## Example: Archiving single atproto records @@ -86,7 +86,7 @@ Zero or more key-value pairs until EOF, in strict lexicographic key order. Dupli - Key: must be valid utf-8 (valid atproto keys are ASCII-subset) -- Value: must be a [DRISL]-encoded atproto record with maximum size 1MiB +- Value: must have maximum size 1MiB, and should be a [DRISL]-encoded atproto record, though readers are not required to interpret record bytes. Archive must contain exactly one key-value pair. @@ -99,7 +99,7 @@ Archive must contain exactly one key-value pair. - Keys: must be valid utf-8 (valid atproto keys are ASCII-subset) -- Values: must be [DRISL]-encoded atproto records with maximum size 1MiB +- Values: must have maximum size 1MiB, and should be [DRISL]-encoded atproto records, though readers are not required to interpret record bytes. ## Example: Archiving atproto public repo subtrees @@ -204,14 +204,11 @@ Verification checks archive integrity only (authenticity is traded for deniabili _TODO: review these again_ -- The magic bytes MUST be `0x2A 0x6C 0x01 0x4C`. -- A reader MUST abort processing when if a `len` above the maximum is encountered. -- All metadata object fields are required, and its encoding MUST be canonical DRISL. +- The magic bytes MUST be `0x2A 0x6C 0x01`. +- A reader MUST abort processing when if a `len` above the maximum allowed for a proceeding value is encountered. - Data keys MUST be in strict lexicographic byte order, with no duplicates. -- Records SHOULD be encoded as DRISL, though readers are not required to interpret record bytes. - Any parse error MUST be treated as fatal for the entire archive. - -While insertions for the LtHash commitment are order-independent, STAR-lite bodies MUST be produced in strict lexicographic key order, and consumers MUST abort processing if any out-of-order keys are discovered. This ensures that each key can only appear once. (LtHash insertions are not idempotent). +- STAR-lite bodies MUST be produced in strict lexicographic key order, and consumers MUST abort processing if any out-of-order or duplicate keys are discovered. ## Changes -- knotmirror 0.0.1