Computes two digests. The content root covers the ordered record hashes and nothing else: it is the stable identity of the call records, the same on any machine that rebuilds the same log, and the value to cite with a deposited archive. The seal root binds the content root to the full manifest and the environment block, so a change to any record, any manifest field (provider, model, timestamps), or the recorded environment breaks the seal.
Arguments
- archive
An
archive_build()result.
Examples
log <- tempfile(fileext = ".jsonl")
writeLines(paste0('{"ts":"2026-06-01T10:00:01+0000","schema_version":"1.0",',
'"kind":"call","provider":"groq","model":"openai/gpt-oss-20b",',
'"request":{"q":1},"usage":{"sent":5,"rec":2},',
'"response_id":"r-1","text":"reply"}'), log)
a <- archive_seal(archive_build(log))
substr(a$seal$content_root, 1, 12) # cite this root in the paper