Topic · Build matrix complete

Build matrix complete

Gist

A declared project.build_targets row with no tagged evidence result is not a silent pass. Proof runs proof audit --check build_matrix_complete and names the uncovered config. Warning. Jama still authors.

proof audit --check build_matrix_complete

Keep the GitHub Actions matrix if it already lists linux-amd64 and simd. Keep the extra tests if they still pass on the default job. Neither one asks whether an evidence-profile result carried the simd tokens.

01 · The silent last pass

The matrix listed simd. The evidence did not.

You can declare two build targets in proof.yaml, ship a passing unit result tagged only for linux-amd64, and still look covered on paper. This hop stays quiet until verify asks whether every declared config has a matching evidence-profile result.

The check is build_matrix_complete. It is VERIFY-stage. It warns. It only fires once project.build_targets exists. No targets declared is a skip. For each target it normalizes the config: tokens, loads the evidence-profile results, and passes if some result's config: list is a superset of those tokens. Order does not matter. Extra tokens on the result are fine. Missing target tokens are not. A target with empty config: cannot silently pass. It does not write the YAML. It does not prove the Go. It does not run the CI job.

This hop is the matrix companion to obligation profile evidence complete. That page is whether a mapped profile still has a passing result file. This hop is whether a declared build target's config tokens showed up on some result. A GitHub Actions matrix that lists simd is not that floor. A green default-job suite is not that floor. SIMD flags, //go:build, #[cfg], and multi-arch CI rows are easy to declare and never exercise. The finding names the target that stayed on paper.

The two resolutions are alternatives, not steps. If the target is real, produce an evidence-profile result whose config: list includes every token on that target. If the target is not applicable, remove it from project.build_targets. Opting the check out reports skip, never pass. Do not delete the target list to silence the finding if the configurations still ship. That is the finding.

# proof.yaml lists linux-amd64 and simd
# evidence/unit.yaml result config: [goos:linux, goarch:amd64]
# extra tests still green on the default job
# proof audit --check build_matrix_complete
# [VERIFY] build_matrix_complete
# build target simd (config: [feature:simd]) has no evidence
# WARN
# proof help build_matrix_complete

Read both sides before you edit anything. The declared target, and the result that did not cover it. A project with no build_targets skips this hop. That skip is not a proof that every shipped config was exercised:

proof audit --check build_matrix_complete
proof help build_matrix_complete
proof config set project.checks.build_matrix_complete.enabled false
proof audit --check build_matrix_complete --verbose

02 · The exhibit

Same undeclared simd. Silent last pass, or this hop.

One last green suite after project.build_targets listed simd and no evidence result carried feature:simd. Click the tabs.

The wording

  • Ask did the default job still pass
  • Delta simd listed. result tagged linux-amd64 only
  • Why nobody compared build_targets to result config tokens
Default job still green

This hop

Nobody asked whether feature:simd showed up on a result. The finding kind is this hop.

Need unread

The wording

Keep the GitHub Actions yaml. Keep the extra tests. That is not this hop.

Keep the record

Proof

  • Ask did every declared target have a covering result
  • Out simd (config: [feature:simd]) has no evidence, warning
Matrix listed it. Evidence did not.

Same undeclared simd. Silent last pass, or this hop. Click the tabs.

Surface What they do What Proof does What we lose
Green extra tests The suite still passes on the default job. Whether a declared target's config tokens showed up on a result. We do not treat a green default job as matrix coverage.
GitHub Actions matrix A yaml list of jobs. Real demand for that phrase is GitHub docs. Whether an evidence result covered the declared tokens. We do not replace GitHub Actions. We have not run a frozen Actions corpus.
Obligation profile evidence complete Whether a mapped profile still has a passing result file. Whether that result's config tokens cover a declared build target. Not the profile-result hop. See obligation profile evidence complete.
LDRA / VectorCAST An avionics toolchain that already owns C CIA. A warning the audit can name next to an uncovered target. We do not replace LDRA. We have not run a frozen VectorCAST corpus. See Proof vs LDRA.
Jama cell A shall, and a link if you type it. A warning the audit can name next to the uncovered config. Not Jama's V&V. Jama still authors. We have not run a frozen Jama pack.

The teaching graph is still one declared target whose config tokens never appeared on a result. Close it by adding a result whose config: list includes every token, or by removing the target if it is not applicable. Do not empty build_targets to make the skip look like a pass if those configurations still ship. The hop does not write that result for you. The hop does not run the job.

# evidence result now carries feature:simd
# proof audit --check build_matrix_complete
# 0 uncovered build targets
# VERIFY may move on. pass sits on a covering result, not a yaml list

The profile-result hop stays on obligation profile evidence complete. The rewrite hop stays on characterization testing and mirrors. Jama still authors. Proof vs Jama.

03 · The honest loss

Proof names the uncovered target. It does not run the job, and it does not prove the Go.

A quiet proof audit --check build_matrix_complete means every in-scope declared target has a covering result, or that nothing declared a target. Jama still authors.

Warning when a declared project.build_targets entry has no evidence-profile result whose config: tokens cover it. Default severity is warning, not error. It does not fail the merge by itself unless the audit is set to fail on warn. No targets declared is a skip, and that skip is not a proof that every shipped config was exercised. Empty config: on a target cannot silently pass. Opt-out reports skip, never pass. The hop does not write the result file. It does not run GitHub Actions. It does not compile the simd target. It does not prove the Go. A quiet hop is not a proof that Jama's shall still holds on every architecture, only that every in-scope declared target currently has a covering result, or that nothing asked. We have not scored this floor against a frozen Jama pack, a VectorCAST corpus, or a GitHub Actions matrix. The loss is named, not scored.

The profile-result hop stays on obligation profile evidence complete. The rewrite hop stays on characterization testing and mirrors. The engagement stays on software correctness audit. Jama still authors.

04 · Nearby questions

What people type next.

What is build matrix complete? Same question. Same URL.

Is this obligation profile evidence complete? No. That hop is whether a mapped profile still has a passing result file. This hop is whether that result's config tokens cover a declared build target. See obligation profile evidence complete.

Is this GitHub Actions matrix? No. That phrase is GitHub's job yaml. This hop reads evidence-profile config: tokens. We do not replace GitHub Actions.

Do extra tests clear an uncovered target? No. A green default job is not matrix coverage.

Does this finding fail the merge? No by default. The check keeps warning severity. Fail-on-warn still blocks advancement.

Does a quiet hop prove every config shipped? No. A project with no build_targets skips. The hop observes declared targets versus result tokens. It does not prove the Go.

Is this characterization testing? No. That page is rewrite-with-a-ledger. This hop is a declared config versus a tagged result. See characterization testing and mirrors.

Is this known issue closure platform bound? No. That hop fails when a KI's only closure was observed outside the declared reachable set. This hop is the suite-level config: floor. See known issue closure platform bound.

Is Proof an LDRA alternative for the instrument? No. LDRA still owns the avionics toolchain. Proof vs LDRA.

Is Proof a Jama alternative for the shall? No. Jama still authors. Proof vs Jama.