Unsafe Rust Authoring and Audit
Treat each safety contract as an English-language theorem and each safety
comment as its proof. Reject hand-waving, folklore, hidden assumptions, and
proof by testing.
Establish the Exact Claim
Unless the user specifies a narrower claim, establish:
For the exact audited source snapshot, every supported compilation
configuration, every valid in-scope use in a context satisfying all
out-of-scope safety obligations preserves freedom from Rust undefined behavior
under the documented Rust abstract semantics, and every mandatory in-scope
documented postcondition holds, assuming only the explicitly recorded trusted
computing base (TCB).
Interpret valid use as follows:
- For a safe API, quantify over every well-typed safe use. Impose no hidden
safety precondition.
- For an unsafe API, quantify over every use satisfying all documented initial,
ongoing, and terminal safety obligations.
- For a binary or other entrypoint, quantify over executions satisfying the
explicitly recorded deployment assumptions. Do not transfer those
assumptions silently to a safe library API.
Prove every documented postcondition of each unsafe API in scope and every
documented guarantee consumed by an in-scope soundness proof. Include broader
safe-API robustness only when the user or audit scope requests it.
Prove source-level Rust soundness first. State claims about a particular
compiler backend, binary, platform, security property, probability, or
deployment separately with their additional premises.
Recover the Required Domain
Before consuming premises or issuing a full verdict, derive the exact domain
quantified by the claim. Let Required(case) denote the valid uses, inputs,
states, executions, Rust/toolchain versions, and configurations that the claim
requires. Let Covered(case) hold exactly where every obligation the claim
requires for that case has a complete derivation from applicable premises.
Within one obligation, valid case lemmas may be unioned. Across distinct
obligations, claim-level coverage is their pointwise conjunction—not a union of
regions in which different obligations happened to be proved.
- Preserve the controlling domain expressions symbolically, including ranges,
unions, exclusions, quantifiers, and conditional or moving policies. Record
their exact sources and audit cutoff.
- If applicable project sources conflict or materially underdetermine support,
obtain an authorized resolution, derive an explicit conservative audit
domain containing every materially supported candidate predicate, or leave
the affected combined claim
UNPROVED. Do not call a conservative audit
domain the resolved project promise.
- Treat every normalization, enumeration, partition, exclusion, and policy
merge as a proof step. Prove equality before replacing one domain expression
with another, the required containment before using a conservative superset,
and
Required ⊆ Covered before concluding PROVED.
- A finite inventory requires evidence both that every listed member belongs
and that no required member is omitted. Endpoints, one representative per
apparent category, CI jobs, lockfiles, and other samples do not prove an
interval or set inventory.
- Prefer a parametric proof over the symbolic predicate when enumeration would
be large or its exact membership is unavailable. Otherwise report proved
regions and the unresolved remainder; do not turn it into an implicit
exclusion.
- An audit cutoff limits the temporal scope of a claim. It does not establish
semantic continuity, enumerate releases before the cutoff, or make sampled
documentation applicable between samples.
Apply
configuration closure
to derive supported compilation cases and prove every transformation of that
predicate.
Use Only Applicable Premises
- Bottom out Rust-language and standard-library facts in exact applicable text
from versioned Rust Reference or standard-library documentation.
- Quote and link the smallest sufficient set of passages whose propositions,
together with justified inference steps, entail the fact. Open each citation
and verify its wording, qualifications, version, and scope.
- Attach an applicability domain to every claim and premise, whether stated
locally or inherited from an identified project policy or canonical entry. A
derivation proves only the cases covered by all premises it consumes.
- Apply a guarantee documented for an older Rust release to a later stable
release only when an exact applicable Rust backwards-compatibility
commitment preserves that exact proposition throughout the later release's
relevant domain. An API's stability badge does not by itself preserve every
behavioral statement in its current documentation. Record a
non-authoritative compatibility premise explicitly in the TCB. Never infer
an earlier-version guarantee merely from later documentation.
- Do not promote this skill, the Rustonomicon, Unsafe Code Guidelines, RFCs,
blogs, issue discussions, implementation behavior, Miri, or common practice
to Rust axioms. Use them to discover risks and authoritative text, or record
the exact additional proposition as a TCB assumption.
- Trust a deliberately selected safe dependency API to behave as documented
only when that exact trust is explicit in the TCB. Do not extend this
exception to caller-controlled safe code, callbacks, values, or safe trait
implementations.
- Audit a third-party unsafe API through to admissible premises or record its
exact implementation and contract as an additional TCB assumption.
When no admissible direct or derived proof can be completed because
authoritative documentation is ambiguous or insufficient, identify the
smallest missing proposition. Do not repair it with intuition. Report a
documentation gap and suggest an upstream improvement when appropriate.
Compose Proofs Locally and Literally
- Identify the controlling contract independently of the existing safety
comment. Distinguish normative contract text from examples, rationale,
implementation comments, and inferred design intent.
- Read the controlling contract according to its actual text. Decompose every
applicable conjunction, implication, quantifier, temporal clause,
precondition, and postcondition into separately reviewable obligations. Do
not replace a literal requirement with an operationally similar property.
Give every normative clause a disposition even when no known consumer uses
it.
- Reify every fact used nonlocally as a named contract or invariant carried by a
type, field, function boundary, guard, typestate, lock, token, or other
locally checkable mechanism. A function contract about global state is an
acceptable degenerate case.
- Prove that each state transition establishes, preserves, transfers,
deliberately suspends under an explicit obligation, or discharges every
applicable invariant. At each consumer, prove that the current invariant
entails the exact needed precondition.
- Trace dataflow across calls and time rather than limiting review to lexical
unsafe blocks. Account for every producer, transition, and consumer.
- Do not promote a producer's preconditions into a universal invariant of its
output type. Any type- or abstraction-wide conclusion needs a complete
derivation independent of that invalid reversal—for example, applicable
authoritative premises, construction-and-preservation closure under an
enforced boundary, or an admissible explicit TCB premise. Local checks and
other applicable derivations may instead prove the proposition for the
particular consumed values or quantified subset.
- For new code, place invariant-bearing representation in the smallest
practical leaf module, keep safely accessible representation fields private
to it, and treat safe code outside that module—including the rest of the same
crate—as untrusted.
Follow the Proof Workflow
- Frame the claim. Record the artifact identity, exact scope, valid uses or
executions, mandatory postconditions, TCB, exclusions, and whether design
alternatives are requested.
- Recover the domain. Preserve the controlling expressions, derive
Required, justify every transformation or conservative enlargement, and
state how eventual proof cases will establish Required ⊆ Covered.
- Inventory the surface. Enumerate every in-scope safe and unsafe API
surface, obligation site, invariant producer/transition/consumer, and
generated or expanded artifact across the required domain.
- State every obligation. Obtain each controlling contract, decompose it
literally, and state the exact proposition and applicability to prove.
- Construct the derivation. Derive every conjunct from checked local facts,
named invariants, applicable authoritative axioms, tool-derived theorems, or
explicit TCB entries. Unfold definitions and seek indirect multi-premise
derivations; absence of one direct sentence is not itself a documentation
gap. Justify every intermediate inference.
- Close and challenge. Give every literal contract clause and safe surface
a disposition, establish domain closure, and try to falsify the domain
recovery, contract reading, derivations, and coverage with boundary and
adversarial cases derived from the actual clauses.
- Certify and report. Apply the quantifier-sensitive certificates below.
Keep every unresolved obligation visible and state the smallest missing
implication. Record proofs, TCB, coverage, findings, postcondition failures,
documentation gaps, and residual scope without optimism.
Write and Review Proof-Grade Documentation
Read proof-obligations.md before authoring or
reviewing an unsafe contract, invariant, SAFETY comment, or local proof.
Keep each proof adjacent to the smallest cohesive unsafe operation or assertion.
State the exact operation and its preconditions, cite checked facts and named
invariants, show the derivation, and prove resulting postconditions and
invariant state on every applicable exit.
When existing code can be validated only by reconstructing a material
derivation absent from its safety comment, do not accept it silently. Include
the reconstructed derivation—or the smallest missing portion—in the review,
with its citations and applicability. Classify implementation correctness
separately from proof-documentation quality. If changes are authorized, improve
the adjacent proof; otherwise provide proposed wording. Do not use a
reconstructed implementation proof to invent or strengthen a caller-facing
contract retroactively.
Close API and Configuration Boundaries
Read
api-boundaries-and-evolution.md
for fields, constructors, methods, traits, sealing, macros, public or hidden
APIs, robustness, or contract evolution.
Apply this mandatory safe-surface checklist: public fields, constructors, safe
methods, safe trait methods, and macro-generated APIs all count as safe API
surfaces. Include language-reachable #[doc(hidden)] safe items for soundness
even when excluded from documentation or compatibility promises.
Treat caller-provided safe code as adversarial within the behaviors permitted
by safe Rust and its types. Seal a trait or make it unsafe when soundness
requires an unenforced implementer behavior.
Read
configurations-and-generated-code.md
for every full audit and whenever supported-toolchain policy, conditional
compilation, targets, generated code, FFI, assembly, SIMD, allocators, linking,
or build tooling is relevant.
Every supported combination of compilation options that can ship downstream
must be sound. Use parametric proofs or exhaustive partitions when literal
enumeration would explode; do not substitute a tested sample.
Evaluate Trust and Evidence
Read tcb-and-evidence.md for every full audit
and whenever a proof uses dependencies, external specifications, tools,
testing, formal verification, environmental restrictions, or cryptographic or
probabilistic assumptions.
Judge evidence by the exact proposition it establishes, its artifact and model,
its quantified domain and bounds, its premises, and its residual trust—not by a
label such as testing, static analysis, model checking, or formal verification.
Design for Provability When Requested
Read abstraction-design.md when the user asks
to design, refactor, or reconsider an unsafe abstraction, or when authoring a
new unsafe abstraction.
Judge existing code under its current source and controlling contract. Inferred
intent or a preferable model may guide a separate proposal but may not narrow,
reinterpret, or discharge a current obligation. Treat implemented changes as a
new artifact and audit them anew.
Use Exact Verdicts
Read audit-reporting.md before delivering a
persistent or full audit.
| Verdict |
Required certificate |
| PROVED |
Every obligation for the exact named claim has a checked derivation over its complete applicability, Required ⊆ Covered, and every premise is proved from admissible sources or appears as an accepted entry in the stated TCB. |
| UNPROVED |
A required derivation, premise, applicability or domain-closure argument, postcondition proof, or citation remains missing, ambiguous, circular, or unverifiable, and no applicable existential refutation below is complete. |
| UNSOUND |
There exists a proved valid in-scope use or execution which reaches an executed operation or semantic event, its exact required safety proposition is false there, and applicable authoritative semantics—possibly together with an explicit TCB premise about the implementation—entails undefined behavior. |
| CONTRACT-BROKEN |
There exists a proved valid in-scope execution which, considered as a whole, contains no undefined behavior and falsifies a documented postcondition. |
Failure to prove a universal obligation is enough for UNPROVED; do not invent
a counterexample. Conversely, once all parts of an existential UB certificate
are proved, report the scoped soundness claim UNSOUND; do not continue to
demand a universal positive lemma and dilute the result to UNPROVED. A
violation of user-authored safety prose is not by itself a runtime UB event:
trace the certificate through applicable contracts to the exact authoritative
or explicitly trusted UB consequence.
Classify a witness using the execution as a whole, not observations from a
prefix of an execution that later reaches undefined behavior. An
undefined-behavior-containing execution can witness UNSOUND but cannot
establish the existential claim required for CONTRACT-BROKEN. If it is the
only behavioral evidence, report soundness as UNSOUND and the postcondition
as UNPROVED. An independent UB-free witness or equivalent existence proof
may establish CONTRACT-BROKEN; separate proofs may therefore establish both
verdicts.
Apply verdicts separately to soundness, documented postconditions, and
conditional application claims. State exact scope, applicability, and TCB
beside every verdict. For every affirmative claim spanning multiple Rust
releases, identify a parametric proof, an exhaustive applicable partition, or
an exact proposition-preserving compatibility premise whose covered domain
contains the claimed release set. Never substitute endpoints, sparse samples,
an audit cutoff, “looks sound,” “probably sound,” or test success.
For a persistent audit, complete:
- tcb-audit-log-template.md
- unsafe-code-audit-report-template.md
For an inline review, provide the equivalent material compactly. Reuse an
existing canonical project log rather than creating a competing trust model.
1---2name: unsafe-rust-33description: Author, document, review, audit, or redesign unsafe Rust with proof-grade rigor. Use for unsafe blocks and functions, unsafe traits and impls, raw pointers, FFI, inline assembly, intrinsics, layout or validity reasoning, concurrency and atomics, SIMD and target features, allocators, invariant-bearing fields, safety comments or `# Safety` documentation, soundness reviews, TCB audits, generated unsafe code, changes to safety or behavioral contracts, and proof-oriented redesign of unsafe abstractions.4---56# Unsafe Rust Authoring and Audit78Treat each safety contract as an English-language theorem and each safety9comment as its proof. Reject hand-waving, folklore, hidden assumptions, and10proof by testing.1112## Establish the Exact Claim1314Unless the user specifies a narrower claim, establish:1516> For the exact audited source snapshot, every supported compilation17> configuration, every valid in-scope use in a context satisfying all18> out-of-scope safety obligations preserves freedom from Rust undefined behavior19> under the documented Rust abstract semantics, and every mandatory in-scope20> documented postcondition holds, assuming only the explicitly recorded trusted21> computing base (TCB).2223Interpret valid use as follows:2425- For a safe API, quantify over every well-typed safe use. Impose no hidden26 safety precondition.27- For an unsafe API, quantify over every use satisfying all documented initial,28 ongoing, and terminal safety obligations.29- For a binary or other entrypoint, quantify over executions satisfying the30 explicitly recorded deployment assumptions. Do not transfer those31 assumptions silently to a safe library API.3233Prove every documented postcondition of each unsafe API in scope and every34documented guarantee consumed by an in-scope soundness proof. Include broader35safe-API robustness only when the user or audit scope requests it.3637Prove source-level Rust soundness first. State claims about a particular38compiler backend, binary, platform, security property, probability, or39deployment separately with their additional premises.4041## Recover the Required Domain4243Before consuming premises or issuing a full verdict, derive the exact domain44quantified by the claim. Let `Required(case)` denote the valid uses, inputs,45states, executions, Rust/toolchain versions, and configurations that the claim46requires. Let `Covered(case)` hold exactly where every obligation the claim47requires for that case has a complete derivation from applicable premises.48Within one obligation, valid case lemmas may be unioned. Across distinct49obligations, claim-level coverage is their pointwise conjunction—not a union of50regions in which different obligations happened to be proved.5152- Preserve the controlling domain expressions symbolically, including ranges,53 unions, exclusions, quantifiers, and conditional or moving policies. Record54 their exact sources and audit cutoff.55- If applicable project sources conflict or materially underdetermine support,56 obtain an authorized resolution, derive an explicit conservative audit57 domain containing every materially supported candidate predicate, or leave58 the affected combined claim `UNPROVED`. Do not call a conservative audit59 domain the resolved project promise.60- Treat every normalization, enumeration, partition, exclusion, and policy61 merge as a proof step. Prove equality before replacing one domain expression62 with another, the required containment before using a conservative superset,63 and `Required ⊆ Covered` before concluding `PROVED`.64- A finite inventory requires evidence both that every listed member belongs65 and that no required member is omitted. Endpoints, one representative per66 apparent category, CI jobs, lockfiles, and other samples do not prove an67 interval or set inventory.68- Prefer a parametric proof over the symbolic predicate when enumeration would69 be large or its exact membership is unavailable. Otherwise report proved70 regions and the unresolved remainder; do not turn it into an implicit71 exclusion.72- An audit cutoff limits the temporal scope of a claim. It does not establish73 semantic continuity, enumerate releases before the cutoff, or make sampled74 documentation applicable between samples.7576Apply77[configuration closure](references/configurations-and-generated-code.md#recover-the-required-supported-set)78to derive supported compilation cases and prove every transformation of that79predicate.8081## Use Only Applicable Premises8283- Bottom out Rust-language and standard-library facts in exact applicable text84 from versioned Rust Reference or standard-library documentation.85- Quote and link the smallest sufficient set of passages whose propositions,86 together with justified inference steps, entail the fact. Open each citation87 and verify its wording, qualifications, version, and scope.88- Attach an applicability domain to every claim and premise, whether stated89 locally or inherited from an identified project policy or canonical entry. A90 derivation proves only the cases covered by all premises it consumes.91- Apply a guarantee documented for an older Rust release to a later stable92 release only when an exact applicable Rust backwards-compatibility93 commitment preserves that exact proposition throughout the later release's94 relevant domain. An API's stability badge does not by itself preserve every95 behavioral statement in its current documentation. Record a96 non-authoritative compatibility premise explicitly in the TCB. Never infer97 an earlier-version guarantee merely from later documentation.98- Do not promote this skill, the Rustonomicon, Unsafe Code Guidelines, RFCs,99 blogs, issue discussions, implementation behavior, Miri, or common practice100 to Rust axioms. Use them to discover risks and authoritative text, or record101 the exact additional proposition as a TCB assumption.102- Trust a deliberately selected safe dependency API to behave as documented103 only when that exact trust is explicit in the TCB. Do not extend this104 exception to caller-controlled safe code, callbacks, values, or safe trait105 implementations.106- Audit a third-party unsafe API through to admissible premises or record its107 exact implementation and contract as an additional TCB assumption.108109When no admissible direct or derived proof can be completed because110authoritative documentation is ambiguous or insufficient, identify the111smallest missing proposition. Do not repair it with intuition. Report a112documentation gap and suggest an upstream improvement when appropriate.113114## Compose Proofs Locally and Literally115116- Identify the controlling contract independently of the existing safety117 comment. Distinguish normative contract text from examples, rationale,118 implementation comments, and inferred design intent.119- Read the controlling contract according to its actual text. Decompose every120 applicable conjunction, implication, quantifier, temporal clause,121 precondition, and postcondition into separately reviewable obligations. Do122 not replace a literal requirement with an operationally similar property.123 Give every normative clause a disposition even when no known consumer uses124 it.125- Reify every fact used nonlocally as a named contract or invariant carried by a126 type, field, function boundary, guard, typestate, lock, token, or other127 locally checkable mechanism. A function contract about global state is an128 acceptable degenerate case.129- Prove that each state transition establishes, preserves, transfers,130 deliberately suspends under an explicit obligation, or discharges every131 applicable invariant. At each consumer, prove that the current invariant132 entails the exact needed precondition.133- Trace dataflow across calls and time rather than limiting review to lexical134 unsafe blocks. Account for every producer, transition, and consumer.135- Do not promote a producer's preconditions into a universal invariant of its136 output type. Any type- or abstraction-wide conclusion needs a complete137 derivation independent of that invalid reversal—for example, applicable138 authoritative premises, construction-and-preservation closure under an139 enforced boundary, or an admissible explicit TCB premise. Local checks and140 other applicable derivations may instead prove the proposition for the141 particular consumed values or quantified subset.142- For new code, place invariant-bearing representation in the smallest143 practical leaf module, keep safely accessible representation fields private144 to it, and treat safe code outside that module—including the rest of the same145 crate—as untrusted.146147## Follow the Proof Workflow1481491. **Frame the claim.** Record the artifact identity, exact scope, valid uses or150 executions, mandatory postconditions, TCB, exclusions, and whether design151 alternatives are requested.1522. **Recover the domain.** Preserve the controlling expressions, derive153 `Required`, justify every transformation or conservative enlargement, and154 state how eventual proof cases will establish `Required ⊆ Covered`.1553. **Inventory the surface.** Enumerate every in-scope safe and unsafe API156 surface, obligation site, invariant producer/transition/consumer, and157 generated or expanded artifact across the required domain.1584. **State every obligation.** Obtain each controlling contract, decompose it159 literally, and state the exact proposition and applicability to prove.1605. **Construct the derivation.** Derive every conjunct from checked local facts,161 named invariants, applicable authoritative axioms, tool-derived theorems, or162 explicit TCB entries. Unfold definitions and seek indirect multi-premise163 derivations; absence of one direct sentence is not itself a documentation164 gap. Justify every intermediate inference.1656. **Close and challenge.** Give every literal contract clause and safe surface166 a disposition, establish domain closure, and try to falsify the domain167 recovery, contract reading, derivations, and coverage with boundary and168 adversarial cases derived from the actual clauses.1697. **Certify and report.** Apply the quantifier-sensitive certificates below.170 Keep every unresolved obligation visible and state the smallest missing171 implication. Record proofs, TCB, coverage, findings, postcondition failures,172 documentation gaps, and residual scope without optimism.173174## Write and Review Proof-Grade Documentation175176Read [proof-obligations.md](references/proof-obligations.md) before authoring or177reviewing an unsafe contract, invariant, `SAFETY` comment, or local proof.178179Keep each proof adjacent to the smallest cohesive unsafe operation or assertion.180State the exact operation and its preconditions, cite checked facts and named181invariants, show the derivation, and prove resulting postconditions and182invariant state on every applicable exit.183184When existing code can be validated only by reconstructing a material185derivation absent from its safety comment, do not accept it silently. Include186the reconstructed derivation—or the smallest missing portion—in the review,187with its citations and applicability. Classify implementation correctness188separately from proof-documentation quality. If changes are authorized, improve189the adjacent proof; otherwise provide proposed wording. Do not use a190reconstructed implementation proof to invent or strengthen a caller-facing191contract retroactively.192193## Close API and Configuration Boundaries194195Read196[api-boundaries-and-evolution.md](references/api-boundaries-and-evolution.md)197for fields, constructors, methods, traits, sealing, macros, public or hidden198APIs, robustness, or contract evolution.199200Apply this mandatory safe-surface checklist: public fields, constructors, safe201methods, safe trait methods, and macro-generated APIs all count as safe API202surfaces. Include language-reachable `#[doc(hidden)]` safe items for soundness203even when excluded from documentation or compatibility promises.204205Treat caller-provided safe code as adversarial within the behaviors permitted206by safe Rust and its types. Seal a trait or make it unsafe when soundness207requires an unenforced implementer behavior.208209Read210[configurations-and-generated-code.md](references/configurations-and-generated-code.md)211for every full audit and whenever supported-toolchain policy, conditional212compilation, targets, generated code, FFI, assembly, SIMD, allocators, linking,213or build tooling is relevant.214Every supported combination of compilation options that can ship downstream215must be sound. Use parametric proofs or exhaustive partitions when literal216enumeration would explode; do not substitute a tested sample.217218## Evaluate Trust and Evidence219220Read [tcb-and-evidence.md](references/tcb-and-evidence.md) for every full audit221and whenever a proof uses dependencies, external specifications, tools,222testing, formal verification, environmental restrictions, or cryptographic or223probabilistic assumptions.224225Judge evidence by the exact proposition it establishes, its artifact and model,226its quantified domain and bounds, its premises, and its residual trust—not by a227label such as testing, static analysis, model checking, or formal verification.228229## Design for Provability When Requested230231Read [abstraction-design.md](references/abstraction-design.md) when the user asks232to design, refactor, or reconsider an unsafe abstraction, or when authoring a233new unsafe abstraction.234235Judge existing code under its current source and controlling contract. Inferred236intent or a preferable model may guide a separate proposal but may not narrow,237reinterpret, or discharge a current obligation. Treat implemented changes as a238new artifact and audit them anew.239240## Use Exact Verdicts241242Read [audit-reporting.md](references/audit-reporting.md) before delivering a243persistent or full audit.244245| Verdict | Required certificate |246|---|---|247| **PROVED** | Every obligation for the exact named claim has a checked derivation over its complete applicability, `Required ⊆ Covered`, and every premise is proved from admissible sources or appears as an accepted entry in the stated TCB. |248| **UNPROVED** | A required derivation, premise, applicability or domain-closure argument, postcondition proof, or citation remains missing, ambiguous, circular, or unverifiable, and no applicable existential refutation below is complete. |249| **UNSOUND** | There exists a proved valid in-scope use or execution which reaches an executed operation or semantic event, its exact required safety proposition is false there, and applicable authoritative semantics—possibly together with an explicit TCB premise about the implementation—entails undefined behavior. |250| **CONTRACT-BROKEN** | There exists a proved valid in-scope execution which, considered as a whole, contains no undefined behavior and falsifies a documented postcondition. |251252Failure to prove a universal obligation is enough for `UNPROVED`; do not invent253a counterexample. Conversely, once all parts of an existential UB certificate254are proved, report the scoped soundness claim `UNSOUND`; do not continue to255demand a universal positive lemma and dilute the result to `UNPROVED`. A256violation of user-authored safety prose is not by itself a runtime UB event:257trace the certificate through applicable contracts to the exact authoritative258or explicitly trusted UB consequence.259260Classify a witness using the execution as a whole, not observations from a261prefix of an execution that later reaches undefined behavior. An262undefined-behavior-containing execution can witness `UNSOUND` but cannot263establish the existential claim required for `CONTRACT-BROKEN`. If it is the264only behavioral evidence, report soundness as `UNSOUND` and the postcondition265as `UNPROVED`. An independent UB-free witness or equivalent existence proof266may establish `CONTRACT-BROKEN`; separate proofs may therefore establish both267verdicts.268269Apply verdicts separately to soundness, documented postconditions, and270conditional application claims. State exact scope, applicability, and TCB271beside every verdict. For every affirmative claim spanning multiple Rust272releases, identify a parametric proof, an exhaustive applicable partition, or273an exact proposition-preserving compatibility premise whose covered domain274contains the claimed release set. Never substitute endpoints, sparse samples,275an audit cutoff, “looks sound,” “probably sound,” or test success.276277For a persistent audit, complete:278279- [tcb-audit-log-template.md](assets/tcb-audit-log-template.md)280- [unsafe-code-audit-report-template.md](assets/unsafe-code-audit-report-template.md)281282For an inline review, provide the equivalent material compactly. Reuse an283existing canonical project log rather than creating a competing trust model.