Uma linha durável
O trailer viaja com o commit e entra no conteúdo protegido pela assinatura SSH.
Decision report · 18 Jul 2026
Um marcador mínimo e assinado no commit; a correlação rica fica privada e local. Autor e committer continuam humanos. O sistema é desligado por padrão.
O trailer viaja com o commit e entra no conteúdo protegido pela assinatura SSH.
Modelo, effort e referência HMAC de sessão vivem num ledger local — sem prompt, transcript ou paths.
Nada global. Cada repo pessoal habilita a política; trabalho profissional permanece fora por padrão.
Public contract
Nenhum identificador cru de sessão, provider, hostname ou conteúdo da conversa sai da máquina.
AI-Provenance: v=1
trace=019f7a10-7c42-7a1d-8d9e-2b1f9c3a6e70
tool=codex
contribution=assisted
evidence=tool-context
Schema version
Valid UUIDv7
Canonical agent id
Declared kind
Where data came from
Capture surfaces already observed
CODEX_THREAD_IDThread UUIDv7 em subprocessos; modelo/effort só quando a superfície viva estiver disponível.
CLAUDE_CODE_SESSION_IDSession UUID em subprocessos; nunca abrir transcript_path para obter contexto.
SessionManager.getSessionId()Adapter in-process futuro; sem heurística de “arquivo mais recente”.
getSessionId()Adapter próprio, testado contra a versão instalada; não fingir compatibilidade Pi.
Why UUIDv7
Não reservar bits para agente, modelo ou sessão. Isso reduziria entropia, criaria fingerprinting e ainda não provaria origem.
Lifecycle
Adapter recebe contexto mínimo.
Repo confirma opt-in local.
Hook encadeável valida TTL e escopo.
UUIDv7 novo é gerado.
Trailer é normalizado.
Git cria e assina o objeto.
Ledger liga trace ao OID final.
Threat model
Trailer é declaração; assinatura prova integridade, não verdade.
ID cru nunca é publicado; HMAC tem escopo de repo.
TTL, PID, nonce e repo evitam contexto global incorreto.
Trace no trailer permite reconciliação após rewrites.
Approval gate
Este relatório não instalou hooks, não alterou Git, agents-config, chezmoi ou autenticação.