Specificatio Protocolli qub

qub est protocollum obligationum temporalium cryptographicarum: systema verba ad diem futurum signandi ac postea exacte verificandi quid signatum sit, quis cyclus drand revelationem rexerit, et—si translatio memoriae aut proba tabularii perspicui praesto est—terminum superiorem temporis, sigillo independente firmatum, quo textus cifratus iam commissus erat.

Tria primordia hoc opus efficiunt. drand est fons fortuiti decentralizatus—dies revelationis cryptographice exigitur, non qub benignitate. Memoria durabilis una cum tabulario perspicuo appendendi-solo octetos signatos servat et obligationes fasciculatas memoriae publicae perpetuae ancoris firmat; via T3 pretiosa etiam singulam transactionem memoriae perpetuae scribit. ML-DSA-65 est subscriptio digitalis post-quantum—si auctoritas habilitatur, qub paribus clavium adligatur quarum arcanum numquam ex auctoris machina exit.

Haec primordia coniuncta sententiam efficiunt temporalibus claustris obligatam et manifestam si violetur, optionaliter auctori attribuibilem atque sigillo temporis independente firmabilem—apocham cuius valor crescit dum mundi facultas praeterita fingendi melior fit.

Reliqua huius documenti est specificatio normativa quae implementationibus inter se cohaerentibus requiritur.


Specificatio Protocolli qub

Campus Valor
Editio documenti 1.0.0 (protocol-v1.0.0)
Protocollum filiforme 0x01
Involucrum externum 0x01
Dies effectivus 2026-09-23
Status Currens
Recognitum usque ad 2026-09-23

Hoc documentum est specificatio normativa protocolli pro systemate obligationum temporalium qub. Definit structuras datorum, regulas seriationis, formulas derivationis, et procedurae verificationis quae implementationibus inter se cohaerentibus requiruntur.

Ambitus: stratum protocolli consulto neutrum est quoad linguam — corpus qub est opacus textus simplex / markdown / octeta pacti, et redditio locali apta est munus spectatoris (applicatio web qub.social, involucrum <qub-embed>, clientes MCP, et cetera).


1. Notatio et Conventiones

