Purpose
An audit packet makes a promotion decision reviewable after the fact. It should answer who approved the descendant, why it was accepted, what evidence was used, what risks were known, and how to undo the change.
Packet contents
| Section | Required evidence |
|---|---|
| Candidate identity | digest, manifest, owner, lifecycle state |
| Lineage | parents, operator, data sources, teacher models |
| Evaluation | suite version, scorecards, failure slices, calibration |
| Resource profile | memory, latency, compute, energy, storage |
| Safety and security | scans, red-team notes, permission diff, hard gates |
| Release plan | shadow, canary, success criteria, stop conditions |
| Rollback | rollback package, procedure, owner, tested timestamp |
| Decision | approvers, UTC time, policy version, rationale |
Packet builder
FUNCTION build_audit_packet(candidate, evidence, release_plan, policy)
packet.candidate <- candidate.manifest
packet.lineage <- GET_LINEAGE(candidate.id)
packet.scorecards <- evidence.scorecards
packet.resource_profile <- evidence.resource_profile
packet.risk_assessment <- ASSESS_RISK(candidate, evidence, policy)
packet.release_plan <- release_plan
packet.rollback <- VERIFY_ROLLBACK(candidate)
packet.created_at_utc <- NOW_UTC()
RETURN SIGN(packet)
END FUNCTIONApproval rule
No approval should reference a floating name like latest. It should reference immutable digests, evidence versions, and policy versions.
Store packets with releases
The release record should link to the exact audit packet. If an incident occurs, the incident response team should not have to reconstruct why the candidate was promoted.
Source reports used for this guide
These reports are preserved verbatim in the site archive. The guide above is an editorial synthesis and may narrow, qualify, or reorganize claims from the source material.