SemanticCompute v1.16.0
SemanticCompute v1.16.0 — the tracking lane
A minor, by the rule: four additive families (catalogue 159 → 163) — the estimator consumer's full
outstanding request queue, built in one cycle with their own trap characterisations pinned as tests.
Added
Linear assignment (gated bipartite matching) — tracks↔detections, detections↔ground truth, cells
across frames; three consumers hand-roll this shape. The OBJECTIVE is the family: maximise feasible
pairs first, minimise cost second, with gating STRUCTURAL — a forbidden pair is an absent edge, never a
big finite cost, because big-M does not gate, it only makes bad assignments expensive. Ships its own
brute-force oracle whose lexicographic ordering forbids the zero-cost empty matching (the requesting
consumer's reference trap: theirs declared a correct solver broken on every input). A third trap
surfaced during this family's own construction and is preserved as a test fixture: row-by-row
shortest-path assignment steals contested columns under gating — max cardinality survives, min cost
does not — so the solver augments globally from every unmatched row, confirmed by a 60-trial
brute-force cross-check. Host-only by design: the solve is sequential, and the parallel work in an
assignment pipeline is the caller's cost matrix, which composes from families that already ship.
Spectral peak picking — floored local maxima with log-parabolic sub-bin refinement. The floor is
LOAD-BEARING, in the consumer's own words kept in the header: without it every query finds "a peak" in
noise, a tracker can never miss a detection, and a dead track gets dragged around by the noise floor
with its covariance shrinking while its information gets worse. The plateau test is asymmetric
(b > a && b ≥ g) so a flat top is one peak; an exact log-parabola's position is recovered to float
precision (test-pinned); edge bins are never peaks. Goertzel and BatchedDTFT evaluate where you point
them — this finds where to point.
Batched EKF predict (per-track transition) — the narrowed remainder after the consumer's own
correction (their glide model fits BatchedEKF exactly as shipped; recorded). Every convention mirrors
BatchedEKF verbatim — n ≤ 4, per-track Q, row-major packing — with F now a per-track buffer, so a
model moves between the families by changing one buffer's shape. Bit-exact agreement with BatchedEKF
under a replicated F is a test, not a hope.
Phase unwrap (predictive + sequential) — both forms, because they fail differently and a consumer
should choose knowingly: predictive (pred + princarg(meas − pred)) isolates a glitch to one sample;
sequential (the numpy.unwrap shape) is path-dependent by definition — one glitch shifts every later
output by 2π. Both behaviours pinned side by side as facts of the forms. princarg uses
round-half-to-even on both backends, the convention shared with the complex-onset family.
Verification surface: 1,190 tests in 257 suites; the kernel-compile sweep covers 365 programs across
224 lowerings, 0 failed. Four lowering targets, three executed in-core (Metal, portable C, WGSL) plus
the externally verified CUDA runner.