Source: tests/test_evidence_telemetry.py · Plain text

tests/test_evidence_telemetry.py

import json
from pathlib import Path

from mcss.config import load_config
from mcss.engine import Trainer
from mcss.evidence_telemetry import run_evidence_telemetry


def _write_dual_evidence_config(path: Path, output_dir: Path) -> None:
    path.write_text(
        f"""
seed: 17
device: cpu
dataset:
  name: synthetic
  root: null
  image_size: [8, 8]
  context_views: 2
  target_views: 1
  length: 1
model:
  mode: fixed
  state_architecture: dual_evidence
  voxel_resolution: 4
  image_feature_dim: 8
  state_feature_dim: 8
  refinement_blocks: 1
  evidence_temperature: 0.1
  surface_peak_temperature: 0.05
  observed_residual_floor: 0.1
  completion_residual_scale: 1.5
  n_samples: 4
  ray_chunk_size: 64
training:
  output_dir: {output_dir.as_posix()}
  batch_size: 1
  learning_rate: 0.001
  max_steps: 1
  num_workers: 0
  amp: false
  log_every: 1
  checkpoint_every: 1
  measurements: [rgb, depth, normal, point, visibility]
""".strip(),
        encoding="utf-8",
    )


def _write_transport_evidence_config(path: Path, output_dir: Path) -> None:
    path.write_text(
        f"""
seed: 17
device: cpu
dataset:
  name: synthetic
  root: null
  image_size: [8, 8]
  context_views: 3
  target_views: 1
  length: 1
model:
  mode: fixed
  state_architecture: dual_evidence_transport
  voxel_resolution: 4
  image_feature_dim: 8
  state_feature_dim: 8
  refinement_blocks: 1
  evidence_temperature: 0.1
  surface_peak_temperature: 0.05
  observed_residual_floor: 0.1
  completion_residual_scale: 1.5
  n_samples: 4
  ray_chunk_size: 64
training:
  output_dir: {output_dir.as_posix()}
  batch_size: 1
  learning_rate: 0.001
  max_steps: 1
  num_workers: 0
  amp: false
  log_every: 1
  checkpoint_every: 1
  measurements: [rgb, depth, normal, point, visibility]
""".strip(),
        encoding="utf-8",
    )


def test_evidence_telemetry_is_context_only_and_reconstructs_density(tmp_path: Path) -> None:
    config_path = tmp_path / "dual.yaml"
    training_dir = tmp_path / "training"
    report_dir = tmp_path / "telemetry"
    _write_dual_evidence_config(config_path, training_dir)
    trainer = Trainer(load_config(config_path))
    checkpoint = trainer.save_checkpoint()

    report = run_evidence_telemetry(config_path, checkpoint, report_dir)

    persisted = json.loads((report_dir / "evidence_telemetry.json").read_text(encoding="utf-8"))
    assert persisted == report
    assert report["schema_version"] == "mcss.v6_evidence_telemetry.v1"
    assert report["diagnostic_only"] is True
    assert report["target_labels_used"] is False
    assert report["target_camera_role"] == "query_only"
    assert report["candidate_profiles"]["profiles"]["total"] == 2 * 4**3
    assert "appearance_top_decile" in report["candidate_profiles"]["strata"]
    assert report["state"]["density_decomposition"]["reconstruction_max_abs_error"] < 1e-6
    assert report["state"]["surface_peakness_replay_max_abs_error"] < 1e-6


def test_transport_telemetry_replays_fixed_transport_fields(tmp_path: Path) -> None:
    config_path = tmp_path / "transport.yaml"
    training_dir = tmp_path / "training"
    report_dir = tmp_path / "telemetry"
    _write_transport_evidence_config(config_path, training_dir)
    trainer = Trainer(load_config(config_path))
    checkpoint = trainer.save_checkpoint()

    report = run_evidence_telemetry(config_path, checkpoint, report_dir)

    assert report["target_labels_used"] is False
    assert report["architecture"] == "dual_evidence_transport"
    assert report["candidate_profiles"]["profiles"]["total"] == 3 * 4**3
    assert report["state"]["transport_replay_max_abs_error"] < 1e-6
    assert report["state"]["density_decomposition"]["reconstruction_max_abs_error"] < 1e-6
    assert "transport_coverage" in report["state"]
    assert "transported_appearance_confidence" in report["state"]