For hardware test & systems teams

Requirements and test data, linked at agent speed.

Tensol ties each requirement to the test case, run, and channel that verifies it - and when anything changes, traces what it broke: stale evidence flagged, coverage recomputed, re-runs queued. No status fields. No spreadsheet before the review.

412 requirements fromPolarionDOORSJamaReqIF61 runs from.mf4.tdmsULogROSCAN.csv
53%verified against the bench217 verified31 below required level89 awaiting sign-off51 failed24 untested
SystemReqsVerified
Power delivery156
Precharge & contactor48
Supply rails62
Power sequencing46
Thermal management118
Comms & telemetry138
Precharge & contactorREQ-PWR-021Precharge shall complete within 250 ms of power-on
TC-PWR-021.1rig01_precharge_044.mf4precharge_complete_ms412 ms against ≤ 250 ms
computing coverage from 61 runs…31 pass only on rigs below the level they require — a unit-level pass is not evidence for a subsystem-level requirement

Every requirement in Project Kestrel, rolled up by the subsystem it constrains — computed from 61 runs across 4 benches, not from a field anyone maintains by hand.

Built by founders & operators from

  • Y Combinator logo
  • Virginia Tech logo
  • Rivian logo
  • Magna logo
  • Carnegie Mellon University logo
review

1 week

before every gate

The week before every design review: rebuilding the “which requirements did we actually verify” spreadsheet by hand.

debug

1 day

per failed run

A test fails Friday. Monday is spent digging through logs on three rig PCs to find when it started.

ingest

3 formats

before you can start

NI on one bench, UEI DAQ on another, .csv from a third — every debug starts with format archaeology.

Requirements in from your ALM. Traces in from your benches. Coverage out, by subsystem.

  1. 01

    Requirements, with their hierarchy intact

    Import from Polarion, DOORS, Jama, ReqIF, or CSV. The hierarchy comes with them, so a requirement still knows which subsystem it constrains and which parent it decomposes from.

  2. 02

    Tests and traces, from any bench

    Whatever your benches already write — .mf4, .tdms, ROS bags, .csv, ULog — or live CAN. Each run is matched to the test case it executed and the requirement that case verifies, down to the channel.

  3. 03

    Coverage by subsystem, kept current

    Every run re-checks the limits and the rollup moves with it — per requirement, per component, per program. A failure stands on its own; a pass queues for sign-off, and the approver's name travels with the evidence. Change a requirement and the affected sign-offs flag stale.

Follow one requirement all the way to the channel.

The chain at the foot of the board, expanded. Subsystem, requirement, the boundary it is tested within, test case, the run and the rig level it was entitled to use, channel, cause — every coverage figure on this site resolves to one of these, and nothing is asserted that you cannot open.

REQ-PWR-021Tensol
Precharge shall complete within 250 ms of power-onrev 4 · owner m.reyes · changed 2026-07-30
Power delivery › Precharge & contactor48 requirements · 56% verified
Parent — Power-up sequencingREQ-PWR-000 · 6 children
Verified by 1 test caseTC-PWR-021.1

Every change, traced to what it touches.

01requirement editedPolarion
REQ-PWR-021

Precharge shall complete within 250 ms → 200 ms of power-on.

rev 4rev 5

m.reyes · 2026-08-24 09:14

1 line changed · no other edits

Nobody filed a ticket. Nobody told the test team. The requirement simply says something different now.

Tensol saw the edit0.0 s

One line changes

A limit tightens by 50 ms in the requirements tool. On its own, that edit tells no one anything.

02tracing downstreamrev 4 → 5
polarion.get(REQ-PWR-021)
rev 5 · 6 children240 ms

The limit moved down. Every child that inherits it is unproven again, and any case asserting 250 is now asserting the wrong thing.

testrail.cases(asserts=250)
TC-PWR-021.1 · .290 ms
runs.rescore(limit=200)
47 / 61 runs
14 passing → 9 passing1.1 s
signoffs.check(against=rev 4)
7 on the old limit60 ms

Five of six children inherit the tightened limit. Two cases assert the old value and must be re-authored.

every step opens to the run behind it

The agent walks what it touches

Down the decomposition, across the test cases, back through every run already on disk, re-scored against the value that just changed.

03impactREQ-PWR-021 rev 5
5requirements no longer verified
7sign-offs now stale
2test cases to re-author

Sub-components affected

Precharge & contactor4 reqs
Supply rails2 reqs
Power sequencing1 req
Thermal · Comms · Vehicle controlsuntouched
recomputed in 1.2 s · nobody had to ask

The blast radius, itemised

What lost its evidence, which sign-offs went stale, which sub-components are in scope - and, just as usefully, which are not.

Walk into the review already knowing.