[AZ-961] accuracy_report: rename tlog_path -> ground_truth_path

ReportContext.tlog_path was widened in-place by AZ-959 to mean
"ground-truth source path" without renaming, leaving the rendered
report's "- Tlog: <csv_path>" line cosmetically wrong for CSV
runs. This rename + label fix completes the cleanup.

- helpers/accuracy_report.py: field rename + docstring update +
  rendered line now reads "- Ground truth: <path>" for both
  inputs.
- replay_api/app.py: kwarg updated, AZ-959 inline comment about
  the overload removed (field name now carries the intent).
- tests/unit/test_az699_report_writer.py: fixture updated, two
  new symmetric tests assert the canonical label for tlog AND
  csv inputs (AC-2).
- tests/e2e/replay/_e2e_orchestrator.py +
  test_derkachi_real_tlog.py: kwarg updated.

Tests: 62/62 green across test_az699_report_writer.py,
test_az700_render_map.py, test_az701_replay_api.py.

CSV-replay-input chain (AZ-959 + AZ-960 + AZ-961) is now coherent:
- API accepts (video, csv) with XOR validation
- /static/example-csv serves the AZ-896 reference doc
- Runner dispatches --imu vs --tlog argv
- Report renders with source-agnostic "Ground truth:" label
- Map renders from CSV truth via gps-denied-render-map dispatch

Bookkeeping: AZ-961 spec moved todo/ → done/, dep-table preamble
eighth bump documents the rename + summarises the cycle-4 CSV
chain, state.md records batch 7 complete.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Oleksandr Bezdieniezhnykh
2026-05-29 12:55:57 +03:00
parent 7f590582cc
commit a3dc8e2636
8 changed files with 41 additions and 13 deletions
+32 -1
View File
@@ -209,7 +209,7 @@ def _failing_distribution() -> HorizontalErrorDistribution:
def _context(method: str = "factory-sheet") -> ReportContext:
return ReportContext(
run_date_utc="2026-05-20",
tlog_path=Path("/tmp/derkachi.tlog"),
ground_truth_path=Path("/tmp/derkachi.tlog"),
video_path=Path("/tmp/flight_derkachi.mp4"),
calibration_acquisition_method=method,
clip_duration_s=180.0,
@@ -340,3 +340,34 @@ def test_render_report_marks_vertical_skipped_when_no_samples() -> None:
# Assert
assert "_No emissions carried a comparable altitude" in text
def test_render_report_labels_ground_truth_source_agnostic_for_csv_path() -> None:
# Arrange — AZ-961 AC-2: rendered label is "Ground truth: …" for
# both tlog AND csv inputs, never "Tlog: …".
csv_context = ReportContext(
run_date_utc="2026-05-29",
ground_truth_path=Path("/tmp/data_imu.csv"),
video_path=Path("/tmp/nadir.mp4"),
calibration_acquisition_method="factory-sheet",
clip_duration_s=180.0,
emissions_count=200,
)
# Act
text = render_report(_passing_distribution(), csv_context, passed=True)
# Assert
assert "- Ground truth: `/tmp/data_imu.csv`" in text
assert "- Tlog:" not in text
def test_render_report_labels_ground_truth_source_agnostic_for_tlog_path() -> None:
# Arrange — AZ-961 AC-2: the same canonical label applies to tlog runs
# Act
text = render_report(_passing_distribution(), _context(), passed=True)
# Assert
assert "- Ground truth: `/tmp/derkachi.tlog`" in text
assert "- Tlog:" not in text