Notatio Significatio
u8, u64, i64 Integri sine signo / cum signo latitudinis bitorum specificatae
[u8; N] Series octetorum longitudinis fixae N octetorum
Vec<u8> Series octetorum longitudinis variabilis
Option<T> Valor typi T, vel absens
String Textus UTF-8, normalizatus NFC
`
SHA3-256(x) Spargmen NIST SHA3-256 seriei octetorum x (FIPS 202)
ceil(x) Functio caeli: minimus integer ≥ x
CBOR Concise Binary Object Representation (RFC 8949)
big-endian Octetus maximi momenti primus

Omnes integri in constructionibus praeimaginis ut series octetorum big-endian latitudinis fixae codificantur (i64 → 8 octeta, u8 → 1 octetum) nisi aliter specificatum est.

Omnia tempora sunt secunda Unix in UTC.


2. Structurae Datorum

2.1 ComposeQub (Status In-Memoria Creatoris)

Non seriatur in CBOR. Non in memoria perpetua conditur. Localis applicationi creatoris.

ComposeQub {
    draft_id:       [u8; 16],        // Random, generated locally
    created_at:     i64,             // Unix seconds UTC
    unlock_at:      Option<i64>,     // Unix seconds UTC; None while composing
    visibility:     u8,              // 0x00 = private; 0x01 = public
    content_type:   u8,              // 0x01 text; 0x03 pact; 0x04 verdict
    plaintext:      Vec<u8>,         // Raw body bytes (UTF-8 for text)
    sender_label:   Option<String>,  // Display name; V2-signed when authorship is enabled
    title:          Option<String>,  // Plaintext countdown title; bound via title_hash
    reply_to:       Option<[u8; 32]>,// Parent qub_id; V2-signed when authorship is enabled
    outcome_at:     Option<i64>,     // Optional future judgment time; bound to qub_id
    status:         DraftStatus,     // Composing | Sealed | Uploaded | Failed
}

2.2 QubEnvelope (Onus Decifratum)

Seriatum CBOR canonico (§3). Cifratum intra SealedQub. Haec structura integritatem contenti post decifrationem probat.

QubEnvelope {
    version:             u8,              // Protocol major version (0x01 for v1)
    qub_id:              [u8; 32],        // Derived (see §4.1)
    content_type:        u8,              // Content type registry (see §6)
    created_at:          i64,             // Unix seconds UTC
    unlock_at:           i64,             // Unix seconds UTC
    outcome_at:          Option<i64>,     // When reality renders judgment; bound to qub_id
    sender_label:        Option<String>,  // Not in qub_id; V2-signed when authorship is enabled
    reply_to:            Option<[u8; 32]>,// Parent qub_id; not in qub_id; V2-signed when present
    body:                Vec<u8>,         // UTF-8 text or canonical CBOR pact/verdict body
    body_hash:           [u8; 32],        // SHA3-256(body) (see §4.2)
    sig_alg:             u8,              // Signature algorithm (see §9.2)
    author_signature:    Option<Vec<u8>>, // Set when sig_alg != 0x00
    author_pubkey:       Option<Vec<u8>>, // Set when sig_alg != 0x00
    cosigner_pubkey:     Option<Vec<u8>>, // Set for cosigned pact bilateral agreements
    cosigner_signature:  Option<Vec<u8>>, // Set for cosigned pact bilateral agreements
}

Linea basilica (qub textuale non subscriptum): version = 0x01, content_type = 0x01, sig_alg = 0x00; campi subscriptionis et consubscriptoris absunt. Alii campi metadatae optionales adesse possunt.

Aliae configurationes v1: content_type = 0x03 (corpus pacti, vide §6.1); sig_alg = 0x01 (ML-DSA-65) cum author_signature et author_pubkey praesentibus (vide §9.3); cosigner_pubkey et cosigner_signature simul praesentes pro pactis consubscriptis (vide §9.7); reply_to ad qub_id qub parentis positum pro qub catenae responsorum (vide §9.3 pro implicationibus ambitus subscriptionis).

2.3 SealedQub (Forma Canonica Filiformis)

Seriatum CBOR canonico (§3). Hoc est artefactum filiforme internum: traditio publica hos octetos nudos conservat, traditio privata autem eos ante conservationem in OuterWrapper involvit (§13).

SealedQub {
    version:           u8,              // Protocol major version (0x01 for v1)
    qub_id:            [u8; 32],        // Same as QubEnvelope.qub_id
    visibility:        u8,              // 0x00 = private/wrapped; 0x01 = public/bare
    unlock_at:         i64,             // Unix seconds UTC
    outcome_at:        Option<i64>,     // Surfaced on the verdict-watch CTA
                                        //   before reveal; mirrors QubEnvelope.outcome_at;
                                        //   bound to qub_id via the §4.1 preimage.
    drand_chain_id:    String,          // drand chain hash (hex string)
    drand_round:       u64,             // Target drand round number
    drand_chain_version: Option<u8>,    // W3 — chain-migration version. Absent / 0 = quicknet
                                        //   (the only chain today). Lets a future chain swap
                                        //   be expressed on the wire without a breaking format
                                        //   change. NOT part of the §4.1 qub_id preimage, so its
                                        //   addition never alters an existing qub's identity.
    tlock_ciphertext:  Vec<u8>,         // tlock-encrypted QubEnvelope CBOR bytes
    recipient_pubkey:  Option<[u8; 32]>,// Reserved field; accepted by canonical CBOR
                                        //   but not interpreted by the v1 reference viewer
    title:             Option<String>,  // Plaintext title surfaced on the viewer
                                        //   countdown before reveal. Bound to qub_id
                                        //   via title_hash (§4.1). 1..=100 NFC code
                                        //   points, no hostile/control code points.
}

2.4 RevealedQub (Status Applicationis Spectatoris)

Non seriatur in CBOR. Localis applicationi spectatoris. Construitur post decifrationem et verificationem prosperam.

RevealedQub {
    qub_id:              [u8; 32],
    arweave_tx_id:       String,
    visibility:          u8,
    content_type:        u8,
    created_at:          i64,
    unlock_at:           i64,
    outcome_at:          Option<i64>,       // Carried from both wire layers; drives the verdict-watch block
    drand_chain_id:      String,
    drand_round:         u64,
    sender_label:        Option<String>,
    title:               Option<String>,    // Carried forward from SealedQub.title
    reply_to:            Option<[u8; 32]>,
    body:                Vec<u8>,
    body_hash:           [u8; 32],
    body_hash_verified:  bool,
    author_signature:    Option<Vec<u8>>,
    author_pubkey:       Option<Vec<u8>>,
    signature_verified:  Option<bool>,
    cosigner_pubkey:     Option<Vec<u8>>,
    cosigner_signature:  Option<Vec<u8>>,
    cosigner_verified:   Option<bool>,
}

3. Profilum CBOR Canonicum

Omnis seriatio SealedQub et QubEnvelope huic profilo DEBET conformare. Duae implementationes data eadem structura logica octeta identica DEBENT producere.

3.1 Regulae Codificationis

Regula Specificatio
Norma RFC 8949 §4.2.1 (Core Deterministic Encoding Requirements)
Ordo clavium mappae Primum secundum longitudinem octetorum codificatorum ordinatae (breviores ante longiores), deinde lexicographice (octetum per octetum pro codificationibus eiusdem longitudinis)
Codificatio integrorum Forma brevissima: 0–23 in octeto initiali; 24–255 in 2 octetis; 256–65535 in 3 octetis; et cetera.
Codificatio longitudinis Longitudines definitae solae. Nullae series, mappae, octetorum seriei, vel textuum seriei longitudinis indefinitae (informatio addita = 31 vetatur).
Etiquetae Nullae etiquetae CBOR (typus maior 6 vetatur).
Punctum fluitans Nulla puncta fluitantia (typi maiores 7 valores 0xF9–0xFB vetantur).
Series textuum UTF-8 codificati, normalizati NFC (Unicode Normalization Form C).
Series octetorum Octeta cruda. Nulla codificatio base64 in strato CBOR.
Claves duplicatae Reiciantur cum errore. Lectores duplicatas claves mappae tacite accipere NON DEBENT.
Claves ignotae Reiciantur cum errore. Lectores claves mappae extra ordinem clavium canonicum typi tolerare NON DEBENT — duae series octetorum canonicae distinctae numquam ad eundem valorem decodificari debent (encode(decode(x)) == x), et in oneribus subscriptis clavis addita contentum absconditum esset quod ambae subscriptiones obligent. Evolutio schematis per version procedit, numquam per claves additas.
Valores simplices Soli true (0xF5), false (0xF4), et null (0xF6) permittuntur.
Campi optionales Campi optionales absentes ex mappa CBOR omnino omittuntur (non codificantur ut null). Campi optionales praesentes in ordine clavium ordinato includuntur.

3.2 Ordines Clavium Canonici Verificati

Hi ordines clavium normativi sunt. Implementationes DEBENT claves exacte hoc ordine emittere. Assertiones diagnosticae ordinem in compilationibus non-emissionis verificare OPORTET.

QubEnvelope (versio 0x01, non subscripta, omnes campi optionales absentes):

"body"                (5 encoded bytes)
"qub_id"              (7 encoded bytes)
"sig_alg"             (8 encoded bytes)
"version"             (8 encoded bytes)
"reply_to"            (9 encoded bytes)   ← only if present (reply chains)
"body_hash"           (10 encoded bytes)
"unlock_at"           (10 encoded bytes)
"created_at"          (11 encoded bytes)
"outcome_at"          (11 encoded bytes)  ← only if present (verdict mechanic)
"content_type"        (13 encoded bytes)
"sender_label"        (13 encoded bytes)  ← only if present
"author_pubkey"       (14 encoded bytes)  ← only if present
"cosigner_pubkey"     (16 encoded bytes)  ← only if present (pact cosign)
"author_signature"    (17 encoded bytes)  ← only if present
"cosigner_signature"  (19 encoded bytes)  ← only if present (pact cosign)

Derivatio ordinis clavium QubEnvelope: quaeque clavis est series textus CBOR. Longitudo codificata = 1 octetum capitis + longitudo seriei (pro seriebus sub 24 octetis). Primum secundum longitudinem codificatam totalem ordina, deinde lexicographice pro clavibus eiusdem longitudinis.

SealedQub (versio 0x01, publica, sine recipiente):

"title"             (6 encoded bytes)   ← only if present
"qub_id"            (7 encoded bytes)
"version"           (8 encoded bytes)
"unlock_at"         (10 encoded bytes)
"outcome_at"        (11 encoded bytes)  ← only if present (verdict mechanic)
"visibility"        (11 encoded bytes)
"drand_round"       (12 encoded bytes)
"drand_chain_id"    (15 encoded bytes)
"recipient_pubkey"  (17 encoded bytes)  ← only if present
"tlock_ciphertext"  (17 encoded bytes)
"drand_chain_version" (20 encoded bytes) ← only if present (W3; absent = quicknet)

PactTerms (corpus pacti, content_type 0x03):

"notes"         (6 encoded bytes)  ← only if present
"terms"         (6 encoded bytes)
"title"         (6 encoded bytes)
"party_a"       (8 encoded bytes)
"party_b"       (8 encoded bytes)
"pact_version"  (13 encoded bytes)

PactTerm (linea seriei terms):

"key"    (4 encoded bytes)
"value"  (6 encoded bytes)

PartyIdentifier (mappa party_a / party_b):

"label"    (6 encoded bytes)
"contact"  (8 encoded bytes)  ← only if present

3.3 Tabula Codificationis Octetorum

Typus Codificatio CBOR Exemplum
Spargmen SHA3-256 (32 octeta) 0x58 0x20 + 32 octeta body_hash, qub_id
Tempora (i64) Typus maior 0 (positivus) vel 1 (negativus), codificatio brevissima secunda Unix
Versio (u8, valor 1) 0x01 (octetum singulum)
Typus contenti (u8, valor 1) 0x01 (octetum singulum)
sig_alg (u8, valor 0) 0x00 (octetum singulum)
Subscriptio ML-DSA-65 (3,309 octeta) 0x59 0x0C 0xED + 3,309 octeta author_signature, cosigner_signature
Clavis publica ML-DSA-65 (1,952 octeta) 0x59 0x07 0xA0 + 1,952 octeta author_pubkey, cosigner_pubkey

4. Derivationes Normativae

4.1 qub_id

qub_id qub unice identificat et QubEnvelope ad SealedQub alligat. Deterministice ex contento involucri derivatur.

qub_id = SHA3-256(
    "QUB_ID_V2"          ||  // domain separator: ASCII bytes [0x51 0x55 0x42 0x5F 0x49 0x44 0x5F 0x56 0x32] (9 bytes) + 0x00 padding (1 byte) = 10 bytes
    version              ||  // u8 (1 byte)
    content_type         ||  // u8 (1 byte)
    created_at           ||  // i64 big-endian (8 bytes)
    unlock_at            ||  // i64 big-endian (8 bytes)
    outcome_at_or_zero   ||  // i64 big-endian (8 bytes; 0 when outcome_at is absent)
    drand_round          ||  // u64 big-endian (8 bytes)
    body_hash            ||  // [u8; 32] (32 bytes)
    title_hash               // [u8; 32] (32 bytes; absent-sentinel = [0u8; 32])
)
// Total preimage: 108 bytes → 32-byte output

Codificatio separatoris dominii: Series "QUB_ID_V2" est 9 octeta ASCII. Singulum octetum farciminis 0x00 adicitur ut 10 octeta ob alignmentum attingantur. Implementationes haec 10 octeta exacta DEBENT adhibere: [0x51, 0x55, 0x42, 0x5F, 0x49, 0x44, 0x5F, 0x56, 0x32, 0x00].

Codificatio outcome_at: Revisio implementationis ante emissionem praeimaginem ex 92 ad 100 octeta extendit ut campum optionalem outcome_at in adligationem includeret. outcome_at absens ut 8 octeta nulla codificatur; validatores protocolli outcome_at <= 0 ubique reiciunt, ita ut haec sentinella cum valore legitimo collidi non possit. Vide §3.2 (forma filiformis) et tasks/verdict-uplift-plan.md intra arborem pro mechanica sententiae quae hunc campum movet.

Codificatio drand_round: Revisio posterior implementationis ante emissionem praeimaginem ex 100 ad 108 octeta extendit ut drand_round (cyclum drand destinatum, §4.3) in adligationem includeret, et separatorem dominii ad QUB_ID_V2 auxit. Hoc cyclum clausurae temporalis in identitatem qub adligat: porta textum cifratum ad cyclum diversum (e.g. iam praeteritum) quam unlock_at ostensum implicat readligare non potest. Procedura reserationis (§8) insuper verificat cyclum in stanza textus cifrati tlock impressum cum unlock_round(unlock_at) congruere, ita ut tempus reserationis ostensum probabiliter sit cyclus qui decifrationem regit.

Proprietates:

4.2 body_hash

body_hash = SHA3-256(body)

Ubi body est Vec<u8> crudum onus contenti. Pro qub textualibus, hoc est corpus qub UTF-8 codificatum.

4.2.1 title_hash

title_hash = SHA3-256(NFC(title).utf8_bytes)   if title is present
title_hash = [0u8; 32]                         if title is absent

Ubi title est optionalis titulus textus simplicis in chronometro spectatoris ante revelationem ostensus (vide §3.2). Normalizatio NFC tempore spargmenti executatur ita ut digestum stabile sit per sequentias punctorum codicis visualiter aequivalentes. Sentinella omnium nullorum casui absenti reservatur; series vacua in confinio CBOR canonico ut codificatio non-canonica "absentis" reicitur (codificatio canonica campum omnino omittit).

4.3 Mappa Cycli-Reserationis

drand_round = floor((unlock_at - chain_genesis_time) / chain_period_seconds) + 1
Parameter Fons Exemplum
unlock_at Secunda Unix UTC ab usuario electa 1735689600 (2025-01-01 00:00:00 UTC)
chain_genesis_time informatio catenae drand (genesis_time) 1595431050
chain_period_seconds informatio catenae drand (period) 30

Haec est mappa tlock referens (CurrentRound drand). drand cyclum N tempore chain_genesis_time + (N - 1) * chain_period_seconds publicat, itaque formula cyclum apud unlock_at currentem seligit—cyclum cuius subscriptio prima est qua spectator ad unlock_at veniens uti potest.

Proprietas alignmenti (casus usu gravis): cum (unlock_at - chain_genesis_time) exacte per chain_period_seconds dividitur, subscriptio cycli electi exacte apud unlock_at, numquam ante publicatur. Hoc in deployment referente semper valet: tempus geneseos quicknet (1692803367) per periodum 3 secundorum dividitur, et applicationes referentes tempora reserationis ad minuta integra figunt. Pro unlock_at non alignato, subscriptio cycli electi minus quam una periodo ante unlock_at publicatur—praecisio temporalis obligationis est una periodus fari.

Mappa legata ante emissionem et tolerantia in reseratione: mappa originalis erat ceil((unlock_at - chain_genesis_time) / chain_period_seconds), quae—in casu alignato supra—cyclum una periodo plena ante unlock_at publicatum seligebat, ut textus cifratus una periodo exacte mature decifrabilis fieret. Mappae exacte +1 differunt cum differentia per periodum dividitur, alioquin congruunt. Quia drand_round in praeimaginem immutabilem qub_id includitur (§4.1), artefacta sub mappa legata signata rursus derivari non possunt; verificatores inspectionem cruciatam cycli in §8 gradu 6a facientes igitur drand_round conservatum aut cyclo derivato aut cyclo derivato minus uno aequalem accipere DEBENT (et cyclum stanzae tlock cyclo conservato exacte aequalem requirere DEBENT). Tolerantia primam subscriptionem regentem ad summum una periodo anticipat. Servitium stationis pacti eandem tolerantiam adhibet cum qub_id pacti in scaena positi rursus derivat: si cyclus mappae currentis qub_id obligatum non reproducit et differentia per periodum dividitur, cum cyclo minus uno iterat, atque pactum finalizatum ad eum cyclum signat quem qub_id re vera obligat—numquam caece ad cyclum recomputatum, quod artefactum perpetuo inderivabile redderet.

Validatio: unlock_at in futuro tempore signandi esse DEBET. unlock_at plus quam 10 annos a created_at distare NON DEBET (ut periculum dependentiae longi-horizontis a drand limitetur; interfacies pro diebus reserationis ultra 2 annos monere OPORTET).


5. Newtypi Formae Filiformis

Newtypi formae filiformis securitatem compilationis temporis contra octeta CBOR cum JSON, textu simplici crudo, vel aliis codificationibus octetorum confundenda praebent.

Typus Continet Productus a Consumptus a
SealedQubCbor CBOR canonicum SealedQub serialize_sealed_qub() Artefactum filiforme internum; nudum pro traditione publica aut involutum pro privata conservatur, deinde a spectatore recuperatur
QubEnvelopeCbor CBOR canonicum QubEnvelope serialize_qub_envelope() Ingressum cifrationis tlock, exitum decifrationis tlock

5.1 Regulae Constructionis

// Production code — only through CBOR serialisers:
let sealed = SealedQubCbor::from_encoded(cbor_bytes);

// There is deliberately NO From<Vec<u8>> implementation.
// You cannot accidentally wrap arbitrary bytes in a wire format type.

// Accessing raw bytes:
let bytes: &[u8] = sealed.as_bytes();
let bytes: Vec<u8> = sealed.into_bytes();

5.2 Validatio in Constructione

from_encoded() OPORTET validare ingressum cum capite mappae CBOR valido incipere. Validatio structuralis plena tempore lectionis fit, non tempore constructionis, ut duplex lectio vitetur.


6. Tabula Typorum Contenti

Valor Typus Magnitudo Maxima Corporis Notae
0x00 Reservatum (invalidum) — NON adhibendum est
0x01 Textus simplex (UTF-8, Markdown restrictum) 50 KB pretiosum / 10 KB gratuitum Vide §10 pro regulis redditionis. Divisio gratuiti / pretiosi a servitio onerationis exigitur; limen durum strati protocolli est 50 KB.
0x02 Reservatum (futurum) — Pro typo contenti futuro allocatum; in v1 non validum. Spectatores secundum regulam infra reicere DEBENT.
0x03 Pactum (pactum bilaterale, corpus CBOR) 100 KB Corpus est PactTerms CBOR canonicum (§6.1). Consubscriptio per §9.7.
0x04 Sententia (creatoris se ipsum aestimantis, corpus CBOR) 8 KB Corpus est VerdictBody CBOR canonicum (§6.2). Solum a verdict intento systemati emittitur. Nexus parentalis in indice Arweave Parent-Tx-Id est, non in corpore. Vide verdict-uplift-plan §3.4.

Spectatores typos contenti ignotos cum errore claro usuario visibili reicere DEBENT. Spectatores typos ignotos ut textum reddere conari NON DEBENT.

6.1 Corpus Pacti (content_type = 0x03)

Corpus pacti est codificatio CBOR canonica valoris PactTerms:

PactTerms {
    pact_version:  u8,                    // 0x01 for structured/v1
    title:         String,                // ≤ 200 bytes, NFC
    terms:         Vec<PactTerm>,         // ≤ 20 rows
    party_a:       PartyIdentifier,       // initiator
    party_b:       PartyIdentifier,       // counter-signer
    notes:         Option<String>,        // ≤ 5,000 bytes, NFC; absent key if none
}

PactTerm       { key: String (≤ 100 bytes), value: String (≤ 2,000 bytes) } // NFC
PartyIdentifier{ label: String (≤ 100 bytes), contact: Option<String (≤ 320 bytes)> }

Ordines clavium CBOR canonici pro omnibus tribus mappis in §3.2 dantur. CBOR pacti seriatum totale 100 KB non excedere DEBET (concordat cum §6).

Discriminator schematis. Prima linea in terms pro pacto structured/v1 esse DEBET { key: "pact_schema", value: "structured/v1" }. Lineae sine hoc indice sunt pacta "consuetudinaria" et nullam validationem structuratam vel redditionem schematis consciam recipiunt.

Receptacula agnitionis fixa. Pacta structured/v1 exacte quattuor lineas agnitionis sub his clavibus ferunt:

"initiator_standard_terms"
"initiator_capacity_terms"
"counterparty_standard_terms"
"counterparty_capacity_terms"

value cuiusque est una ex octo seriebus Anglicis fixis per par (role, kind) electis, ubi role ∈ { seller, buyer, provider, client } et kind ∈ { standard, capacity }. Series ipsae sunt data protocolli normativa — utriusque partis subscriptiones ML-DSA-65 ad exacta octeta per body_hash se obligant. NON localizantur; corpus subscriptum linguae neutrum est. Quaevis mutatio verborum versionem schematis novam exigit (structured/v2).

Octo series, earum quaesitio (acknowledgement_for(role, kind)), et ratio cuiusque ab implementatione referente affixae sunt. Implementationes conformes valores agnitionis octetis identicos DEBENT emittere; probationes spargminis-corporis SHA3-256 cum fixurae auratis omnes quattuor combinationes ruolorum tegentes ullam deviationem capiunt.

Ordo ostensionis spectatoris. Series agnitionis phrases continent ut "supra descriptum", quae praesumunt lineas descriptionis / ambitus ante agnitiones reddi. Spectatores seriem terms in ordine CBOR reddere DEBENT; reordinatio semanticam prosae rumpit.

Contactus contrapartis. Cum contact Partis B est inscriptio electronica valida, servitium onerationis qub epistulam invitationis recognitionis / consubscriptionis tempore stationis automatice mittit et consubscriptionem eventualem ad verificationem eiusdem inscriptionis adligat (§9.7). Pacta quorum contactus Partis B abest adhuc consubscribi possunt, sed solum per canalem extra-bandam — servitium petitiones consubscriptionis recusat quae notam verificationis electronicae 15 minutorum congruentem producere non possunt.

6.2 Corpus Sententiae (content_type = 0x04)

Corpus sententiae est codificatio CBOR canonica valoris VerdictBody:

VerdictBody {
    verdict_version: u8,                  // 0x01 for structured/v1
    outcome:         u8,                  // 1=Right · 2=Partial · 3=Wrong · 4=Unfalsifiable
    reflection:      Option<String>,      // ≤ 2,000 bytes NFC; "what changed, what did you learn"
    evidence_url:    Option<String>,      // ≤ 2,048 bytes; HTTPS only; absent key when omitted
}

Ordo clavium CBOR canonicus:

"outcome"          (8 encoded bytes)
"reflection"       (11 encoded bytes)  ← only if present
"evidence_url"     (13 encoded bytes)  ← only if present
"verdict_version"  (16 encoded bytes)

CBOR sententiae seriatum totale 8 KB non excedere DEBET (concordat cum linea tabulae supra).

Enumeratio exitus. Octetum filiforme intentui neutrum est; quattuor receptacula Right / Partial / Wrong / Unfalsifiable omne spatium exitus cuiusque intenti sententiam ferentis tegunt. Notae per intentum (e.g. "Praedixi recte" / "Servavi illud" / "Edidi" / "Confirmata" pro Right) sunt res redditionis a parte spectatoris, contra intentum qub parentis resolutae — forma filiformis lingua- et intentu-neutralis manet. Valores extra 1..=4 ad decodificationem reici DEBENT.

Nexus parentalis. qub sententiae referentiam parentalem in corpore suo NON fert. Identitas transactionis Arweave qub parentis ut index Parent-Tx-Id repositionis tempore onerationis emittitur (§7 stratum indicum repositionis). Hoc corpus servat ut declarationem subscriptam autoaestimationis sui contentam; catena auditionis ("recte de quo?") per inquisitionem indicis Arweave constituitur.

Securitas nexus argumenti (normativa). Cum evidence_url adest, validatores (parte compositionis, parte filiformi, margine Operarii) hoc imponere DEBENT:

  1. Solum HTTPS. Filum cum sequentia octetorum https:// incipere DEBET. Quaevis alia schema — http, ftp, javascript, data, file, etc. — reicitur.
  2. Limen longitudinis. ≤ 2,048 octeta (limen practicum URL navigatoris).
  3. NFC + inspectio codepoint hostilium. Eadem regula ac title et reflection — codepoint bidi-override / latitudinis nullae / indicis tag / BOM / C0 / C1 reiciuntur. Definitio congruit cum Rust crate::handle::contains_hostile_text_codepoint et TS workers/api/src/utils/unicode.ts::isHostileCodepoint (in eodem gradu serventur).
  4. Nullum spatium, nulli moderatores ASCII. Spatium / DEL / octeta infra-0x20 ubicumque in URL reiciuntur — viam iniectionis \n/\t claudit quam regula bidi non tegit.
  5. Segmentum hospitis non vacuum. Omnia inter https:// et primum /, ?, vel # non vacua esse DEBENT.

Nulla petitio a parte servitoris. Operarius URL procurare, petere, vel praevidere NON DEBET. Protocollum filum servat; redditio a parte spectatoris fit cum rel="nofollow noopener noreferrer" target="_blank" et hospite visibili iuxta textum nexus ostento.

Consideratio. Textus considerationis a creatore scriptae optionalis ("quid mutatum est, quid didicisti"). Eadem validatio NFC + codepoint hostilium ac title. Introitus vacuus / solum spatium tempore constructionis ad absentem decidit.

Versio schematis. v1 solum verdict_version = 0x01 sustinet. Revisiones schematis futurae hoc octetum augent et iuxta novam versionem protocolli per §12 perveniunt.


7. Protocollum Signandi

Sequentia signandi completa. Quisque gradus normativus est.

 1. User composes plaintext and metadata in ComposeQub.
 2. Validate:
    a. body is non-empty.
    b. body size ≤ max for content_type and user tier (see §6).
    c. unlock_at is in the future.
    d. unlock_at ≤ created_at + 10 years.
    e. content_type is a known, supported value.
    f. visibility is 0x00 (private) or 0x01 (public).
 3. Compute body_hash = SHA3-256(body).
 4. Set created_at = current Unix seconds UTC.
 5. Select drand chain. Load chain_genesis_time and chain_period_seconds, and
    compute drand_round = floor((unlock_at - chain_genesis_time) / chain_period_seconds) + 1
    (§4.3). (Computed here, before qub_id, because drand_round is bound into the
    qub_id preimage—§4.1.)
 6. Compute qub_id (see §4.1), folding in drand_round from step 5.
 7. Construct QubEnvelope with all fields.
 8. Serialise QubEnvelope using canonical CBOR → bytes B.
    Assert: serialised output matches canonical profile (§3).
 9. Compute C = tlock_encrypt(B, drand_round, drand_chain_public_key).
10. Construct SealedQub with tlock_ciphertext = C and matching qub_id, version,
    visibility, unlock_at, drand_chain_id, and drand_round.
11. Serialise SealedQub using canonical CBOR → SealedQubCbor.
12. Select the delivery shape from visibility:
    a. Private (0x00): generate K = 32 random bytes and N = 12 random bytes
       using a CSPRNG. Compute W = wrap_sealed_qub(SealedQubCbor,
       qub_id=qub_id, key=K, nonce=N) per §13. Upload payload = W.
    b. Public (0x01): upload payload = bare SealedQubCbor; do not generate K.
13. Display seal-time disclosure. User confirms.
14. Validate upload eligibility via the qub upload service (bot-detection, entitlement, rate limits).
15. Submit the selected upload payload to the qub upload service. For a private
    browser seal, the service is byte-blind to the inner SealedQubCbor and never
    receives K. The Builder `/api/v1/seal` route is an explicit exception: it
    receives plaintext and caller-supplied K in memory, then persists neither.
16. Receive arweave_tx_id from the service. For private delivery, construct
    `<origin>/c/<arweave_tx_id>#<base64url(K)>` (or the equivalent short-code
    path). For public delivery, omit the fragment. Browsers do not transmit URL
    fragments to servers, so K from the browser-seal path is not observed by
    qub.social or any storage gateway.

