-ai = text ; algorithm identifier
+ai = text .ge 0 ; algorithm identifier
 
 cm-hashed = {
     a: [+ ai],
-    t: text, ; type of the content
+    t: text .gt 0, ; type of the content
     ? v: bytes / blob, ; content itself
     hash: [+ bytes], ; hash values
 }
 
-ai = text ; algorithm identifier
+ai = text .ge 0 ; algorithm identifier
 av = {a: ai, v: bytes}
 
 cm-prv = av
 
-ai = text ; algorithm identifier
+ai = text .ge 0 ; algorithm identifier
 av = {a: ai, v: bytes}
 fpr = bytes .size 32
 ku = "sig" / "kem" / "app-name" / text
 
-ai = text ; algorithm identifier
+ai = text .ge 0 ; algorithm identifier
 
 cm-signed = {
     load: {
-        t: text,
+        t: text .ge 0,
         ? v: bytes / text / map / list,
     },
     ? sigs: [+ sig],
     ? pubs: [+ cm-pub],
 }
 
-url = text
+url = text .ge 0
 
 sig = {
     tbs: sig-tbs,
 sig-tbs = {
     sid: fpr, ; signer's public key fingerprint
     ? when: tai64 / tai64n,
-    ? nonce: bytes, ; some optional random bytes
+    ? nonce: bytes .gt 0, ; some optional random bytes
     ? encrypted-to: [+ fpr], ; recipient's public key fingerprints
     * text => any
 }