Traceability¶
Each requirement is verified by one or more tests. Granularity is
per-requirement: a single test need points at the real verifying test
node id(s) — the exact string pytest collects — rather than transcribing
every test function. If a req below had no incoming verifies link, the
req_without_test rule in conf.py would raise a warning and
sphinx-build -W would fail the build.
Verifying tests¶
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Test Case: Compose binds to loopback and the ingest token is bucket-scoped TEST_DEPLOY_LEAST_EXPOSURE
|
|
|
Requirement → test table¶
ID |
Title |
Verifies Back |
|---|---|---|
The API base comes from the login response |
||
The API base must be https |
||
The position cache is 0600 in a 0700 directory |
||
A fix re-sent under a new id is not cached twice |
||
The token file is 0600 and self-heals |
||
The dashboard is importable anywhere |
||
The compose stack exposes as little as possible |
||
Export writes atomically |
||
A multi-tracker export keeps trackers separate |
||
fix_at is normalised to epoch seconds |
||
GeoJSON is RFC 7946-valid |
||
A heading is estimated from cached positions, read-only |
||
The heading carries a confidence state with a configurable threshold |
||
The server command header is ignored |
||
InfluxDB credentials are never shown |
||
InfluxDB writes are bounded to one measurement and one target |
||
Positions are written to InfluxDB in natural units |
||
logout revokes server-side and reports honestly |
||
A malformed row is skipped and counted |
||
A tracker without a name never stalls the mirror |
||
Re-sending positions never creates duplicates |
||
The mirror never advances past an unacknowledged row |
||
No private data in the repository |
||
Redirects are never followed |
||
Committed deployment templates carry no deployment's specifics |
||
Purge deletes the cache even when corrupt |
||
A lock is never mistaken for corruption |
||
Read-only by construction |
||
Sync fails loudly on a stuck page |
||
The sync offset is exclusive |
||
Sync moves past malformed rows |
||
Sync is resumable |
||
The token is never logged or printed |
||
A stored token is always removable |
||
Package imports only the standard library |
A needflow (graphviz) diagram is intentionally omitted: it would add a
system dot dependency the build otherwise does not need, and the table above
already shows the requirement → test mapping the gate enforces.