Stratum etiquettarum memoriae (extra-bandam). Servitium onerationis qub modicum consulto numerum etiquettarum transactionum memoriae apud onus onerationis electum apponit. Content-Type=application/octet-stream normative requiritur. Servitium referens insuper tres etiquettas optionales apponit cum creator eas ostentare eligit: Intent (intentio compositionis ex albo permisso comprobata—announcement, thesis, prediction, letter, secret, commitment, proof, aut verdict a systemate emissum), Author (digitus pubkey §9.3 creatoris ut hex minusculus 64-character), et Parent-Tx-Id (ID transactionis memoriae qub parentis pro catenis responsorum, 43-character base64url).

Etiquetta Author est electio per qub: applicatio creatoris referens eam apponit solum cum usuarius explicite attributionem publicam tempore signandi habilitat. Cum repagulum off est—quod est praedefinitum—nulla etiquetta Author scribitur et qub in catena sine attributione est: nihil in memoria perpetua onerationem ad creatoris signum, inscriptionem electronicam, vel alia qub adligat. Cum repagulum on est, digitus Author ad @signum ab creatore electum per catenam attestationis §9.5 resolvitur. Relationes catenae responsorum et Intent non-identificantes sunt. Pro traditione privata, involucrum externum (§13) artefactum internum SealedQub agnoscibile cifrat, ut sola involucrorum conservatorum collectio una cum subscriptionibus drand publicis ad corpus sine K recuperandum non sufficiat; etiquettae memoriae tamen metadata consulto publica manent.

Servitium referens consulto NON apponit etiquettas App-Name, App-Version, vel Type: quivis talis filtrum unius valoris totum corpus qub ad interrogationem GraphQL redderet, quod inconsistens est cum ambitu confidentialitatis corporis-soli involucri.

Verificator conformis NON DEBET ab ulla etiquetta memoriae dependere pro verificatione tertiae partis §11; spargmen corporis / qub_id / subscriptio se ad CBOR internum solum obligant, numquam ad complexum etiquettarum.


8. Protocollum Reserationis

Sequentia reserationis completa. Quisque gradus normativus est.

 1. Viewer opens delivery URL. Extract arweave_tx_id from the path and retain
    the optional URL fragment. Do not assume a missing fragment is an error:
    public/bare delivery intentionally has no K.
 2. Check denylist. If tx_id is denylisted → display block message. Stop.
 3. Fetch the stored bytes (with multi-gateway fallback).
 3a. Resolve the delivery shape structurally:
    a. If the bytes parse as OuterWrapper, require a well-formed 32-byte K in
       the URL fragment, require wrapper version 0x01, and unwrap per §13.
       Any missing/malformed K or AEAD failure is a terminal error.
    b. Otherwise require the bytes to parse as bare SealedQubCbor; no K is
       required. If neither shape parses, report an integrity error.
 4. Parse SealedQubCbor → SealedQub.
 5. Validate: SealedQub.version is known (0x01), visibility is known, and the
    delivery shape matches it (wrapped = 0x00 private; bare = 0x01 public).
    Reject any mismatch or unknown value.
 6. If current time < SealedQub.unlock_at → display countdown. Poll or wait.
 6a. Round-binding check. Recompute expected_round from
    SealedQub.unlock_at per §4.3. Reject unless SealedQub.drand_round ==
    expected_round OR SealedQub.drand_round == expected_round - 1 (the
    legacy pre-release mapping—see §4.3), AND the round baked into the tlock
    ciphertext stanza (read via the age/tlock header, no signature required)
    == SealedQub.drand_round exactly. The stanza round is the one that
    actually gates decryption; without this check a malicious creator could
    bind the ciphertext to an already-past round while displaying a future
    countdown, so anyone reading the stored bytes could decrypt before
    unlock_at. Implementations with no chain identity (test mocks) skip this
    check.
 7. Once current time ≥ SealedQub.unlock_at:
    a. Fetch drand round signature for SealedQub.drand_round from drand network.
    b. Compute B = tlock_decrypt(SealedQub.tlock_ciphertext, round_signature).
 8. Parse B → QubEnvelope.
 9. Validate QubEnvelope.version is known.
10. Verify: SHA3-256(QubEnvelope.body) == QubEnvelope.body_hash.
    Fail → integrity error.
11. Verify: QubEnvelope.qub_id == SealedQub.qub_id.
    Fail → integrity error.
12. Verify: QubEnvelope.unlock_at == SealedQub.unlock_at.
    Fail → integrity error.
12a. Verify: QubEnvelope.outcome_at == SealedQub.outcome_at (both absent, or
    both present and equal). Fail → integrity error.
12b. Content re-derivation. Recompute qub_id per §4.1 from the decrypted
    fields — (QubEnvelope.version, content_type, created_at, unlock_at,
    outcome_at, SealedQub.drand_round, QubEnvelope.body_hash,
    title_hash(SealedQub.title)) — and verify it equals SealedQub.qub_id.
    Fail → integrity error. The pairwise checks in steps 10-12a only prove
    the two layers agree with EACH OTHER; a forger who rewrites a bound
    field consistently on both surfaces (a pre-reveal title swap, or a
    post-round body swap with a recomputed body_hash re-encrypted to the
    same round under the same qub_id) passes them all. Only re-deriving
    the identity from content closes this.
13. Verify: QubEnvelope.content_type is known and renderable.
    Known values: 0x01 (text), 0x03 (pact), 0x04 (verdict).
    Unknown → display error.
14. If QubEnvelope.sig_alg != 0x00 → verify author signature (see §9.4).
15. If cosigner_pubkey or cosigner_signature present → verify cosigner (see §9.7).
16. Render content using the appropriate renderer (see §10 for text and §6 for pact/verdict).
17. Construct RevealedQub for display.

9. Subscriptio Auctoritatis

9.1 Ratio

Perpetue in memoria perpetua qub conduntur. Subscriptiones auctoritatis indefinite infalsificabiles manere debent, quare v1.0 schema post-quantum ML-DSA-65 (FIPS 204) potius adhibet quam schema classicum cuius securitas intra vitam perpetuam qub degradari possit.

9.2 Tabula Algorithmorum

sig_alg Schema Magnitudo Clavis Magnitudo Subscriptionis Status
0x00 Sine subscriptione (non subscriptum) — — Activum
0x01 ML-DSA-65 (FIPS 204) 1,952 octeta 3,309 octeta Activum
0x02 Ed25519 32 octeta 64 octeta Constans reservata; in protocollo v1 non sustinetur

Spectatores protocolli v1 quemque valorem extra {0x00, 0x01}, etiam valorem reservatum 0x02, reicere DEBENT. Reservatio usum fortuitum impedit; activatio non est. Activatio mutationem gubernatam in §15 descriptam requirit.

9.3 Constructio Praeimaginis Subscriptae

Duae versiones praeimaginis exstiterunt. Omnes subscriptiones V2 adhibere DEBENT, et verificatores V2 solam accipere DEBENT. Praeimago V1 legata (infra ad memoriam historicam documentata) ut auxilium solum-verificationis per migrationem ad V2 accepta est; illud auxilium abrogatum est, et subscriptio solum-V1 nunc reicitur.

V2 (currens — ab omni nova subscriptione auctoris producta, atque ab utraque subscriptione fluxus stationis / consubscriptionis pacti):

sig_input = SHA3-256(
    "QUB_AUTHOR_SIG_V2"  ||    // domain separator (17 bytes)
    version              ||    // u8 (1 byte)
    qub_id               ||    // [u8; 32] (32 bytes)
    body_hash            ||    // [u8; 32] (32 bytes)
    unlock_at            ||    // i64 big-endian (8 bytes)
    0x00                 ||    // u8 (1 byte): MUST be 0x00 in v1.x
    sender_label_hash    ||    // [u8; 32]: SHA3-256(NFC(sender_label)),
                               //   or 32 zero bytes when absent
    reply_to_or_zero           // [u8; 32]: parent qub_id, or 32 zero
                               //   bytes when absent
)

// Total preimage: 155 bytes → 32-byte hash

signature = Sign(author_secret_key, sig_input)

sender_label_hash eandem conventionem sentinellae-absentiae ac title_hash (§4.2.1) sequitur: 32 octeta nulla non sunt digestum SHA3-256 validum, ita ut "absens" numquam cum capsa praesenti collidere possit. Omnes campi latitudinis fixae sunt, ita ut praeimago sine praefixis longitudinis non ambigua sit.

V1 (legata — ABROGATA; non iam producta neque iam ad verificationem accepta):

sig_input = SHA3-256(
    "QUB_AUTHOR_SIG_V1"  ||    // domain separator (17 bytes)
    version              ||    // u8 (1 byte)
    qub_id               ||    // [u8; 32] (32 bytes)
    body_hash            ||    // [u8; 32] (32 bytes)
    unlock_at            ||    // i64 big-endian (8 bytes)
    0x00                       // u8 (1 byte): MUST be 0x00 in v1.0
)

// Total preimage: 91 bytes → 32-byte hash

Praeimago V1 sender_label et reply_to omittebat. Ut auxilium solum-verificationis per migrationem ad V2 accepta est; illud auxilium interim abrogatum est — verificatores praeimaginem V2 solam accipere DEBENT. Definitio hic ad memoriam historicam et ad separatorem dominii infra explicandum retinetur. Subscriptio quae solum contra V1 verificatur ut defectus verificationis tractari DEBET.

Separatores dominii: "QUB_AUTHOR_SIG_V1" / "QUB_AUTHOR_SIG_V2" sunt 17 octeta ASCII singuli ([0x51, 0x55, 0x42, 0x5F, 0x41, 0x55, 0x54, 0x48, 0x4F, 0x52, 0x5F, 0x53, 0x49, 0x47, 0x5F, 0x56, 0x31/0x32]). Nullum farciminis. Separator differens duas constructiones dominio disiungit, ita ut subscriptio super unam praeimaginem numquam ut altera verificari possit.

Octetum org_id_present: octetum post unlock_at sequens esse DEBET 0x00. Implementatio referens hoc ut constantem ORG_ID_PRESENT_INDIVIDUAL = 0x00 in crates/qub-core/src/signing.rs exponit; spectatores sig_input pro verificatione reconstruentes idem octetum emittere DEBENT.

Ambitus subscriptionis — quod tegitur et quod non. sig_input V2 se directe obligat ad version, qub_id, body_hash, unlock_at, sender_label, et reply_to (plus separator dominii fixus et octetum org_id_present). qub_id ipse derivatur ex version, content_type, created_at, unlock_at, outcome_at, drand_round, et body_hash per praeimaginem §4.1, ita ut quaevis mutatio in illis campis qub_id diversum producat et subscriptionem transitive invalidet. Superficies authenticata itaque est:

Campus Authenticatus per subscriptionem Quomodo
version ✓ Ingressus directus in sig_input
qub_id ✓ Ingressus directus
body_hash ✓ Ingressus directus
unlock_at ✓ Ingressus directus
sender_label ✓ Ingressus directus per sender_label_hash (praeimago V2 — sola forma accepta)
reply_to ✓ Ingressus directus per reply_to_or_zero (praeimago V2 — sola forma accepta)
content_type ✓ Transitive, per praeimaginem qub_id
created_at ✓ Transitive, per praeimaginem qub_id
outcome_at ✓ Transitive, per praeimaginem qub_id
drand_round ✓ Transitive, per praeimaginem qub_id
body ✓ Transitive, per body_hash = SHA3-256(body)
author_pubkey — (implicitus) Clavis quae subscriptionem verificavit auctor est, per definitionem
cosigner_pubkey / cosigner_signature — Independenter subscriptum super eundem sig_input (vide §9.7)
drand_chain_id, tlock_ciphertext, visibility — Campi SealedQub externi, non intra involucrum — per invariantes structurales suos teguntur (consistentia cycli / catenae) sed non per subscriptionem auctoris. (drand_round nunc transitive per praeimaginem qub_id adligatur — vide supra.)

Cur V2 sola praeimago accepta est.

Implementationes quae sender_label aut reply_to usuariis finalibus ostentant identitatem authenticatam (digitum pubkey, attestationem) ut signum identitatis primarium ostendere DEBENT, non capsam.

9.4 Procedura Verificationis

1. Read sig_alg from QubEnvelope.
2. If sig_alg == 0x00 → unsigned. No verification. Display "unsigned qub."
3. If sig_alg is unknown → reject. Display "unrecognised signature scheme."
4. Extract author_signature and author_pubkey. If either is absent → integrity error.
5. Reconstruct sig_input using fields from QubEnvelope (V2 formula, §9.3).
6. Verify(author_pubkey, sig_input, author_signature). The V2 preimage is the
   only accepted form — the legacy V1 fallback is retired (§9.3), so a
   signature that does not verify against V2 fails, full stop.
