FI Traceability: Invariant → Test → Expected Output

What you’re proving

  • Invariant claims are linked to both Go FI and shell FI execution records.

  • Traceability output includes unified FI index and pass/fail summary.

  • Root-required FI is explicitly represented as not-run when skipped.

Prereqs

  • Repo root: <repo-root>

  • Existing generated capture file: docs/_generated/test-outputs/fi-traceability-output.txt

Steps

  1. Run shell FI and generate traceability report using existing scripts.

env GOCACHE=/tmp/go-build \
  bash edge/ci/tests/run_all.sh --report-dir /tmp/edge-fi-report-docs --no-root-tests
bash edge/ci/tests/gen_traceability_report.sh \
  --go-json /tmp/edge-fi-report/go-fi.jsonl \
  --shell-json /tmp/edge-fi-report-docs/results.jsonl \
  --shell-summary /tmp/edge-fi-report-docs/summary.txt \
  --out /tmp/edge-fi-report-docs/traceability.md
  1. Compare with captured output.

sed -n '1,220p' docs/_generated/test-outputs/fi-traceability-output.txt

Expected outputs (from real run)

=== Edge FI Test Summary ===
Pass:    2
Fail:    0
Not run: 1
...
# Edge FI Traceability Report
- Overall: **PASS**
...
- `FI-C4-01`: go=`pass` shell=`pass`

Verification

  • Shell FI summary indicates non-root suite pass with root-required test not run.

  • Traceability report includes invariants, go/shell test lists, and unified FI index.

Failure modes

  • Wrong go in PATH can fail shell FI probe builds.

  • Missing go-fi.jsonl source reduces traceability completeness; regenerate via make fi when environment supports it.

Non-goals

  • This tutorial does not claim root-required FI execution unless you run make fi-root.

  • This tutorial does not add or change invariants; it validates linkage and evidence.

Evidence

  • edge/ci/tests/run_all.sh

  • edge/ci/tests/gen_traceability_report.sh

  • edge/DEFINITION_OF_DONE.md

  • /tmp/edge-fi-report-docs/traceability.md

  • docs/_generated/test-outputs/fi-traceability-output.txt