The required evidence could not be established for the exact source tree verified by FalseGreen.
This does not prove universal correctness. Assurance is limited to the explicit formal properties, assumptions, models, summaries, and scope recorded in this report.
This is record 5 of this Job, re-issued from the evidence its run stored. The verdict was decided by the Job itself, under the rules that run shipped with (the policy digest and witness versions in the Security section); re-issuing re-presents the evidence and NEVER re-decides it. Record 1 stays immutable.
| Job | 520d2155-f6c4-43c6-953c-1829b6dd5cc3 |
|---|---|
| Language | rust |
| Toolchain | rustc 1.99.0 (rustc) (1.99.0) |
| Verifier environment | rust - rustc 1.99.0 (rustc) (1.99.0) |
| Source tree | e8006c3f8784d4f439eff39ce6354cbd256c987bb17243c3a45c57f92726d25d |
|---|---|
| Contract SHA-256 | e5994e7c7513719eb7bbc8e71819af12bee6973055b2cb3c5f458f5e4b1f12b7 |
| Criteria SHA-256 | d34458a3179d885efdb609b2971179f2f58aabd17860731a25031594a5d329cb |
| Criteria | 3 / 3 PASSED |
| Attempts | 7 |
|---|---|
| Duration | 27.1s |
| Report schema | v13 |
| Report record | 5 (re-issued 2026-10-26) |
| Signed | 2026-10-26 05:58:17 UTC |
(contract embedding unavailable — schema v2 report)
| Objective | Re-smoke FalseGreen 0.10.0 end-to-end on the ledger demo: the falsegreen.toml invariant set captures every implemented behavior claim (DESIGN.md sections 1-10 + README exit-code contract + threat-model scope), the baseline run is accepted with all five security witnesses carrying real evidence, and three dedicated break workspaces prove the SCA (#10), SAST (#14), and secret (#12) classes now actually gate the verdict; the HTML/PDF report parity (#13) and the invariant carry (#7) are re-observed on the signed artifacts. |
|---|---|
| Plan digest | fc5315fcb0033384496bdcf05184fb8aaf2768ad689e9f045a968c93cd8aa2bf |
| Work items | 7 |
Work items, in dependency order:
| Work item | Outcome | Depends on | Omission risk |
|---|---|---|---|
contract-invariants | falsegreen.toml carries ten [[invariant]] sections mapping 1:1 to the implemented behavior: canonical form, validation, hash chain, append-only store, Merkle/Ed25519 seals, compaction, policy evaluation, exit-code precedence, export/import round-trips, and the threat-model scope | - | - |
behavior-tests | the workspace test suite (run by the frozen contract criteria) pins each behavior the invariants claim | - | - |
green-baseline | one accepted Job over the clean tree with real (never-empty) evidence from all five witnesses | contract-invariants, behavior-tests | - |
sca-break | a pinned CRITICAL advisory (smallvec 1.6.0) yields a signed critical finding and a failed verdict | green-baseline | - |
sast-break | a payload matching a SARIF rule whose defaultConfiguration.level is error yields a high finding and a failed verdict | green-baseline | - |
secret-break | a planted below-D0-threshold secret token in-tree is found by the file-scanning gitleaks witness and fails the secret class | green-baseline | - |
inventory-evidence | supply_chain and license classes carry real SBOM facts (component rows + license facts) and are recorded severity-less — they inform, never severity-gate | green-baseline | - |
Acceptance conditions, and the evidence that decides each:
| Scope | Condition | Evidence |
|---|---|---|
contract-invariants | every DESIGN.md section and the README exit-code contract is claimed by exactly one invariant; the signed report's contract section echoes all ten verbatim (fixes #7) | inspection |
contract-invariants | the threat-model invariant states both halves: what verify proves and what it explicitly does not prove | inspection |
behavior-tests | canonical serialization is deterministic; key-order edits do not change the canonical form; hashing/signing run over canonical bytes | behavioral-test |
behavior-tests | unknown fields, empty required fields, non-object context, and out-of-range timestamps are rejected as corrupt-class, never normalized | behavioral-test |
behavior-tests | record hash commits to canonical event + prev_hash; the link rule and its named failures (bad_record_hash, broken_link, sequence_gap) hold | behavioral-test |
behavior-tests | append continues the verified head and never rewrites shard content; parse errors report shard and line | behavioral-test |
behavior-tests | Merkle construction (odd-leaf duplication), seal message fields, signature coverage, and count-mismatch detection hold | behavioral-test |
behavior-tests | compaction keeps the genesis prev_hash and root link unchanged, embeds the source seal verbatim, and breaks on rewrite | behavioral-test |
behavior-tests | deny and require_outcome rules flag exactly the matching events at verify time, with rule_id in the report | behavioral-test |
behavior-tests | exit codes 0/1/2/3/4/5/255 and the corrupt>gap>signature>tampered>policy precedence hold | behavioral-test |
behavior-tests | export/import reproduces identical record hashes into a fresh ledger | behavioral-test |
green-baseline | the clean workspace passes every required criterion and the verdict is accepted | build |
green-baseline | the signed report shows non-empty raw_output_digest (not e3b0c442...) for gitleaks and both syft witnesses, and echoes all ten contract invariants (fixes #7 #11 #12 vacuity) | artifact |
sca-break | the signed report carries a dependency_vulnerability finding at severity critical, class posture fail, verdict failed — the advisory is never silently dropped (#10 fixed) | artifact |
sast-break | the signed report carries a static_analysis finding at severity high (rule-level SARIF default honored), class posture fail, verdict failed (#14 fixed) | artifact |
secret-break | the signed report carries a secret-class finding (no raw secret value), class posture fail, verdict failed (#12 fixed) | artifact |
inventory-evidence | the signed report shows the syft SBOM projection (components as pkg:cargo purls) and license facts from the dependency manifest; both classes pass on the clean tree without severity rows (#11 fixed, DP-10.3) | artifact |
overall | all legs observed live: baseline accepted with five real witnesses and ten echoed invariants; SCA, SAST, and secret break runs each end in a signed failed verdict with the finding present; inventory facts real; HTML and PDF VEX sections both carry the JSON-report URL (#13) | artifact |
overall | each Job's entitlement is consumed exactly once at its terminal verdict, with the account posture readable per Job | artifact |
The bar these findings are judged against (the frozen policy): fail on: critical, high · unknown severity: insufficient_evidence.
| Finding | Subject | Class | Severity | State |
|---|---|---|---|---|
5046f75b49bcc91e972fe6e37dff89bd730acac66b5c0835cdfea59610c6a9a5osv/RUSTSEC-2021-0003 | pkg:crates.io/smallvec@1.6.0 | Dependency/SCA | high | OPEN |
538efbca6ab37d1de7206475fd690628e0d69cbb5b3b1d27719f69b6caaf43f7osv/GHSA-43w2-9j62-hq99 | pkg:crates.io/smallvec@1.6.0 | Dependency/SCA | high | OPEN |
The full SBOM and VEX are in the signed JSON report.
JSON report: https://falsegreen.com/report/520d2155-f6c4-43c6-953c-1829b6dd5cc3/json
no invariants (machine-discharged propositions) were frozen for this Job
| Policy | falsegreen-platform |
|---|---|
| Policy digest | 372d3c74758acb113c1bef14b20b08b326a7703dd57d943247de6541743c0fad |
| Result | NOT SATISFIED |
| Evidence class | Required | Status | Reasons |
|---|---|---|---|
| Dependency/SCA | yes | FAIL | vulnerability snapshot is stale (observed 2026-10-21T17:30:12Z, freshness bound 24h); finding 5046f75b49bcc91e972fe6e37dff89bd730acac66b5c0835cdfea59610c6a9a5 severity `high` is frozen-fail (osv/RUSTSEC-2021-0003); finding 538efbca6ab37d1de7206475fd690628e0d69cbb5b3b1d27719f69b6caaf43f7 severity `high` is frozen-fail (osv/GHSA-43w2-9j62-hq99) |
| Static analysis | yes | PASS | |
| Secrets | yes | PASS | |
| Supply chain | yes | PASS | 75 components inventoried (evidence, in the signed JSON report) |
| License policy | yes | NOT ASSESSED | no licence policy frozen — the licence facts are inventory, nothing was asserted · 73 licence facts inventoried (evidence, in the signed JSON report) |
How to read this table. PASS — the evidence was collected and nothing in it violated the frozen policy. FAIL — the evidence showed a violation the policy forbids; that alone fails the Job. INSUFFICIENT EVIDENCE — the evidence could not be collected, or could not be decided for a reason outside the code (a stale snapshot, an unavailable tool, output the parser could not read). It is never a pass, and it holds the Job at insufficient_evidence rather than accepting it. NOT ASSESSED — no policy is frozen for this class, so nothing was asserted about it; the facts are recorded as inventory and the class does not hold the Job. The findings table lists only what the frozen policy JUDGED — a graded severity, supply-chain drift, or a licence breaking the frozen policy. Everything else the tools recorded (components, licence facts) is inventory: not a finding, counted on the class row above, kept in the signed JSON report. A finding is OPEN unless it is resolved, not affected, or covered by a recorded exception.
Attempt security history (the full per-attempt sections are in the signed JSON report):
| Attempt | Result | Open findings | Demonstrated violations |
|---|---|---|---|
| #1 | NOT SATISFIED | 2 | vulnerability snapshot is stale (observed 2026-10-21T17:30:12Z, freshness bound 24h); finding 5046f75b49bcc91e972fe6e37dff89bd730acac66b5c0835cdfea59610c6a9a5 severity `high` is frozen-fail (osv/RUSTSEC-2021-0003); finding 538efbca6ab37d1de7206475fd690628e0d69cbb5b3b1d27719f69b6caaf43f7 severity `high` is frozen-fail (osv/GHSA-43w2-9j62-hq99) |
| #2 | NOT SATISFIED | 2 | vulnerability snapshot is stale (observed 2026-10-21T17:30:12Z, freshness bound 24h); finding 5046f75b49bcc91e972fe6e37dff89bd730acac66b5c0835cdfea59610c6a9a5 severity `high` is frozen-fail (osv/RUSTSEC-2021-0003); finding 538efbca6ab37d1de7206475fd690628e0d69cbb5b3b1d27719f69b6caaf43f7 severity `high` is frozen-fail (osv/GHSA-43w2-9j62-hq99) |
| #3 | NOT SATISFIED | 2 | vulnerability snapshot is stale (observed 2026-10-21T17:30:12Z, freshness bound 24h); finding 5046f75b49bcc91e972fe6e37dff89bd730acac66b5c0835cdfea59610c6a9a5 severity `high` is frozen-fail (osv/RUSTSEC-2021-0003); finding 538efbca6ab37d1de7206475fd690628e0d69cbb5b3b1d27719f69b6caaf43f7 severity `high` is frozen-fail (osv/GHSA-43w2-9j62-hq99) |
| #4 | NOT SATISFIED | 2 | vulnerability snapshot is stale (observed 2026-10-21T17:30:12Z, freshness bound 24h); finding 5046f75b49bcc91e972fe6e37dff89bd730acac66b5c0835cdfea59610c6a9a5 severity `high` is frozen-fail (osv/RUSTSEC-2021-0003); finding 538efbca6ab37d1de7206475fd690628e0d69cbb5b3b1d27719f69b6caaf43f7 severity `high` is frozen-fail (osv/GHSA-43w2-9j62-hq99) |
| #5 | NOT SATISFIED | 2 | vulnerability snapshot is stale (observed 2026-10-21T17:30:12Z, freshness bound 24h); finding 5046f75b49bcc91e972fe6e37dff89bd730acac66b5c0835cdfea59610c6a9a5 severity `high` is frozen-fail (osv/RUSTSEC-2021-0003); finding 538efbca6ab37d1de7206475fd690628e0d69cbb5b3b1d27719f69b6caaf43f7 severity `high` is frozen-fail (osv/GHSA-43w2-9j62-hq99) |
| #6 | NOT SATISFIED | 2 | vulnerability snapshot is stale (observed 2026-10-21T17:30:12Z, freshness bound 24h); finding 5046f75b49bcc91e972fe6e37dff89bd730acac66b5c0835cdfea59610c6a9a5 severity `high` is frozen-fail (osv/RUSTSEC-2021-0003); finding 538efbca6ab37d1de7206475fd690628e0d69cbb5b3b1d27719f69b6caaf43f7 severity `high` is frozen-fail (osv/GHSA-43w2-9j62-hq99) |
| #7 | NOT SATISFIED | 2 | vulnerability snapshot is stale (observed 2026-10-21T17:30:12Z, freshness bound 24h); finding 5046f75b49bcc91e972fe6e37dff89bd730acac66b5c0835cdfea59610c6a9a5 severity `high` is frozen-fail (osv/RUSTSEC-2021-0003); finding 538efbca6ab37d1de7206475fd690628e0d69cbb5b3b1d27719f69b6caaf43f7 severity `high` is frozen-fail (osv/GHSA-43w2-9j62-hq99) |
| Tool | Version | What it did in this run |
|---|---|---|
| osv-scanner | 2.7.0 | Dependency/SCA evidence witness |
| semgrep | 1.181.0 | Static analysis evidence witness |
| gitleaks | 8.30.1 | Secrets evidence witness |
| syft | 1.54.1 | Supply chain evidence witness |
| dependency-manifest | 1 | License policy evidence witness |
This report is cryptographically signed: Ed25519 over the canonical report content. The public key is embedded in the report — verification is offline and registry-free (falsegreen verify-report).
This is a presentation of the signed canonical evidence (the JSON artifact). It is not an audit certificate. - FalseGreen v0.16.0