7. If verification succeeds → display "signed by [key fingerprint]."
8. If verification fails → display "signature verification failed."

Verificatio subscriptionis est operatio sumptuosissima (praesertim ML-DSA-65). Post omnes verificationes minoris pretii (spargmen, qub_id, unlock_at) peractas fieri OPORTET.

9.5 Attestationes Identitatis

Attestationes identitatis — mappa author_pubkey ad postulationes identitatis hominibus agnoscibiles ut signum qub, inscriptionem electronicam, signum sociale, vel litteras passkey — sunt augmentum progressivum a parte spectatoris et non requiruntur pro verificatione subscriptionis. Spectatores qui attestationes ad identitatem ostentatam resolvunt praecedentiam DEBENT applicare:

handle > email > social > fingerprint

Defalcum digiti est hex minusculus SHA3-256(author_pubkey); semper disponibile est pro quovis qub subscripto. Spectatores id pro exhibitione abbreviare POSSUNT — spectator referens qub: sequente primis et ultimis quattuor octetis reddit (qub:<8 hex>…<8 hex>).

Verificator conformis quamque verificationem in §9.4 perficere potest sine API qub contingendo, sine ulla rete praeter memoriam perpetuam et drand, et sine ulla quaesitione a parte servitoris. Resolutio attestationis est gradus separatus optimi conatus solum post verificationem subscriptionis prosperam peractus.

9.6 Impactus Magnitudinis

Ed25519 ML-DSA-65
Subscriptio 64 octeta 3,309 octeta
Clavis publica 32 octeta 1,952 octeta
Totale per qub 96 octeta 5,261 octeta
Differentia sumptus conservationis (apud ~$5/MB) ~$0.0005 ~$0.026

Pro qub textuali 500–2,000 octetorum, ML-DSA-65 fere triplicat magnitudinem conditam. Sumptus absolutus negligibilis est.

9.7 Verificatio Consubscriptoris (Pacta Bilateralia)

Pro pactis bilateralibus (content_type = 0x03), secundum stratum subscriptionis probat utramque partem in eosdem terminos consensisse.

Campi involucri:

Utrique campi simul praesentes esse aut utrique absentes DEBENT. Si exacte unus praesens est, spectatores errorem integritatis nuntiare DEBENT.

Procedura verificationis:

1. If cosigner_pubkey absent and cosigner_signature absent → no cosigner. Done.
2. If exactly one is present → integrity error.
3. Verify cosigner_pubkey != author_pubkey (prevent self-cosigning).
   Fail → display "cosigner pubkey must differ from author."
4. Reconstruct sig_input using the same formula as §9.3 (V2 only — the
   legacy V1 fallback is retired; all pact clients produce V2 signatures).
5. Verify(cosigner_pubkey, sig_input, cosigner_signature).
6. Success → display "co-signed by [cosigner fingerprint]."
7. Failure → display "co-signature verification failed."

Proprietates:

Cancellum-electronicae-adligationis (operationale). Cum pactum stationatum contactum electronicum Partis B fert (§6.1), servitium onerationis qub petitionem consubscriptionis recusare DEBET nisi nota verificationis electronicae brevis durationis exsistit utrique id stationis et spargmini-electronicae-normalizatae illius contactus congruens. Nota a /api/v1/auth/verify scribitur cum signum magici nexus staging_id fert et inscriptio verificata SHA-256(normalise_email(party_b.contact)) congruit — ubi normalise_email(addr) casum partis-localis servat et solum partem dominii minuscularizat (per RFC 5321 §2.3.11), et SHA-256 hic est spargmen NIST FIPS 180-4 (distinctum a SHA3-256 in derivationibus §4 adhibito) — et 900 secundis (15 minutis) post emissionem exspirat. Hoc est cancellum operationale anti-impersonationis, NON pars probae qub in catena — verificator tertiae partis §11 retegens solum memoriam perpetuam et drand opus habet, sine ulla quaesitione a parte servitoris. Nota a parte servitoris solum existit et numquam pars corporis subscripti est.

Impactus magnitudinis (ML-DSA-65 auctor + consubscriptor):

Componens Magnitudo
Subscriptio auctoris 3,309 octeta
Clavis publica auctoris 1,952 octeta
Subscriptio consubscriptoris 3,309 octeta
Clavis publica consubscriptoris 1,952 octeta
Onus cryptographicum totale 10,522 octeta
Differentia sumptus conservationis ~$0.05

10. Redditio et Mundatio Markdown

Haec sectio securitate critica est. Spectator qub textualia (content_type = 0x01) per Markdown subset restrictum reddit.

10.1 Elementa Permissa

10.2 Elementa Vetita

Elementum Tractatio
HTML crudum (<div>, <script>, etc.) Omnino exsectum. Nihil HTML transit.
Imagines (![alt](url)) Exsectae. Syntaxis imaginis ex exitu removetur.
Nexus ([text](url)) URL ut textus simplex visibilis redditur. Non auto-nexa. Non clickabilis sine actione usuarii explicita.
Schemata URL periculosa javascript:, data:, vbscript:, file: — exsecta.
Iframes, embeds, obiecta Exsecta.
Entitates HTML Solum decodificantur in characteres ostensionis si tutae sunt.

10.3 Implementatio

Implementationes lectorem stricti allowlist adhibere DEBENT, non blocklist. Approchatio commendata:

  1. Markdown per pulldown-cmark (vel aequivalentem) legere.
  2. AST ambulare et quemvis nodum non in allowlist (§10.1) demittere.
  3. Pro nodis nexuum: URL ut textum visibilem emittere, non ut elementum <a> clickabile.
  4. AST filtratum in repraesentationem intermediam typizatam convertere (e.g., enumeratio MarkdownNode cum solis variantibus tutis). HTML crudum in hac IR structuraliter inrepresentabile est.
  5. Ex IR typizata ad stratum visus targetis reddere (e.g., componentia visus reactiva, nodos DOM). Nulla concatenatio textus HTML aut innerHTML ullo loco.

Approchationes blocklist fragiles sunt quia novae extensiones Markdown aut quirka lectoris elementa infiltrata invehere possunt. Approchatio AST-typizata XSS structuraliter impossibilem efficit — nulla variants existit quae HTML arbitrarium ferre possit.

10.4 Limites Magnitudinis et Structurae


11. Verificatio Tertiae Partis

Quaevis tertia pars quae octetos conservatos tenet (atque K pro qub privato/involuto) artefactum cryptographicum sine cooperatione qub verificare potest. Vindicatio existentiae sigillo temporis independente firmata insuper aut inclusionem transactionis memoriae perpetuae per-qub verificatam aut probam tabularii perspicui §16 verificatam requirit.

1. Obtain the stored bytes. For a private delivery, also obtain K from the
   delivery-link fragment.
2. Resolve the delivery shape (§8 step 3a): unwrap OuterWrapper with K, or
   accept bare SealedQubCbor. Require shape/visibility agreement.
3. Parse SealedQubCbor → SealedQub; validate protocol version, visibility,
   content type, chain identity, and structural bounds.
4. Recompute expected_round from unlock_at (§4.3); require the stored round
   (allowing the documented legacy minus-one case) and ciphertext-stanza round
   to agree exactly as §8 step 6a specifies.
5. Obtain the drand signature for SealedQub.drand_round and verify its BLS
   signature against the pinned chain public key.
6. tlock_decrypt(tlock_ciphertext, round_signature) → QubEnvelope CBOR bytes.
7. Parse → QubEnvelope.
8. Verify SHA3-256(body) == body_hash.
9. Verify envelope/sealed equality for qub_id, unlock_at, and outcome_at.
10. Recompute qub_id from the decrypted fields, sealed drand_round, and title;
    require it to equal the carried qub_id (§4.1).
11. If sig_alg != 0x00, verify the V2 author signature (§9.4). If cosigner
    fields are present, verify their pairing, key separation, and signature
    (§9.7).
12. For an existence-time claim, independently verify either:
    a. the permanent-storage transaction's data-to-id binding, owner, block
       inclusion, and block timestamp; or
    b. a §16 inclusion proof through its pinned anchor and anchor block time.
13. Report each verified claim separately; do not collapse an absent storage
    or anchor proof into a successful timing verdict.

Quid verificatio probat:

Ingressus probae Quid stabilit
Fasciculus / artefactum signatum validum + subscriptio drand Corpus recuperatum body_hash congruit; metadata in qub_id adligata integra sunt; textus cifratus ad cyclum drand declaratum adligatur; et ille cyclus iam praeteriit. Hoc tempus creationis textus cifrati non stabilit.
Subscriptio V2 auctoris/consubscriptoris valida Possessor(es) clavium arcanarum congruentium superficiem subscriptam in §9.3 auctoritate confirmarunt.
Transactio memoriae per-qub independenter verificata Textus cifratus conservatus exactus non serius quam tempore blochi eius exstitit.
Proba tabularii perspicui ancoriis firmata valida Vindicatio generi folii propria in §16.11, termino superiore temporis obligationis e blocho ancorae incluso.

Quid verificatio NON probat:

Non-proba Cur
Auctoritas sender_label ad ornamentum est. Sine sig_alg ≥ 0x01, quisvis potuit hoc contentum signasse.
Intentio Artefactum octetos et relationes cryptographicas probat, non quid creator subiective intendebat.
Obligatio praeexistens ex solo .qub Creator fasciculum validum postquam cyclus adligatus praeteriit componere potest. Subscriptio drand inclusa cyclum praeterisse probat, non textum cifratum ante eum exstitisse.
Tempus exactum premendi "signa" Tempus blochi memoriae aut ancorae est terminus superior independenter verificabilis et actionem localem usuaris sequi potest. Assertiones sealed_at / received_at vim probandi non habent.

Tabularium perspicuum implementatum (§16) verificationem trans qub extendit per ordinationem manifestae-violationis et terminum superiorem temporis obligationis sine fiducia (tempus blochi ancorae), secundum genus folii circumscriptum (§16.11). Auctoritatem aut intentionem non addit; in itinere onerationis praedefinito octetum-caeco neque body_hash neque drand_round per se probat, quae ex inspectionibus artefacti manent.


12. Versionatio et Imperium Editionum

Editiones documenti, protocollum filiforme internum, et involucrum externum sunt spatia versionum separata. Itaque declaratio solum documentaria octetos tacite non mutat, nec migratio filiformis futura pro emendatione redactionis haberi potest.

12.1 Versio Editionis Documenti

Haec specificatio editionibus semanticis documenti (MAJOR.MINOR.PATCH) et etiquetta Git immutabili protocol-v<release> utitur.

Status editionis unus est ex Schedula (nondum normativa), Currens (unicus scopus implementationis commendatus), aut Superata (pro verificatione historica retenta). Iter sine versione /protocol editionem Currentem ostendit; etiquetta editionis fontem exactum omnemque localem cum eo publicatum conservat. Status aut numerus editionis mutari non potest quin haec tabula et historia editionis eadem mutatione recensita renoventur.

Editio documenti Dies effectivus Status Protocollum filiforme Involucrum Fons
1.0.0 2026-09-23 Currens 0x01 0x01 protocol-v1.0.0

12.2 Versio Protocolli

Campus version (u8) in utroque SealedQub et QubEnvelope versionem maiorem protocolli identificat.

12.3 Historia Versionum Protocolli

Versio Valor Descriptio
v1 0x01 Traditio privata/involuta et publica/nuda; corpora textus (0x01), pacti (0x03), et sententiae (0x04); subscriptiones V2 auctoris/consubscriptoris ML-DSA-65; tlock quicknet drand; SHA3-256.

12.4 Compatibilitas Prospiciens

Spectator v1 occurrens QubEnvelope cum clavibus mappae CBOR ignotis (claves non in ordine canonico §3.2) id cum errore decodificationis reicere DEBET (§3.1). Compatibilitas prospiciens campo version vehitur, non tolerantia clavium: additiones futurae — etiam metadata minora — sub novo valore version invehuntur, quem spectator v1 cum errore claro "protocollum recentius" reicit potius quam contentum quod subscriptiones obligant tacite abiciendo.

Spectator v1 occurrens sig_alg = 0x01 (ML-DSA-65) sed facultate verificationis ML-DSA-65 carens contentum qub cum notitia "subscriptio praesens sed non verificabilis" ostentare OPORTET, non qub omnino reicere. Implementatio referens hodie omnem valorem sig_alg praeter 0x00 et 0x01 reicit quia tabula v1 nullum alium algorithmum validum continet — reiectio stricta et soft-fail observationaliter identicae sunt usque ad tertium algorithmum registratum. Comportamentum soft-fail supra onus-portans fit cum §9.2 novum ingressum admittit, et spectator referens eo puncto ad soft-fail renovabitur.

12.5 Versio Involucri Externi

OuterWrapper in §13 descriptum suum octetum version fert, independens ab SealedQub.version et QubEnvelope.version. Spatia versionum duo separatim evolvuntur: substitutio symmetrica post-quantum-tuta futura octetum involucri inscandit sine versione protocolli interni tangenda, et additio strati-protocolli futura (e.g., novus campus involucri) versionem internam inscandit sine octeto involucri tangendo.

OUTER_WRAPPER_VERSION_* Valor Algorithmus Status
OUTER_WRAPPER_VERSION_1 0x01 AES-256-GCM cum nonce 12-octetorum, etiquetta authenticationis 16-octetorum, AAD ad qub_id adligata Activum pro traditione privata
— 0x02–0xFF Reservatum Futurum

Spectatores versiones involucri ignotas cum errore claro reicere DEBENT. Protocollum consulto spatium versionum involucri angustum servat usque ad agentem migrationis concretum apparentem (e.g., normam NIST aliud AEAD favens); receptaculum 0x02 in eadem revisione qua algorithmus invehetur allocabitur.


13. Involucrum Cifrationis Externum

13.1 Ratio

Strata protocolli (QubEnvelope → tlock → SealedQub) qub signatum temporalibus claustris obligatum efficiunt: corpus illegibile est usque ad unlock_at et subscriptio cycli drand publicata est. Post reserationem tamen, subscriptio cycli publica est et figura CBOR canonica SealedQub agnoscibilis est, ita ut metalator qui transactiones memoriae perpetuae indexavit totum corpus qub in bulkis decifrare possit.

Pro traditione privata, involucrum cifrationis externum hoc canale claudit interponendo additionale stratum symmetricum AEAD inter SealedQubCbor canonicum et octetos conservatos. In itinere signandi navigatoris, clavis 256-bitorum K solum in URL fragmento URL traditionis et in machinis usuariorum vivit; navigatores fragmenta URL ad servitores non transmittunt, ita ut qub.social, omnis porta memoriae, et omnis CDN ante alterutram observationaliter ad K caecae sint. Forma conservata qub privati itaque est textus cifratus opacus cuius textus simplex sine URL quem creator communicare elegit irrecuperabilis est. Traditio publica hoc stratum consulto omittit (§13.8).

