Bundle — Citizenship Bundle e Signed Bundle¶
Tradução informativa da especificação em inglês, atualizada em 25/10/2026. A versão normativa é a inglesa: esta tradução não tem valor normativo e, em caso de divergência, prevalece o inglês. Identificadores e blocos de código são mantidos sem tradução.
Um agente não opera no vácuo: ele opera com uma identidade, uma intenção declarada, uma decisão de política e um registro auditável. O Citizenship Bundle é o pacote portátil que reúne tudo isso. O Signed Bundle o torna verificável criptograficamente.
Citizenship Bundle (bundle L3)¶
Um Citizenship Bundle é um objeto JSON que contém exatamente:
responsible_principal_record— DCP-01 (RPR)agent_passport— DCP-01 (AP)intent— DCP-02policy_decision— DCP-02audit_entries— DCP-03 (array, pelo menos um elemento)
Schema normativo: schemas/v1/citizenship_bundle.schema.json
$id: https://dcp-ai.org/schemas/v1/citizenship_bundle.schema.json
Validação:
Ou valide o objeto diretamente contra o schema do bundle:
Exemplo: tests/conformance/examples/citizenship_bundle.json
Signed Bundle¶
Um Signed Bundle envolve um Citizenship Bundle com uma assinatura Ed25519 e hashes determinísticos:
bundle— o objeto Citizenship Bundle completosignature— objeto com:alg:"ed25519"created_at: data e hora ISO 8601signer:{ type: "human"|"organization", id, public_key_b64 }bundle_hash:sha256:<hex>— SHA-256 do JSON canonicalizado do bundlemerkle_root:sha256:<hex>ounull— raiz de Merkle deaudit_entries(opcional)sig_b64: assinatura em Base64
Schema normativo: schemas/v1/signed_bundle.schema.json
$id: https://dcp-ai.org/schemas/v1/signed_bundle.schema.json
Validação (schema + assinatura):
Comandos auxiliares:
dcp bundle-hash <bundle.json> # Prints bundle_hash (sha256:...)
dcp merkle-root <bundle.json> # Prints merkle_root of audit_entries or null
dcp sign-bundle <bundle.json> <secret_key.txt> [out.json]
dcp keygen [out_dir]
Exemplo: tests/conformance/examples/citizenship_bundle.signed.json
Bundles V2 (bundle.dcp_bundle_version: "2.0") usam schemas/v2/signed_bundle.schema.json: cada artefato é um SignedPayload, e a assinatura composta Ed25519 + ML-DSA-65 cobre o manifest do bundle. Veja a lista de verificação V2 em VERIFICATION.md.
dcp sign-bundle --composite <bundle_v2.json> <ed25519_secret_key.txt> <ml_dsa_65_secret_key.txt> [out.json]
dcp verify-bundle [--policy <mode>] <signed_bundle_v2.json> [public_key.txt] # key pins the classical signer
Lista de verificação¶
Para uma lista de verificação normativa passo a passo (schema, assinatura, expiração, revogação, intent_hash, cadeia de auditoria, Merkle, ancoragem opcional), veja VERIFICATION.md. Todos os passos são locais; nenhuma chamada a servidor é necessária.
Notas de implementação (informativas)¶
Acrescentadas em 25/10/2026. Não normativas. Estas notas não acrescentam nenhum requisito nem mudam nada do que está acima: descrevem como o código de referência em
mainse relaciona com este texto. Onde divergem, prevalece o texto normativo acima.
- No V2 apenas os quatro artefatos principais (RPR, passaporte, intenção e decisão de política) são envelopes
SignedPayload; as entradas de auditoria são objetos simples, comprometidos pela raiz de Merkle do manifesto e cobertos pela assinatura do bundle sobre o manifesto, não assinados um a um. - Um Citizenship Bundle V1 precisa de pelo menos uma entrada de auditoria; um bundle V2 pode ter uma trilha de auditoria vazia (a sua raiz de Merkle são 64 zeros), como o VERIFICATION.md permite.
- Um bundle que é verificado é coerente e assinado pelas chaves que lista; isso por si só não estabelece quem é o principal, não admite o bundle nem autoriza uma ação (docs/ADMISSION.md).
<bundle.json>e os demais nomes entre sinais de menor e maior são marcadores de posição para os seus próprios arquivos.