from __future__ import annotations import numpy as np from k1link.compute.e39_perception_refinement import ( _feature_names, _fit_robust_scaler, _predict_presence, _project_dimensions, _transform, ) def test_e39_feature_contract_and_knn_are_deterministic() -> None: assert len(_feature_names()) == 262 matrix = np.asarray( [ [0.0, 1.0], [0.1, 1.1], [4.9, 5.0], [5.0, 5.1], ], dtype=np.float64, ) median, scale = _fit_robust_scaler(matrix) transformed = _transform(matrix, median=median, scale=scale, clip=20.0) first = _predict_presence( transformed[0], transformed[1:], ["background", "object", "object"], neighbors=3, ) second = _predict_presence( transformed[0], transformed[1:], ["background", "object", "object"], neighbors=3, ) assert first == second == ("object", 2 / 3) def test_e39_projects_presence_through_frozen_stratum_ontology() -> None: assert _project_dimensions("camera-only", "object-present") == { "presence": "object-present", "geometry_association": "insufficient-support", "freshness": "unavailable", } assert _project_dimensions("geometry-only", "occupied-environment") == { "presence": "occupied-environment", "geometry_association": "independent-occupied", "freshness": "current", } assert _project_dimensions("unknown", "background-or-noise") == { "presence": "background-or-noise", "geometry_association": "rejected-nonobject", "freshness": "current", }