Effectus retis:

13.2 Stratificatio

plaintext body                       ← QubEnvelope.body (§2.2)
  ↓ canonical CBOR (§3)
envelope CBOR
  ↓ tlock encrypt to drand round (§7 step 10)
tlock_ciphertext (inside SealedQub) (§2.3)
  ↓ canonical CBOR (§3)
SealedQubCbor bytes                  ← inner wire artifact
  ├─ public (visibility=0x01) ───────────────▶ stored directly (§13.8)
  └─ private (visibility=0x00)
       ↓ AES-256-GCM(K, nonce, AAD=qub_id) (§7 step 12, this section)
     OuterWrapper CBOR bytes         ← stored private payload

Signare et reserare in strato protocolli (§7, §8) immutata sunt infra confinium involucri; involucrum se ad locum vocationis seal() attingit et se ad locum vocationis unlock() separat.

13.3 Structura Datorum OuterWrapper

struct OuterWrapper {
    version:    u8,           // 0x01, see §12.5
    qub_id:     [u8; 32],     // copied from inner SealedQub; AEAD AAD
    nonce:      [u8; 12],     // 96-bit AEAD nonce
    ciphertext: Vec<u8>,      // AES-256-GCM(K, nonce, SealedQubCbor, AAD=qub_id) || 16-byte tag
}

Invariantes camporum.

Codificatio CBOR. CBOR canonicum per §3, cum eadem regula ordinis clavium (per longitudinem octetorum codificatorum ascendentem, deinde lexicographice). Quattuor claves sunt:

Clavis Octeta codificata Ordo
nonce 6 1
qub_id 7 2
version 8 3
ciphertext 11 4

Primum octetum OuterWrapper CBOR itaque est caput mappae longitudinis definitae pro mappa 4-ingressuum (0xA4).

13.4 Adligatio AAD ad qub_id

Involucrum qub_id ut AEAD additional authenticated data adligat. Hoc est defensio structuralis onus-portans contra tres classes oppugnationis:

Oppugnatio Defensio
Textum cifratum sub diverso campo qub_id in involucro movere Discordantia AAD → authenticatio AEAD fallit
Miscere fragmentum URL qub A cum octetis conservatis qub B Clavis falsa (et AAD independenter adligatum) → authenticatio AEAD fallit
Violare campum qub_id involucri post onerationem Discordantia AAD → authenticatio AEAD fallit

Ferre qub_id in textu simplici involucri immunitatem enumerationis significanter non infirmat — qub_id ipse est spargmen SHA3-256 praeimaginis §4.1 sine praeimagine recuperabili ex digesto, et enumerator qui iam octeta involucri metavit nihil discit ex qub_id visibili quod ex existentia onerationis ipsius inferre non potuisset.

13.5 Algorithmi Involucrandi et Disinvolucrandi

wrap_sealed_qub(SealedQubCbor S, qub_id Q, key K, nonce N):
    require K.len() == 32 and N.len() == 12 and Q.len() == 32
    I := canonical_cbor_decode(S) as SealedQub
    require I.qub_id == Q               // reject mismatched caller AAD
    C := AES_256_GCM_encrypt(key=K, nonce=N, msg=S, aad=Q)
    // C includes the 16-byte authentication tag at the end
    return canonical_cbor_encode(OuterWrapper{
        version:    0x01,
        qub_id:     Q,
        nonce:      N,
        ciphertext: C,
    })

unwrap_sealed_qub(OuterWrapper bytes W, key K):
    require K.len() == 32
    O := canonical_cbor_decode(W) as OuterWrapper
    require O.version == 0x01           // §12.5
    P := AES_256_GCM_decrypt(
            key=K, nonce=O.nonce, ciphertext=O.ciphertext, aad=O.qub_id
         )
    // any AEAD failure → DECRYPT_FAILED, indistinguishable to caller
    S := canonical_cbor_decode(P) as SealedQub
    require S.qub_id == O.qub_id       // explicit inner/outer cross-check
    return P                            // P is the validated SealedQubCbor

Collapsus modi-fallendi. K falsum, nonce falsum, discordantia AAD, et textus cifratus violatus omnia eundem errorem DECRYPT_FAILED producunt. Hoc est proprietas AEAD consulta: distinguere modum fallendi canalem lateralem crearet quem oppugnator remotus probare posset mittendo involucra malformata et tempus responsi metiendo. Implementationes referentes omnes failurae AEAD ad unam errorem formam collapsare DEBENT.

13.6 Materia Clavis et Distributio

Clavis involucrandi K est valor random uniformis 256-bitorum per qub a CSPRNG generatus. Implementationes referentes eum ex his fontibus haurient:

Distributio: K ut base64 URL-tuta codificari DEBET (RFC 4648 §5, sine farcimine) et ad URL traditionis ut componens fragmenti adici:

delivery_url = <origin>/c/<arweave_tx_id>#<base64url(K)>

Fragmentum a navigatore conformi ad nullum servitorem umquam transmittitur. Canales recuperationis (index historiae a parte servitoris, auto-missio per inscriptionem electronicam optionalis) qui plenum URL traditionis — fragmentum inclusum — ultra machinam usuarii persistunt sunt commercium explicitum contra habitum defalci cripto-tritae et a consensu usuarii explicito pendere DEBENT.

Amissio fragmenti. Si usuarius fragmentum URL amittit et nullum canalem recuperationis habet, qub illegibile est. Hoc est commercium onus-portans designi et usuario tempore signandi divulgari DEBET. MVP divulgationem tempore signandi cum copia "serva hoc URL" explicita et canale recuperationis inscriptionis-electronicae-verificatae pro usuariis qui optant fortificat.

13.7 Extra Ambitum Huius Sectionis

13.8 qub publica (omissio involucri)

Involucrum externum optionale in strato traditionis est. Creator qub ut publicum signare potest, quo casu SealedQubCbor canonicum directe in canalem conservationis intrat, sine ullo strato OuterWrapper et sine clave K:

SealedQubCbor bytes  ──(public)──▶  stored as-is
SealedQubCbor bytes  ──(private)─▶  AES-256-GCM(K, …) ▶ OuterWrapper ▶ stored

qub publicum temporalibus claustris obligatum est sed nexu non controllatum: illegibile manet usque ad cyclum drand suum publicatum (stratum tlock immutatum est), sed post reserationem quivis qui identificatorem transactionis memoriae habet illud decifrare potest—nullum fragmentum URL requiritur, quia nulla K est. Hoc est commercium consultum pro superficiebus quas servitor agere DEBET: epistulae nuntiationis tempore revelationis, nexus oEmbed/inclusionis automaticae sine fragmento, et SEO ditior post revelationem nexum requirunt qui sine arcano quod servitor numquam tenet operatur (§13.6). qub privatum tamen forma explicita <qub-embed src="full_delivery_url"> uti potest cum editor facultatem plenam fragmentum ferentem praebet.

Effectus quos productor in computum ducere DEBET:

Privatum (involutum) defalcum manet; publicum est electio creatoris explicita per qub.


14. Vectores Probationis

14.1 Derivatio qub_id

Input:
  version      = 0x01
  content_type = 0x01
  created_at   = 1735689600 (2025-01-01 00:00:00 UTC)
  unlock_at    = 1736294400 (2025-01-08 00:00:00 UTC)
  outcome_at   = absent
  drand_round  = 4695446  (= floor((1736294400 - 1595431050) / 30) + 1, §4.3 mapping, drand mainnet params §14.2)
  body         = "Hello, future."  (UTF-8, 14 bytes)
  title        = absent

Intermediate:
  body_hash  = SHA3-256("Hello, future.")
             = 76ab8b3f843c6ed4f2d0fd75b9f457b4
               ad49dd4450f9c22723ae430e3af3211d
  title_hash = [0u8; 32]   (title absent — §4.2.1 sentinel)

Domain separator (10 bytes):
  [0x51, 0x55, 0x42, 0x5F, 0x49, 0x44, 0x5F, 0x56, 0x32, 0x00]

Preimage (108 bytes—current protocol v1):
  domain_separator    ||  // 10 bytes
  0x01                ||  // version
  0x01                ||  // content_type
  0x0000000067748580  ||  // created_at as i64 big-endian (1735689600)
  0x00000000677DC000  ||  // unlock_at as i64 big-endian (1736294400)
  0x0000000000000000  ||  // outcome_at_or_zero (outcome_at absent)
  0x000000000047A596  ||  // drand_round as u64 big-endian (4695446)
  body_hash           ||  // 32 bytes
  title_hash              // 32 bytes (all-zeros sentinel; title absent)

Expected output:
  qub_id = SHA3-256(preimage)
         = 4a84e3dfaec32954949c30073f8e6506
           fd3204c1bb97f9162b81c7587afe412e

Implementationes valores body_hash et qub_id identicos pro hoc ingressu producere DEBENT. Hic vector probationis primus unitatis probationis scriptus esse OPORTET. Valores canonici supra ab implementatione referente computati sunt et bitatim congruere DEBENT. Dispositiones prototypi historicae ante emissionem (nulla qub viva a primis duabus pendebant) 92 octetis ante outcome_at utebantur (3d9fc2390eab043d38a1669ed3b71be76f9eefe872b9569ab1aaa027b88392b0) et 100 octetis post outcome_at_or_zero additum (b0d032898ad629795150fdcb3f84e518f59ed05b7a2a82bc24ebdb87f52144ed). Dispositio currens 108-octetorum deinde drand_round et separatorem dominii QUB_ID_V2 addidit. Vector priscus 108-octetorum mappa legata ceil utebatur (drand_round = 4695445) atque 3a9fcb31b750d985c262fada6d4f777fd6a28be831d941d85c131f5a4bbaf8a4 producebat—quod adhuc qub_id validum pro illo cyclo est, dum exemplum supra mappam cycli currentis §4.3 sequitur.

14.2 Mappa Cycli-Reserationis

Input:
  unlock_at           = 1735689600
  chain_genesis_time  = 1595431050
  chain_period_seconds = 30

Calculation:
  (1735689600 - 1595431050) / 30 = 4675285.0
  floor(4675285.0) + 1 = 4675286

drand_round = 4675286

Cyclus 4675286 tempore 1595431050 + (4675286 - 1) * 30 = 1735689600 publicatur—exacte apud unlock_at, numquam ante. (Mappa legata ante emissionem ceil dabat 4675285, tempore 1735689570 publicatum—30 secundis mature; verificatores illum cyclum legatum per §4.3 accipiunt.)

14.3 Iter Vicissim CBOR Canonicum

Implementationes verificare DEBENT serialize(parse(serialize(qub))) == serialize(qub) pro omnibus ingressibus validis. Haec est probatio proprietatum, non vector singulus.

14.4 PactTerms CBOR (content_type 0x03)

Input:
  pact_version = 1
  title        = "Scooter deposit"
  terms        = [
    { key: "Item",    value: "Honda Metropolitan scooter" },
    { key: "Price",   value: "$100" },
    { key: "Deposit", value: "$10" }
  ]
  party_a      = { label: "Alice" }
  party_b      = { label: "Bob", contact: "bob@example.com" }
  notes        = absent

Canonical CBOR key order (PactTerms):
  "notes"(6) < "terms"(6) < "title"(6) < "party_a"(8) < "party_b"(8) < "pact_version"(13)

Canonical CBOR key order (PactTerm):
  "key"(4) < "value"(6)

Canonical CBOR key order (PartyIdentifier):
  "label"(6) < "contact"(8)

Octeta CBOR canonica et body_hash SHA3-256 ab implementatione referente computantur. Implementationes CBOR octetum-identicum pro hoc ingressu producere DEBENT.

Implementationes etiam verificare DEBENT serialize(parse(serialize(pact))) == serialize(pact) pro omnibus ingressibus PactTerms validis (probatio proprietatum).

14.5 Vectores Cross-Linguistici Involucri Externi

Involucrum externum (§13) habet fixuram canonicam separatam apud crates/qub-core/tests/vectors/wrapper_v1.json. Quisque casus fixit tuplum (key, nonce, qub_id, sealed_cbor) ut ingressus hex opacos et exitum specificum expected_wrapper_hex asserit. Utraeque implementationes referentes idem ipsum file JSON consumunt:

Fixura currenter tres casus involucri humili-gradu affigit. Ii codificationem OuterWrapper deterministicam et interoperabilitatem AEAD independenter ab invarianti figurae traditionis §13.8 probant; imprimis nomen historicum basic-text-public eiusque visibility = 0x01 internum octetos involutos inde productos traditionem publicam conformem non efficiunt. Productor adhuc octetos internos publicos nudos conservare et solum internos privatos (0x00) involvere DEBET.

Casus Coverentia
basic-text-public Nomen fixurae humili-gradu historicum. Minima figura SealedQub realistica, sine campis optionalibus; octetos involucri solum probat nec est traditio conservata §13.8 conformis.
with-recipient-pubkey SealedQub cum recipient_pubkey posito (via futura reservata). Diversum complexum clavium internarum CBOR exercet; contentum distinctum fixurae per se qub_id diversum producit (recipient_pubkey ipse in praeimagine §4.1 non est).
longer-body Corpus ~4 KiB — multi-octeta praefixa longitudinis CBOR intra utrumque involucrum internum et textum cifratum externum exercet.

Implementationes expected_wrapper_hex octetum-identicum pro ingressibus recordatis producere DEBENT. Regenerare fixuram requirit QUB_REGEN_VECTORS=1 cargo test -p qub-core --test wrapper_vectors et mutationibus formae consultis reservatur.


15. Gubernatio Profili Cryptographici (Futurum)

Haec sectio informativa est pro v1 et normativa fit prima vice qua secundus algorithmus in ullum primordium cryptographicum qub ingreditur.

15.1 Habitus Currens

Protocollum v1 exacte unum algorithmum per primordium adligat:

Verificatores currenter longitudines clavium et subscriptionum per primordium activum duro-codificant. Octeti sig_alg et versionis involucri selectores expliciti sunt, sed v1 nihil intra bandam negotiatur atque solos valores activos supra admittit.

15.2 Figura Intenta

Cum secundus algorithmus protocollum ingreditur, verificator pro CryptoProfile nominato configurabitur (e.g., ExqubV1) complexum exactum valorum permissorum per primordium enumerans — sig_alg, catenae drand, versiones involucri, typi contenti. Profilum tempore verificationis fixum est, numquam intra-bandam negotiatum. Quivis valor extra profilum activum reicitur.

Hoc cavet ne addere ML-DSA-87 aut activare Ed25519 retroactive configurationes verificatorum existentes infirmare possit: verificator v1 verificator v1 manet etiam postquam profilum v2 publicatum est.

15.3 Condiciones Pellentes

Promove §15 ad statum normativum cum quidvis horum proponitur:

Usque tunc §15 est receptaculum quod figuram migrationis affixit ita ut PR futurae contra target notum cadunt potius quam superficiem negotiationis ex integro re-litigando.


