Journal and SKIP: record, records, skip
Arbitrary data into the report; selecting your records; ending a non-applicable scenario.
Methods
API 3 changes (0.5.0)
Unchanged. Records reach disk with [results] capture = true; MMIO adds journal records.
Recommended
Record before check: keep raw samples, units, warmup and eligibility. In counter-cost GDB request time is separate from model ticks; a sample maximum is not WCET. external-capture checks READY/drain, completeness and clock anchors separately; analysis never rewrites the scenario outcome. rosbag-import checks the bag against its index and relates it to a GDB snapshot only through MCU counter anchors and a measured latency; otherwise UNKNOWN.
t.record("adc.sample", {"vdda_mv": t.read("board_adc_reading.vdda_mv")})
samples = [row["data"]["vdda_mv"] for row in t.records("adc.sample")]
t.check("enough samples", len(samples) >= 2, True)
if not t.profile.get("user.sample_step", True):
t.skip("sample_step disabled in api.toml")Avoid
print does not reach the report. Missing data is not zero; in-interval cost is not total perturbation. SKIP must not hide API errors; source exit 0 does not establish capture completeness.
print(t.read("board_adc_reading.vdda_mv")) # not in the report
try:
t.reach("board_adc_sample")
except Exception:
t.skip("no ADC") # SKIP hides an errorThe fragments show refused or discouraged patterns, not a working recipe.
Fragments for a scenario body; firmware symbols are illustrative.