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¶
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
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
goinPATHcan fail shell FI probe builds.Missing
go-fi.jsonlsource reduces traceability completeness; regenerate viamake fiwhen 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.shedge/ci/tests/gen_traceability_report.shedge/DEFINITION_OF_DONE.md/tmp/edge-fi-report-docs/traceability.mddocs/_generated/test-outputs/fi-traceability-output.txt