16. Perspicuitatis Codex et Durabilitatis Gradus (Implementatum — recensio completa)

Status Haec sectio est exsecutus (W5/UP-B1, Gradus 1–8), cum productor et fide-radix ambit hic declarata. Filum formae, hashing, et verifier semitae sunt vivae: nucleus Merkle + canonical-CBOR genera (qub-core), TypeScript speculum + ANS-104 conglobator (workers/api/src/crypto/), solus scriptor LogDO + coordinata-clavis R2 nodi copia, illa /upload log-append conatus, cotidie ancora + mangone-discendere crons, GET /api/v1/qub/:tx_id/proof (inclusio) et GET /api/v1/log/consistency (RFC 9162) probationem terminae, typus inclusionis probationem portata in .qub fasciculus (§17.5), indigenam ANS-104 ancora verifiertools/qub-verify), et bina sui edita-capita uncinetum (§16.6). Successus /upload semper R2-durabilis sed ligno-opertus est solum quando LOG_DO configuratus est et inline additio succedit; tunc tantum eius responsum fert log_seq, receiptet anchor_statusSi RECEIPT_SK absens aut invalidus est, illius receptum sig_b64url vacuum est nec praebet ullum non-repudiation. Hodiernus /seal et pactum publicationem vias schedulam singulis Arweave negotiationes sed non addere folium log. Nullus codex nunc perficiunt /upload commentarius proposita postea reconciliationem post defectum appendicis. W5 externa recensio completa est: §16.15 decisiones consilii et limitationes launch commemorat, sed illae limitationes non extendunt coverage producentis modo dictum. Tres fiducia/deployment res restant clausae(a) fidelis ancora marsupiumANCHOR_JWK; LogProfile.anchor_owner adhuc est [0xAB; 32] locumtenens); (b) clavis subsignandi recepti et consonans publicum clavem PIN (RECEIPT_SK est optativum et LogProfile.receipt_pubkey hoc momento vacuum est); et (c) seipsum-publle-heads GitHub repositum + tessera (§16.6). Donec ancoram/profile quickpins praebentur, solus verifier referat probationem statum sincere potius quam affirmans plene ancoratum, pinned verification. Designatio est strictissime additivum et est nulla mutatio ad SealedQub / QubEnvelope filum forma.

16.1 Rationes et Gradus Durabilitatis

Nunc vias publicationis solvit agnitionem a Arweave confirmatione: derivant et signant singulam transactionem, servant artificium et statum submissionis in R2, deinde mittunt asynchronous. Log transparentiae addit sicuti independenter ancoratus ordinatio stratum pro subset communem. /upload postulationes quarum LogDO appendit succedit:

Tier nomen Securitas cum
T1 R2-primum synchronum agnoscere Durabilitas solum — clausae bytes et exacta statio publicationis scribuntur in durabile repono ante successum redditur. Per vias currentis publicationis impletum.
T2 Inclusio vitreae schedulae in aggregeratione Adde-solitum, immutabiliter evidentem obligationem + ordinatio totalis semel inclusa et anchata. Praesens productor: felix LogDO appens ad /uploadResponsio fert receptum tupulum. Non universalis.
T3 Perpetuitas Arweave Singula Arweave transactio pro qub. Nunc paratus est pro omni accepta publicatione et asynchronous posita; exacta signata transactio remanet in effluibili outbox donec tradita.

Strata describunt evidentiis distinctis et durabilitatis proprietates, non hodiernus commercialis consilium. Praesens codex adhuc ordinat singulam Arweave transactionem pro ogni accepta publicatione; non exponit T3 solum ut solvenda upsell. Limites API-clavis/ratio quota manent separatae applicationis imperia.

Durabilitas honestas T1 scriptura est synchrona, ita responsio feliciter stabilit applicationem-summitatem durabilitatem sine exspectatione Arweave portae. Non ipse statuit independentem tempus-stamping. Confirmata singula transactio praebet sui block-temporis summum terminum. Pro responsione quae fert completam T2 receptum tuplum, proximus confirmatus ancora potest praebere log probatio descriptum infra. Si tuplum desit, nulla superficies potest significare hoc qub iam in transparenti log. Ancora et publicationis moratio nullam protocolum-niveau numerica SLA habent.

Structura Folii Log 16.2 (duae figurae dedicatae)

Ingressus ligni est LogLeaf, codificatus ut manu scripta canonica CBOR sub §3.1 profile (longitudo definita, sine signis, sine fluitibus, integer brevissimo forma, textus NFC, campi optionale omissi cum absens, claves ordinatae secundum longitudo octetorum codificatorum ascendente deinde bytewise). §3.1 parse → re-encode → compare custos canonica applicatur in via codificando ante frustratio (non solum in decodere), ita duo implementationes non possunt dissentire de folium bytes per integer-latitudine aut clavem-ordo differentia. Omnes integer sunt u8 / u64 / i64Omnes digestae sunt 32-byti chordae bytibstr[32]). Reconditus Arweave transactionis id est rudis 32-byte SHA-256 digestum portatum sicut bstr[32], numquam textus fila base64url (congruunt §3.3).

Folia habet duae figurae a electae kind octetquia generalis adsumptio iter est byte-caecus POST /api/v1/upload conscienter tractat ambo recepta formae oneris ut opaca et recipit qub_id et unlock_at solum ut assertiones clientis non fideles. In via privata praedefinita, body_hash, drand_round, created_atet drand_chain_version sunt etiam occultata intra §13 externum involucro, cuius clavem Operarius numquam tenet. Systema typi etiam definit formam probatam pro producente quod derivat body_hash / drand_round ipsum. Currens /seal Iter habet illa valores sed non vocat LogDOita productio nunc solum emittit assertum0x02) folia ex felici generalis-upload additamenta. Divisio servat omnem valorem dedicatum honestum sine simulando attestatus auctor est connexum:

clavis Brevis epistula encyclica genus praesentia significatio
seq quattuor u64 necessarius Globale 0-fundatum folium indicem; positio inclusio probatio commititur ad.
kind quinque u8 necessarius 0x01 testatum-capax (definitum, non nunc emissum) aut 0x02 asseruit (cliens-signum / byte-caecus onerare).
ref quattuor bstr[32] necessarius Folia referentia id. Testatum → rudis qub_idAssertum → the caecatus id SHA3-256(qub_id ‖ log_blind_secret) (§16.2.1).
chash sex bstr[32] necessarius Oratio contenta SHA3-256(stored_bytes) — ille contentus vinculum Operarius semper sincere computare potest, ambobus viis.
unlock_at decem i64 necessarius Exemplatum (testatum) vel affirmatum (assertum); probatum > 0 antequam folium intrat
received_at duodecim i64 necessarius Laboratorii horologium in R2-ack. Non-testimonialis (operator-asserted; §16.6). Praesens ad sui descriptionem, numquam probatio. Validatum > 0.
body_hash decem bstr[32] kind=0x01 solus Omissus ad 0x02 — Opera hoc sub §13 carent.
drand_round duodecim u64 kind=0x01 solus Omissus ad 0x02.

unus kind=0x02 folium conscie nec facit nec body_hash neque drand_roundtestatur obligationem et ordinationem opacae cryptogrammae ad contentum-adsignatum chashasserens qub_id et unlock_at — non eius textus apertus aut rotundus. Textus apertus/rotundus crura pro assertum qub veniunt ex existentibus §11 .qub-bundulus verificatio, non ex log (§16.11). drand_chain_version non est in folio (est intra involucro in via default); granulatitas catenae habitat in ancora (§16.7). Disciplina encoder: rejicere omnia-zero ref aut chashet recusare non-positivum unlock_at / received_at, speculum ad outcome_at > 0 custos vigili cbor.rs.

16.2.1 Privatus-qub caecatio

Truncus non debet fieri oraculum enumerationis quod §13 exterior involucro exsistit vitare (§13.1). Pro privato (involuto) qub asserted folium committit caecatus identificator SHA3-256(qub_id ‖ log_blind_secret)ubi log_blind_secret secretum a servo habetur, et omittit body_hashTertia pars tali folio ordinare ad certum non potest qub_idtenens qub, qui habet URL traditionis et ideo qub_id, potest recomputare caecos ut confirment suam ipsorum inclusionem. Publicum qub (iam enumerabilis, iam portans Visibility: public Arweave titulus per §13.8) promisso rudis qub_idHoc est unum locum ubi solus verificabilitas consulto cedit onus capacem secretum invariant; solus ligamen pro privatis qubs est chash (§16.9)

log_blind_secret custodia (solutum — §16.15 Q4). Caecus protegit folium unlinkability, non textus apertus secretum (§13 involucro tenet id independenter). In log_blind_secret commodum, pro quolibet qub_id adversarius iam tenet vel potest reconstruere (omnem qub cuius fasciculus/URL habet, praeterea quemlibet humilem-entropy vel publicum qub_iditerum computat folium ref in unum hash et connectit id — hoc est directum nexum cognitae populi, non vis brutum super ignotum spatium. Classifica log_blind_secret ut secretum correlationis/Sybil-gradus eadem custodia gradu ut alia secreta servientis, et rotate solum prorsum (rotatio rursus caecat futura folia; non potest retroactive secolare iam-ancoratam).

16.3 Folium et Nodus Hashing

RFC 6962 §2.1 ambitu separatis hashing cum SHA-256 repositus a SHA3-256:

leaf_hash      = SHA3-256(0x00 || canonical_cbor(LogLeaf))
node_hash(l,r) = SHA3-256(0x01 || l || r)
empty tree     = SHA3-256("")          // defined but never anchored

Praefixum Dominii bytes 0x02 (catena ingressus, §16.4) et 0x03 (STH hash, §16.6) reservantur et ab his disiunguntur. Sunt solae octetum et ideo non possunt collidere cum existentibus 10-octetum ASCII domain separatoremQUB_ID_V2, etc.). Arbor est RFC 6962 sinistra-plenus inaequalis arbor (quaeque interioris divisio ad maximum potestatem duo stricte minor est folium subarboris numerum), quae sinit inclusionem et consistentiam probationes communicare unam audit-viae algorithmum. Referentia specificatio fert explicitam sic/dex derivationem pseudocodicem et figit a non-potentia-duorum (5-folium) test vector Sic dextrae limite promotio casus — qui quattuor folia vector occultat — exercetur.

16.4 Catena Hash (internus)

LogDO servat internum catena ingressum pro tantum ruina-constantia. Est numquam publicatum et numquam ad verifieri spectans:

entry_chain[seq] = SHA3-256(0x02 || entry_chain[seq-1] || leaf_hash[seq])
entry_chain[-1]  = SHA3-256("QUB_TLOG_GENESIS_V1")

Auctoritas appendere-solum edita est radix cumulativa Merkle et eius ancora (§16.5–16.6), numquam rudis ordo in quo operator obveniendi servit relinquitur: catena recomputat pro quavis ordine servito, ita solum radicem firmatam pin canonica positione.

Arbor Cumulativa Merkle 16.5 et Aggregatio

Est unum semper crescentem RFC 6962 arborem super omnes folia in seq ordo — non segregatae per-lotum arbores. (Per-lotum constructio folium-tractus catenae reiecta est: non est vera praefixae relationis, ita eius "probationes consistentiae" insensatae sunt.) Arbor cumulativa potest veras RFC 9162 probationes consistentiae dare et sinit unicum recentem ancoram probare inclusionem pro quib vetustioribus.

Ille LogDO Durabilis Objectum est unus auctor (blockConcurrencyWhile, speculatio QuotaDO / EntitlementDO— addere ad communem indicem legitur-modificat-scribit in communi statu et ita DEBET ire per DO, numquam KV. Cauchet arboris dextrae-limitem frontem(O(log n) clavium) sic claudens turbam est O(batch)A cohors Est series foliorum simul alligata; eius effecta excitatio sunt tree_size progressus saltem LOG_BATCH_MAX_LEAVES (default 4096), aetas adscendens ad catenam ancorae, vel explicita administrativum/cron vires-claudere. root_i Est cumulativum Merkle Arbor Hash super folia 0 .. tree_size_i.

16.6 Arbor Caput Signatum per Arweave Ancoram

Transactio Anchorae Arweave est Caput Arboris Signatum et reponit signatura operantis pro ipso capite arboris: ancoram quotidianam non eget clavi qub quia Arweave tx owner est signatura. Thesis vallis tenet — immutabilis substratum, non secretum ab qub detentum, est ponderis sustinentis pro radice ancorata.

Consilium ligni postulat unum calidum felix-addere clavis recepta (§16.10), affixum in LogProfile et transsignatum ab anchor_ownerPraesens implementatio non completavit illam fidei radicis provisionem RECEIPT_SK Est optionale, clavis desunt/invalidum efficit sig_b64url: "", et collecta LogProfile.receipt_pubkey vacuum est. Talis recepta potest describere folium appenditum sed est non acceptum subsignatum quod non repudiari potest. Fortior designatio petitio pertinet solum postquam reprehensor dimissionem clavis publicae concordantem siccio et dominus ancorarum eam transsignat. Responsio publicationis sine completo accipienda tuple nullam declarationem logi-acceptationis facit; una cum subsignatione vacua declarationem appendere locum facit sed nullam verificationem subsignationis.

Ille SignedTreeHead est canonica CBOR (claves per longitudinem codificatae): size:u64, root:bstr[32], batch:u64, prev:bstr[32] (prior) sth_hash; genesis = 32 nihil bytes), log_id:bstr[32], first_seq:u64, anchored_at:i64. eius hash est sth_hash = SHA3-256(0x03 || canonical_cbor(SignedTreeHead)).

Radix fiduciae fixa. log_id = SHA3-256("QUB_TLOG_V1" || anchor_owner_address)Conformans verificator Oportet postulare anchor_tx.owner == LogProfile.anchor_ownerubi anchor_owner (et receptum-clavis publica clavis) intexta est qub_core ut LogProfile — iuxta constantes quicknet iam in DrandTimelockProvider::quicknet() — et distributa cum verifier binaria. Verifier ETIAM debet verificare Arweave tx data → tx_id ligatio localiter magis quam credere portam /raw/ responsio. Hoc claudit vagum-capsulae ambiguitatem cavum: "in Arweave ancoratum" sine sensu est donec verifier pinst quae capsula.

Rotatio est §15 gubernatio extensio, non usus iteratus (resolutum — §16.15 Q3). Superficies perfil §15.2 nunc enumerat solum sig_algs / drand catenae / versionibus involucro / typis contentorum, et §15.3 triggers nullam harum enumerat LogProfile / anchor_owner est non tamen in superficie §15. Rotae gubernatio ergo debet esse aedificata: §15.3 extenditur (infra) ad addere LogProfile incitamentum et rotatio est signata LogProfile Bump delatus est in verificatione aggiornamento. A cogitatum rotatio portat exeuntem → ingrediens trans-signaturam; a pactioni addictus rotatio non potest (clavis exeuntis non fidetur/aut inaccessibilis prorsus tunc) et cadit ad §15-regulatum tuberculum, cum prae-anchor furca recognitione (infra) damnum inter tempus circumscribens.

