AI / Commit / Provenance
Proposal · not implemented

Decision report · 18 Jul 2026

Rastrear a ajuda da IA sem entregar a autoria.

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.

01 / PUBLIC

Uma linha durável

O trailer viaja com o commit e entra no conteúdo protegido pela assinatura SSH.

02 / PRIVATE

Correlação sem vazamento

Modelo, effort e referência HMAC de sessão vivem num ledger local — sem prompt, transcript ou paths.

03 / CONTROL

Opt-in explícito

Nada global. Cada repo pessoal habilita a política; trabalho profissional permanece fora por padrão.

Public contract

O commit conta só o necessário.

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
v

Schema version

trace

Valid UUIDv7

tool

Canonical agent id

contribution

Declared kind

evidence

Where data came from

Capture surfaces already observed

Quatro ferramentas, quatro contratos honestos.

CodexCODEX_THREAD_ID

Thread UUIDv7 em subprocessos; modelo/effort só quando a superfície viva estiver disponível.

Claude CodeCLAUDE_CODE_SESSION_ID

Session UUID em subprocessos; nunca abrir transcript_path para obter contexto.

PiSessionManager.getSessionId()

Adapter in-process futuro; sem heurística de “arquivo mais recente”.

OMPgetSessionId()

Adapter próprio, testado contra a versão instalada; não fingir compatibilidade Pi.

Why UUIDv7

Padrão, ordenável e opaco.

OptionDecision
UUIDv7 + metadataChosen
ULID / KSUIDSmaller ecosystem fit
Commit hashOnly exists after commit
HMAC sessionPrivate correlation only
Custom trace idUnnecessary format

Não reservar bits para agente, modelo ou sessão. Isso reduziria entropia, criaria fingerprinting e ainda não provaria origem.

Lifecycle

Do contexto do agente ao commit assinado.

  1. 1

    Adapter recebe contexto mínimo.

  2. 2

    Repo confirma opt-in local.

  3. 3

    Hook encadeável valida TTL e escopo.

  4. 4

    UUIDv7 novo é gerado.

  5. 5

    Trailer é normalizado.

  6. 6

    Git cria e assina o objeto.

  7. 7

    Ledger liga trace ao OID final.

Threat model

O sistema não promete o que não prova.

Spoofing

Trailer é declaração; assinatura prova integridade, não verdade.

Session leak

ID cru nunca é publicado; HMAC tem escopo de repo.

Stale context

TTL, PID, nonce e repo evitam contexto global incorreto.

Orphan metadata

Trace no trailer permite reconciliação após rewrites.

Approval gate

O que seria aprovado depois

  • 01 — desenho híbrido trailer + ledger;
  • 02 — campos públicos mínimos do trailer;
  • 03 — MVP manual, opt-in por repo;
  • 04 — somente então adapters e automação.

Este relatório não instalou hooks, não alterou Git, agents-config, chezmoi ou autenticação.