Fenestra ambiguitatis (primae classis fiducia parametri). Folia est aequivocatione resistens tantum cum eius tegumentum anchora sit ArweaveconfirmatusFenestra est received_at → anchor confirmation (cadentia + Arweave finalitas, sine protocollo moram fidem). Ante fiduciam-radices provisionem, actualis exemplar suppeditat qub operationis integritatem atque quidquid appendendi metadata non signata adest; non suppeditat propositum non-repudiationem fidem. Tres documenta rationis definiunt designatum completum (testis exemplar est §16.15 Q2 resolutio):

  1. Sigillum receptum (cibatione dependentem) — SCT analogus rediit cum log appenditionem upload successit (§16.10). Fit non-repudiabilis solum cum sig_b64url hoc non vacuum et Coniunctum publicum clavem/dominus-ancora relatio est fixa in verificatore. Nunc vacua productio profilum fixa non potest sustinere illud iudicium. Haec potestas non applicatur ad omissum receptum tuplum aut non signatum receptum.
  2. Methodologia monitoris edita + cursus prior catenae — ancora prev catena ambulatur caput→genesis; furca (duo ancorae in uno) size cum diversis root, vel fractum prev) est probatio edenda malae actionis. Detegendi ambigationem est operativa obligatio declarata, non tacita suppositio.
  3. Capita bina sponte edita — omnis nova caput {sth_hash, tree_size} in dedicato qub-proprietate positus publica repositorium GitHub solum addere (onus-ferens tamper-evidens sui-publication legis), cum socialis commentarius ut optima conatus corroboratione tantum. Defectum commentarius DEBET paginam (non sileat). *Implementatum (Gradus 8) ut publishHead uncinus in ancora cronworkers/api/src/utils/heads-publish.ts): a PUT ad contenta API sine sha est tantum addere 422 significat caput iam publicatum est, numquam supergressio); optare / deploy-gated in PUBLISH_HEAD_GITHUB_{TOKEN,OWNER,REPO} et inertem donec repositorium provisum sit. Durus GitHub defectus paginas per health_alert canalis et incrassationes durabile defectum metricam:tlog_publish_head_fail); ipsi Arweave anchor numquam revertitur in defectu publicationis. "Non deficere tacite" servatur per illam metricam durabilem — quam ops oportet monitore indicare — etsi meliorem conatum pagina electronica non traditur. Duae sincerae limitationes sequuntur ex "anchor-in-advance" (cron tantum publica cum magnitudo progreditur): defectus transitorius GitHub relinquit a hiatus in seriem capitis editus pro illa magnitudine — terminata, non tacita (paginas), et quia quisque caput commitit superset arbor, §16.9 consistentia probationis pontes hiatus; praecipue, quod consistentia probatio computatur ex auctoritate Arweave-anchored arbor, non ex GitHub superficieIta GitHub hiatus numquam debilitates verificabilitas. Catch-up backfill qui implet editi-capita hiatus est postpositam emendationem.

Honestas obligavit (vinculum obligans). Quia Qub utrumque tabula destinata moderatur, hoc est sua sponte edita, non independenter testificatus. Nulla productum, mercaturam, vel iuridica superficie potest asserere log est "independenter testificatus". Postquam receptum/profilum/caput portis provisum est, permissum asserere est quod Ambiguitas detegibilis est et sigillum feliciter signatum reliquit receptum non recusabileAnte hoc, illa assertio est non praesto. Verus independens tertiae partis testis differetur ad futurum §15 gubernationis incrementum.

received_at est operatori affirmatus et nulla petitio in ea inniti potest — numquam apparuit ut probatio vel disputatio corroboratio in ullo productum / iuris / API / probatio-referens superficie. Arweave ancora block tempus T est solum fiducia timestamp (superius terminus in "logatus per"). Quisque moderari sanitas inspectio in received_at DEBET comparari cum T, non contra operator imperium anchored_at Campus STH; talis inspectio est custos contra simplex operatoris horologium errorem tantum non imperium rationis contra malitiosum operator (§16.15 Q5).

16.7 Forma Et Cadentia Negotii Ancorae

Ille AnchorBundle est canonical-CBOR Arweave transactio corpus, scriptum per §16.8 congregator: ver:u8, sth:bstr (canonicus SignedTreeHead bity prev_anchor:bstr (ante ancora tx id rudis ordinibus; relicta ad initium) chain_hash:tstr (catena drand in viribus — quicknet), et seriem foliorum batch-CBOR in seq ordo ita ancora est sui contenta: monitor iterum derivat root Ex corpore cum nulla qub dependentia. (Si folium flumen fiet magnum ad altum volumen, futura revisio sola varietas folii per referentiam committere potest; notatum, non adoptatum in v1.)

Arweave tituli sunt deliberate enumerabiles — log est propositum inveniri, dissimilis privatis qubs: App-Name: qub-tlog, Anchor-Format: 1, Log-Id: <hex>, Batch: <n>, Tree-Size: <n>, Root: <hex>, Prev-Anchor: <tx>, Content-Type: application/cborTituli sunt imprudentes indiciaCorpus CBOR est unica auctoritas.

Cadentia Cotidie per defaltam, revisita cum volume (magnitudo trigger automatice breviat efficax cadenam sub onere). Current producer non implet pretium-signum vim-anchor uncis. arca ancorarum dedicatus est et humilis celeritate, separatam a oneratione marsupio — oportet esse eius suis JWK (distincta clavem, non logica munus in upload bursam) ita compromise upload-bursa non potest effingere ancoras — cum durus per diem ancora-negotiatio budget. Custodia habitus clare declaratur: a clavis calida angusta cum claudi circuli stricta et parvo aequilibrionon "frigidum"—capsa quae auto-signet cotidie non potest esse frigidum, et specificatio non simulat aliter.

16.8 ANS-104 Ligator

In-domum ANS-104 DataItem codicem et profundo-hash signatorem, circiter 300 lineas, Solum Web Crypto, nullus npm dependentiae (ambo Turbo SDKs deficient npm ci --ignore-scripts porta copia-catenae). DataItem byti dispositio:

signatureType (2, LE) || raw_signature || owner || target(flag+0|32) || anchor(flag+0|32) || num_tags(8, LE) || tags_len(8, LE) || avro_tags || data

Subscriptio est Arweave deepHash - recursivus SHA-384 digestio (Arweave nexum necessitatem, crypto.subtle.digest("SHA-384")) super ["dataitem", "1", sig_type, owner, target, anchor, encoded_tags, data] — deinde RSA-PSS super profundo hash cum sacculo JWK per crypto.subtle; id = base64url(SHA-256(signature))Hic SHA-384 est in isolationem tanquam Arweave-filum-soli primitivum, numquam qub fidei primitivum (§15 refert claustra; qub fiducia hashing est SHA3-256 per totum).

Iter codicis ANS-104 ministrat machinae differendae cadendae et scribit AnchorBundle DataItems. Ordinaria publicatio via primum creat exactum signatum Arweave transactionem et servat eius JSON in durabili exscribere; directa subministratio est latentia optimisation, et drainage via iterat eandem transactionem antequam applicet eius bundler subrogare. Schema subscriptionis (resolutum — §16.15 Q8): v1 signat cum RSA-PSS (typus subscriptionis 1) Rursus uti existens Arweave saccarium JWK mechanismus (nulla nova longa-vita clavem custodia, serviens "unum minus secretum" thesis); Ed25519 differetur ad §15 PQ-migrationem viam.

Manu volvitur profunda hash est summus periculum, infimum naturalis coverage codicem in W5, ita eius ianua est non-negotiabilis (§16.15 Q8):

  1. Congregatio translingualis tlog_v1.json (Rust et TS, §14.5 wrapper_v1.json exemplar) tegit altum-hash, DataItem octeti + id, folium hashes, quinque-folium radix + auditum semita, STH hash, probatio inclusionis, et probatio consistentiae — in et signum et verificatione instructiones (verificatio directio refert quia §16.6 localis tx → tx_id inspectio trahit profundum hash in omni verificatori solitari, non solum scriptor).
  2. Unus-tempus interop circuitus per referentiam ANS-104 fasciculum, consumptus ut solum data probationis statica — numquam dependens runtime npm (positio Web-Crypto-tantum / sine-installatione-scripts stat).
  3. Via profunda-hash + RSA-PSS debet transire per totum circuitum idem crypto.subtle primitivi Usus productionis, ita domi encoder est byte-compatible.
  4. In processu post-bunculum acceptationem monitor Confirmat singulos ancora / fallback DataItem revera assequitur Arweave accipientis, cum alarm + circuitis ruptor — quia profunda hash etiam servit Arweave-inaccessibilitas fallback ordine, ita tacita regressio impleret illum ordinem cum network-reiecta items per exactam defectum id exsistit tegit.

XVI.IX Inclusio et Constantia Probationes

Utraque sunt RFC 9162, SHA3-256, ut canonica CBOR servita.

ProbatioInclusionis — GET /api/v1/qub/:tx_id/proof: ver:u8, leaf:bstr (exacte folium CBOR — verifier reficit computationem) leaf_hash ipsum et numquam confidit in ordinatum hash index:u64, size:u64, audit:[bstr[32]], root:bstr[32], anchor:{ txid:bstr[32], batch:u64, sth:bstr[32], log_id:bstr[32], block_height?:u64, anchored_at?:i64 }.

ArgumentumConstantiae — GET /api/v1/log/consistency?first=<size_a>&second=<size_b>: ver:u8, first_size:u64, second_size:u64, first_root:bstr[32], second_root:bstr[32], nodes:[bstr[32]], first_anchor, second_anchorUna clara index clavium, ab vector probationis fixata.

Verificationem independens (nulla qub minister, extendit §11):

1.  Parse .qub bundle → SealedQub; recompute qub_id (§4.1).
2.  Read leaf.kind.
3a. kind=0x01 (attested):
      assert leaf.ref == qub_id
      assert leaf.body_hash   == SHA3-256(body)
      assert leaf.drand_round == unlock_round(unlock_at)
3b. kind=0x02 (asserted):
      assert leaf.ref == SHA3-256(qub_id || blind)   // holder supplies blind
      OR treat ref as opaque and bind via leaf.chash == SHA3-256(stored_bytes)
4.  Recompute leaf_hash = SHA3-256(0x00 || leaf); fold `audit` per RFC 6962
    using index/size; require derived root == proof.root.
5.  Fetch anchor.txid from any gateway; verify the tx data → tx_id binding
    (do not trust a gateway /raw/ response); REQUIRE anchor_tx.owner ==
    LogProfile.anchor_owner.
6.  Parse AnchorBundle; require committed root == proof.root and size ==
    proof.size; read the Arweave block time T.
7.  Emit the claim scoped by leaf.kind (§16.11).

Recondita probatio-servientis DEBET esse coordinata-clavi clavum (resolutum — §16.15 Q7, obstructio praeconditio). Frigus-folium probationem generationis est recte-neutralis solum si material R2 auditus est perstans Merkle-nodus copia clavis a absoluta arboris coordinata (level, index) — non per-batch nodus deltas. Cum taberna coordinatae-clavem, ullus (leaf i, size N) audit iter est coetum O(log N) directum R2 GETcum nulla recomputatio trans limites batch; cum sarcina-clavem taberna non est, quae est repono-dispositio hiatus hoc solutio claudit. Folium corpora similiter contentum-indicari potest per seqVector experimentum W5 DEBET probare Frigus foliis aevo genesis contra multo postea radicem utens solum R2 + Arweave cum LogDO repono deletumita reclamatio-tutelae in §16.13 supportatur potius quam assertur. O(log N) R2 series GETappartinere solus in extremo probatio asynchronous — numquam in sigillum calidum iter (§16.10) aut per-tick cron.

16.10 R2-Primum Ack ordinatio

Exsecutus POST /api/v1/upload series est:

  1. Portae anteriora dimidia (auth, validatio, idempotentiam clavis segmenti) — immutata.
  2. Crea, tag, et signe exactam singularem Arweave transactionem. Hoc derivatur tx_id Localiter, quamquam transactio creatio potest sumere praemium/ancora metadata ex porta. Praeparationis defectus adhuc deficiunt petitionem antequam agnitio.
  3. Simul scribe artifactum selectum ad qub-cache/<tx_id> et persiste stabili creatione-operatione/exire tabulas. Haec sunt durabilitas et repetere tabulatum; defectus ante solutio reddunt 503.
  4. cum LOG_DO configuratus est simul conari LogDO.append(leaf)Scriptores singuli attribuunt seq, catena ingressus extendit, et finem renovat. Append RPC id solum facit; batch claudere currit extra viam in alarma. Append vectura/application defectus est nunc deficere-moderateResponsio adhuc potest succedere sine log_seq, receiptvel anchor_statusQuamquam commentarium impletionis, nulla automatic posterior log reconciliatio hodie coniuncta est.
  5. Redde agnitionem. Include { log_seq, anchor_status: "pending", receipt } tunc solum cum appendere reddidit completum felicem coniunctionem receipt.sig_b64url vacuum est cum signator recepti non est praesens; clientes NON DEBENT appellare illud valor signatum aut non repudiabile. Absensia tupla significat durabile tantum publicatio, non transparentia-log acceptatio.
  6. Utere uno differre negotium ad mittendam exacte subscribendam transactionem. Successus removet outbox; defectus relinquit eam pro crona drainage limitata et non debet mutare iam agnovit tx_idMeta data provisoria et alia nobilissima adiuncta etiam differuntur.

Terminus tarditatis Via petitionis includit a parte antea auctoritatem/quota opus, praeparatio transactionis/signatio, durabile R2 scripta, et (cum configurata) LogDO conatur < 300 ms Apparet in consilio recognitionis ut scopus operationalis, non protocolum fidei; currentem transactionem praeparationem gradum potest facere porta metadata petitio. Latentia signa et portae launch sunt operationales regulas, non evidentia verificatori praesto.

16.11 Fidei Exemplar — exacta assertio, a genere folii circumscripta

per kind=0x01 (testatum): Hoc contentum — corpus congruens body_hash, aucta per qub_id — committebatur ad QUB addere-solitum log in positione seq et exstitit non sero quam tempus fractio Arweave TInscriptio cryptographice illegibilis erat usque ad drand circuitum R = unlock_round(unlock_at)Hoc est plenus {tlock round binding + Merkle inclusion + anchored root} triplex

per kind=0x02 (assertum, default): Obscura cryptogramma cum contento-dito chashasserens qub_id et unlock_at, committebatur ad appendi soli ordinis in positione seq et exstitit non sero quam tempus fracti Arweave TCirculi et corporis crura praebentur ab existenti §11 .qub-pachis verificationem(qub_core::unlock), non per lignum; quod lignum addit supra nudum per-qub transaction est tamper-notam ordinatio, fiducia-nullam summum temporis commitment, et resistentia ad ambiguitatem.

Utraque petitio excludit, per §11: auctoritas sine sig_alg ≥ 0x01intentio et sub-animum granulationem temporis. Nec unum sinit ullum ius inniti received_at.

Praesumptio limen (ligans initium constrain — solutum §16.15 Q1). Pro assertum (kind=0x02folium, postulatio supra designata est laquear super quidlibet productum, mercaturae, terminorum, aut probationem reddit superficiem potest affirmare. Nulla superficies potest dicere aut insinuare quod log probat contentum aut solvere circuitus byte-caeco upload — log probat ordinatio + fiducia carens summum terminum commitment temporis opaci ciphertext. Contentum et circuitus probatio veniunt esclusiva ex existentes §11 .qubBundle verificatio, quae est log-independens. Editio sine felici append/receptum nullum log demandam habet.

16.12 Versionatio et W3 Coordinatio

Est non SealedQub filum titillatio et ideo nulla protocollum-versione elevatio (§12.2): log est sidecar qui commit ad existens campos et bytes, ita non ingreditur §12.3 protocol-versio historiam. W3 optionale drand_chain_version manet intactus et solus optionalis SealedQub ager. Lignum autem introducit sua propria independentia versiones spatia — LOG_VERSION_1, ANCHOR_FORMAT_1, InclusionProof.ver — speculum §12.5 involucro-versionem independentiam (involucrum fert versionem byte independentem a protocollo versione, et log versiones sequuntur eandem separationem).

Traditio probationis ab initio sumitur, cum lege voluntaria comitante. Probatio non potest existere tempore sigilli (ancora nondum scripta est), ita tempore sigilli .qub fasciculus manet sine probatione. Verificator W7 excipit GET …/proof olim, vel in plene-offline modus reconstructe probationem ex publico AnchorBundle per interrogationem Arweave de Log-IdIllud .qub fasciculus (W7) reservat optionalis inclusion_proof socius — absens ad sigillum, incolarum a post-ancora reexportatio pro frigido archivistico — sequens idem "optionalem, praeclusam per defalt, additivum" exemplar ut W3's drand_chain_version.

16.13 Retentio

Fenestra retentionis pro LogDO cauda aperta, R2 subiectum probans ministrans, interruptor circuitus ancorae, et catena fallback sarcinatoris specificantur in docs/DATA-RETENTION.mdPrincipium: calidum per-entry repositum ligni (LogDO) est recuperabile post-ancora; eius materia auditio — clavibus coordinatis (level, index) Merkle-node repositorium et seq-tractavit folium corpora (§16.9) + Arweave ancorae — permanens est. Recuperatio frigidum folium ex DO numquam invalidat probatum emisso, quia probatio resolvit contra illam R2 nodum permanentem repositorium et Arweave ancoram, non DO (et §16.9 deletum-DO test vector probat id).

16.14 Vectoribus Probationis

W5 naves trans-linguam apparatum tlog_v1.json (§16.8) plures ordinati vectores: a kind=0x01 et kind=0x02 folium leaf_hash; radix cumulativa quinque-folia; una probatio inclusionis; una probatio consistentiae; una AnchorBundle; et unus DataItem id. Hi vivunt iuxta §14.5 exterior-wrapper vectores et exercetur ab utroque Rustqub-coreet TypeScript (Operarius) exsecutiones.

16.15 Recognitiones Decisionum (W5 — resolutum)

Externus recensio W5 (inimica consilio transeunt + conductionis signatum) completum est. Unaquaeque decisio infra constituta et reflectitur in §16 textu supra vinculum initium restrictiones In fine reiterantur. Exsecutionem sub eis procedere potest.

  1. Iter Praedefinitum (kind=0x02Folium honestas — DECISUM. Navis duo-lamina genus divisa ut specificatum est kind=0x02 nec commitit body_hash neque drand_roundNon *_body_hash campus in byte-caecus via (esset facillime legeret falsum "probatum" signum pro integratoribus et commoditatem §11 iam praebet ex fasciculo). Fac non Postulat servo sigillum pro log-testatum qubs (quod coget textum apertum per Operatorem et destruet crypto-lacerationem fossam). Omnis se describens brevis-circuitus in .qub fasciola / probatio sigillum ut verificator-recomputatum campum, numquam folium campum. Proprietarius-confirmatum postulatum fastigium: §16.11.
  2. Ambiguitas / omissionis responsabilitas — CONSILIUM RESOLUTUM, PRAEBITIO INCOMPLETA. Consilium requirit clavis sigilli-recepti infigi LogProfile et transsignatum ab anchor_owner, plus monitor methodologia, praecedentis catenae ambulatio, et binae sibi publica capita. Compositum profilum et deployment uncis adhuc sunt loci/optionales ut in §16.6 explicatur, ita validior detectabili + recepto petitio non est current donec illae portae claudantur. Numquam debet mercari ut independenter testificatus. Verus tertius-testis differatur ad §15 gubernationis subsidium.
  3. Claviculam proprietatem fiducia radix + rotatio — RESOLUTA. Adoptare LogProfile pin (§16.6); verificator inspicit anchor_tx.owner == anchor_owner et probat TX data → TX_ID vinculum localiter. Gubernatio rotationis est §15 extensio ad aedificandum (§15.3 incitamentum additum), non reusum; rotationes provisae trans-signant, rotationes ob pacis consensum recedunt ad §15 ictum cum furca inspectione damnum terminans.
  4. Privatus-qub folium caecum — STATUTUM. Perge caecare pro privatis qubsref = SHA3-256(qub_id ‖ log_blind_secret)), crudus qub_id pro publicis qubs (iam §16.2.1), chash sicut nudo nexu log_blind_secret est correlatio/Sybil-gradus secretum, verto-prorsum solum (§16.2.1).
  5. received_at — STATUTUM. Serva in folio, dedicatum sed manifeste non probatorium; numquam emersit ut probatio vel disputatio corroboratio in aliqua superficie. Omnis monitor rationabilitatis examinatio comparat contra Arweave block tempus Tnon a operatore gubernato anchored_at (§16.6)
  6. Gradatus probabilis-tempus — CONSILIUM SOLUTIO, NON CURRENT VIA. Designatio recensita assignat tempus ancor-block ad tier collectum et probationem horae exactae pro T3 solutis, sine numerico SLA pro priore. Viae actuales non instruxerunt illam distinctionem commercialem: disponunt singulam negotiationem pro omni publicatione accepta, et coverage log relevatur conditionaliter ut in §16.1/§16.10 dictum est. Productum copia describere debet implementationem, non hanc futuram partitionem tier.
  7. Arbor cumulativa de Operariis — CONSTITUTUM. Singularis cumulativa RFC 9162 arbor + limes-cached singularis-scriptor LogDO (commodum spatium versus ~1k scripta/sec DO caeli; differ Merkle-of-shard-radices frangendo donec prope illud). Clavis coordinata (level, index) R2 nodus copia + excutientur-DO frigus-folia test vector exsequuntur (§16.9). < 300 ms remanere consilium/operationale obiectivum, non protocollum promissum (§16.10).
  8. ANS-104 signatura schema + profunda-hash — RESOLUTUM. RSA-PSS (signum genus 1, resumptum dedicatum anchor-wallet JWK); Ed25519 differre ad §15 PQ iter. Manus-fabricata SHA-384 profunda hash clausa est in utrumque-directions trans-impl fixture, statica sola referentia-bundler interop inspectio, communis-crypto.subtle iter-rotundum, et post-sarcina Arweave-acceptatio monitor (§16.8).

Vinculum initium restrictiones (in exsecutionem inferre + productum/legalis recensio)


17. Fasciculus Verificationis Portabilis (.qub)

Status. Haec sectio implementata est (W7 / UP-C2): qub_core::export fasciculum producit et legit, atque tools/qub-verify est CLI publicum, se-contentum, quod eum sine rete verificat. §11 et §16.9 iam "fasciculum .qub" ut unitatem a verificatore solitario consumptam memorant; haec sectio eius octetos et iter verificationis specificat. Stricte additiva est—fasciculus ingressus §11 existentes colligit neque ullam formam filiformem in catena mutat.

17.1 Propositum

§11 statuit quamlibet tertiam partem artefactum cryptographicum qub sine cooperatione qub verificare posse. Fasciculus .qub hanc verificationem portabilem atque sine rete efficit: CBOR signatum et subscriptionem cycli drand quae illud reserat in unum artefactum se-contentum colligit, ut accipiens integritatem contenti, adligationem cycli, et quascumque subscriptiones auctoritatis sine ulla vocatione retis verificare possit (nulla memoriae petitio, nulla petitio drand viva, nulla API qub). Fasciculus solus tempus creationis textus cifrati non probat; transactio memoriae independenter verificata aut proba tabularii ancoriis firmata illam vindicationem separatam temporis existentiae suppeditat (§11, §17.5).

17.2 Forma Fasciculi

QubBundle est CBOR canonicum manu scriptum sub profilo §3.1 (longitudines definitae, nullae etiquettae, nulla puncta fluitantia, integri formae brevissimae, textus NFC, campi optionales absentes omissi, claves per longitudinem octetorum codificatorum ascendentem deinde octetatim ordinatae). Tres claves 15-character ordinantur d < i < s. Fasciculus .qub crudus est exacte haec octeta; pro translatione per URL aut exemplum atque collocationem eadem octeta sunt base64url(no-pad).

Clavis Long. cod. Typus Praesentia Significatio
version 8 u8 requisita Versio formae fasciculi (0x01).
sealed_at 10 i64 optionalis Tempus signandi a creatore assertum (secunda Unix); se describit, vim probandi non habet.
drand_round 12 u64 requisita Cyclus cui qub adligatur. Proiectio qub signati inclusi.
arweave_tx_id 14 tstr requisita Identificator transactionis sub quo octeta signata conservata sunt (index originis).
drand_chain_id 15 tstr requisita Catena drand (hex). Proiectio qub signati inclusi.
drand_signature 16 bstr requisita Subscriptio fari drand pro drand_round—valor qui textum cifratum reserat.
inclusion_proof 16 bstr optionalis Proba inclusionis Merkle tabularii perspicui §16, postquam tabularium emissum est (§17.5).
sealed_qub_cbor 16 bstr requisita Octeta interna SealedQubCbor (post disinvolutionem §13), id est ingressus verificationis §11.

drand_round et drand_chain_id sunt proiecturae commodi sealed_qub_cbor, latae ut instrumenta eas sine CBOR interno legendo cognoscere possint. In constructione derivantur atque in decodificatione contra qub signatum lectum rursus comprobantur; fasciculus cuius campus summus ab onere discrepat reicitur. Disciplina codificatoris reliquam formam filiformem reflectit: drand_signature aut arweave_tx_id vacuum reice et quemque campum longitudinis variabilis termina.

17.3 Quid subscriptio drand inclusa probet

Fasciculus subscriptionem drand fert ne verificator eam haurire debeat. Decifratio clausurae temporalis (tlock super catena drand, §8) solum cum subscriptione fari genuina cycli adligati succedere potest—valore quem catena solum post cyclum elapsum publicat quique subscriptio BLS valida sub clave publica catenae est. Subscriptio ficta aut falsa verificationem BLS aut decifrationem IBE/AEAD frangit. Fasciculus qui decifratur igitur probat: textus cifratus cyclo R adligatur, et cyclus R elapsus est. Verificator catenam figit (DrandTimelockProvider::quicknet()) atque inspectionem adligationis cycli §11 adhibet, itaque fasciculus cyclum cui textus cifratus non adligatur vindicare non potest.

Haec est proba condicionis revelationis, non sigillum temporis creationis. Post cyclum R elapsum, quivis novum textum cifratum pro R creare atque eius subscriptionem iam publicam colligere potest. Fasciculus solus igitur pro proba textum cifratum aut contentum ante R, ante unlock_at, aut ante quemlibet eventum exstitisse describi NON DEBET.

17.4 Iter verificationis sine rete

qub-verify <file.qub> proceduram ordinariam §11 omnino ex fasciculo exsequitur, qub_core::unlock::unlock cum DrandTimelockProvider affixo agens:

1. Parse the .qub bytes → QubBundle (canonical-CBOR guard; bound every field;
   re-check drand_round / drand_chain_id against the embedded sealed qub).
2. BLS-verify bundle.drand_signature for the pinned chain and round, then
   tlock_decrypt(sealed.tlock_ciphertext, bundle.drand_signature) → QubEnvelope.
3. Verify SHA3-256(body) == body_hash               (§11 step 8).
4. Verify QubEnvelope.qub_id   == SealedQub.qub_id   (§11 step 9).
5. Verify QubEnvelope.unlock_at == SealedQub.unlock_at (§11 step 10).
6. Verify ciphertext round == unlock_round(unlock_at) and the chain binding.
7. If sig_alg != 0x00: verify author_signature (and any cosigner; §9.4).
8. Report integrity, round-elapsed/round-binding, authorship, and cosigner
   verdicts separately, plus the recovered body. Do not report a commitment
   timestamp unless step 9 succeeds.
9. Optional existence-time leg: verify an included §16 proof through its pinned
   anchor, or independently verify the referenced storage transaction. Report
   its block time as an upper bound on ciphertext existence.

CLI cum 0 (verificatum), 1 (verificatio cecidit—adhuc clausum, discordantia body-hash, adligatio cycli/catenae fracta, aut subscriptio quae non verificatur), aut 2 (usus / fasciculus malformatus) exit. Relatio --json eadem iudicia automationi fert. Quia fasciculus se continet, crate verificatoris (qub-core) et CLI (qub-verify) sola instrumenta sunt quibus tertia pars eget; utraque publica sunt atque viam verificationis protocolli existentem reusant—nulla cryptographia ad hoc facta.

17.5 Relatio ad tabularium perspicuum

inclusion_proof est locus optionalis pro proba inclusionis Merkle §16. Verificatio fasciculi soli (§17.4) plena est pro integritate, adligatione cycli / cyclo elapso, et auctoritate optionali, sed consulto nullam vindicationem existentiae sigillo temporis independente firmatam habet. inclusion_proof impleta pleneque per ancoram verificata obligationem generi folii propriam atque terminum superiorem temporis ex §16.11 addit sine versione formae fasciculi mutanda. Proba absens tantum "nulla proba inclusa" significat—non "invalidum" neque necessario "non ancoratum".

In implementatione referente locus nunc typizatus est: qub_core::export::QubBundle::inclusion_proof_typed() Option<InclusionProof> reddit, structuram plenam §16.9 (folium, iter auditus, radicem ancoratam, et AnchorRef) per eundem campum CBOR opacum ferens—sine incremento versionis formae fasciculi. CLI solitarium qub-verify eam per crus --anchor consumit atque—donec crumena ancorae provisa sit (§16, Status)—probam impletam sed cum possessore substituente ut inclusionem solam potius quam plene ancoriis verificatam refert.