The registry closed a track when the *tracker's* timestamp passed `track_extinction_sec`. But votes arrive from the matcher, which is a separate KPN node behind a channel, and much the slower of the pair. Backpressure — working exactly as AR-004 intends — turns that channel's depth into lag, so the tracker's clock can be far ahead of the last frame anybody has voted on. Tracks were therefore closed before their evidence arrived: the votes landed on ids that no longer existed, were counted as dropped, and the track was emitted unowned or not at all. The symptom is the part worth remembering: **a deeper channel produced fewer identifications, from identical input.** On the SuperHero fixture, 5 actors / 16 windows at depth 32 against 3 actors / 5 windows at depth 10322; through the replay harness, capacity 32 gave 5 actors and 10322 gave 0. A throughput knob was silently changing the answer, which makes every sweep tuned against it suspect. The fix is not to bound the channel against `track_extinction_sec` — that makes an algorithm constant police a throughput knob and leaves the result a function of scheduling. It is to reap on an evidence watermark: the matcher advances it as it folds each frame in, and a track is only finished once everything up to its extinction point has actually been voted on. Same device `SceneBoundaries::scored_through()` uses for the AR-010 join — a consumer past that point is asking about frames nobody has looked at yet, and the honest answer is to wait rather than guess. Association keeps the tracker's clock, and separating the two is the other half. They answer different questions: "may this detection link to that track?" is asked now, about a box seen `track_extinction_sec` ago; "is that track finished?" cannot be answered until every vote is in. Deferring association to the evidence clock — which deferring the erase alone did — left retired tracks associable for as long as the matcher lagged, so a new face re-associated onto a long-dead track and two people merged into one window. The watermark is monotonic and only ever *delays* a reap, so no window is extended by it: AR-013's "a window ends at the last sighting, never after" is a property of `emit_locked`, which takes `last_seen` and never `now`. `dropped_votes` is exposed and reported — by main at shutdown and through the replay bindings — because this failed silently for as long as it did precisely because nothing counted it. It warns rather than aborts: a dropped frame means the output describes footage nobody analysed and is always wrong, while a dropped vote degrades a claim without falsifying it, and there is no measurement yet of how often it happens on real content. replay.py's channel capacity stops being the whole film. It was sized that way to dodge a PyNode overflow drop that AR-004 has since replaced with parking, and removing backpressure that way is what made the defect above so extreme. Tag separators in kpn_bindings.cpp corrected to pipes between requirement types, which the traceability gate was reporting as diagnostics; the matrix is regenerated and reports 0 orphan tags. 149/149. TRACES: AR-004, AR-012, AR-013, AR-025 | VR-011 | SR-002 | PR-002
1231 lines
84 KiB
Markdown
1231 lines
84 KiB
Markdown
# Requirements traceability matrix
|
||
|
||
<!-- GENERATED FILE - do not edit by hand. -->
|
||
<!-- Regenerate: scripts/traceability/traceability-gate.sh -->
|
||
|
||
**Generated:** 2026-08-08T10:06:24+00:00
|
||
|
||
Denominators are read from [`requirements.md`](requirements.md) at run time, never hardcoded. Coverage counts a requirement only when it is tagged in source **and** has a verification tier this repo's CI host can execute (`T1, T2, T3, static`).
|
||
|
||
## Summary
|
||
|
||
| Metric | Value |
|
||
|---|---|
|
||
| Source files scanned | 119 |
|
||
| TRACES tags found | 239 |
|
||
| EXCEPTION tags found | 1 |
|
||
| Requirements defined | 72 |
|
||
| Requirements covered | 42 |
|
||
| **Coverage** | **58.3%** (42/72) |
|
||
| Coverage of CI-executable scope | 73.7% (42/57) |
|
||
| Tagged but unexecuted in CI | 10 |
|
||
| Orphan tags | 0 |
|
||
|
||
### By type
|
||
|
||
| Type | Covered | Tagged but unexecuted | Defined |
|
||
|---|---|---|---|
|
||
| AR | 26 | 1 | 30 |
|
||
| DP | 2 | 0 | 8 |
|
||
| IR | 8 | 0 | 8 |
|
||
| GR | 5 | 0 | 9 |
|
||
| VR | 1 | 9 | 17 |
|
||
|
||
- **UT** tags present (separate taxonomy, not counted in coverage): UT-001, UT-002, UT-003, UT-004, UT-005, UT-101, UT-102, UT-103, UT-104, UT-105, UT-106, UT-107, UT-108, UT-120, UT-121, UT-122, UT-123, UT-124, UT-130, UT-131, UT-132, UT-133, UT-134, UT-135, UT-136, UT-137, UT-138, UT-139, UT-140, UT-141
|
||
- **IT** tags present (separate taxonomy, not counted in coverage): IT-001
|
||
- **PR** tags present (separate taxonomy, not counted in coverage): PR-002, PR-004
|
||
- **SR** tags present (separate taxonomy, not counted in coverage): SR-001, SR-002, SR-003, SR-005
|
||
|
||
## Not executable in CI
|
||
|
||
These requirements have no verification tier this repo's CI host can run, so a tag on them is evidence of *intent*, not of verification. They are never counted as covered.
|
||
|
||
| ID | Tiers | Tagged in source | Requirement |
|
||
|---|---|---|---|
|
||
| AR-027 | T4 | yes | Throughput acceptable for **arbitrary** gallery size |
|
||
| VR-001 | out-of-ci | yes | HDF5 post-inference dump at the embedded-frame boundary |
|
||
| VR-002 | out-of-ci | yes | Replay drives the **real** KPN nodes, not a reimplementation |
|
||
| VR-003 | out-of-ci | yes | Scoring: micro-F1 against X-Ray, precision/recall logged at every eva… |
|
||
| VR-004 | out-of-ci | yes | Reproducible validation corpus with ground truth |
|
||
| VR-005 | out-of-ci | yes | Minimum face size study — TPI/FPI vs probe size, gallery held at nati… |
|
||
| VR-006 | out-of-ci | no | Re-tune `scene_threshold` once native-rate decode lands |
|
||
| VR-007 | out-of-ci | no | Expansion band, clustering threshold, deferred-pass ablation, **and t… |
|
||
| VR-008 | out-of-ci | no | Gallery scaling benchmark — throughput vs gallery size |
|
||
| VR-010 | out-of-ci | yes | Dump provenance attributes — embedder model, detector settings, `dens… |
|
||
| VR-011 | out-of-ci | yes | Rewrite the replay harness for the post-AR-012 output contract |
|
||
| VR-012 | T4, out-of-ci | no | Quality-knee study — TPI/FPI vs sharpness and vs pose, as VR-005 did … |
|
||
| VR-013 | T4, out-of-ci | yes | Cross-source identification probe — gallery from one recording, probe… |
|
||
| VR-015 | out-of-ci | yes | Per-node cost and bottleneck attribution for a run — where the time a… |
|
||
| VR-017 | out-of-ci | no | **Vote-lag study** — how often does the matcher fall more than `track… |
|
||
|
||
**Tagged but unexecuted:** AR-027, VR-001, VR-002, VR-003, VR-004, VR-005, VR-010, VR-011, VR-013, VR-015 — a test exists and is tagged, but this CI host cannot run it. Report those runs separately.
|
||
|
||
## Orphan tags
|
||
|
||
A tag naming an ID `requirements.md` does not define. This is what renumbering produces, and what a typo produces.
|
||
|
||
_None._
|
||
|
||
## Requirements tracing up to nothing
|
||
|
||
A register row whose `Traces to` cell names no parent. Work serving no stated goal is how scope creeps in, and it is invisible unless something looks.
|
||
|
||
_None._
|
||
|
||
## Recorded exceptions
|
||
|
||
Deliberate, documented departures from an invariant (`EXCEPTION: XX-nnn <reason>`). Reported separately and never counted as coverage — an exception is a decision to be reviewed, not evidence a requirement is met.
|
||
|
||
| Requirement | Location | Reason |
|
||
|---|---|---|
|
||
| AR-024 | [`src/gallery/gallery_calibration.hpp:165`](../src/gallery/gallery_calibration.hpp#L165) | this asks whether two vectors are THE SAME |
|
||
|
||
## Register
|
||
|
||
| ID | Status | Tier | Traces to | Trace state | Tagged in | Requirement |
|
||
|---|---|---|---|---|---|---|
|
||
| AR-001 | Done | T3 | SR-002 | covered | `src/nodes/face_detector_node.hpp` | Detect faces in sampled frames; emit bbox, confidence, 5-point landma… |
|
||
| AR-002 | **Done** — `FaceDet… | T2 | SR-002 | covered | `src/nodes/face_detector_node.hpp`, `tests/test_face_detector_node.cpp`, `tests/test_replay_fixtures.cpp` | Minimum face size **40×40 px** (VR-013 measured end to end; VR-005's … |
|
||
| AR-003 | **Done** — `max_fac… | T1, T2, T4 | SR-002 | covered | `src/config.hpp`, `src/nodes/face_detector_node.hpp`, `src/nodes/identity_matcher_node.hpp` | No fixed per-frame face cap — crowd scenes must not lose background c… |
|
||
| AR-004 | **Mostly** — node o… | T1, T4 | SR-002 | covered | `scripts/optimizer/replay.py`, `src/benchmark.hpp`, `src/main.cpp`, `src/nodes/identity_matcher_node.hpp`, `src/nodes/scene_detector_node.hpp`, `src/types.hpp`, `tests/test_channel_bytes.cpp`, `tests/test_replay_fixtures.cpp`, `tests/test_scene_detector_node.cpp` | Backpressure: unbounded faces/frame absorbed by slowing, never by dro… |
|
||
| AR-005 | **Done** — `umeyama… | T1, T3 | SR-002 | covered | `src/face_utils.hpp`, `src/nodes/face_aligner_node.hpp`, `tests/test_face_utils.cpp` | Align to 112×112 via ArcFace 5-point similarity transform, fitted by … |
|
||
| AR-006 | Done | T3 | SR-002 | covered | `src/nodes/embedder_node.hpp` | 512-d L2-normalised embeddings, batched |
|
||
| AR-007 | **Done** — `track_a… | T2 | SR-002 | covered | `src/config.hpp`, `src/main.cpp`, `src/nodes/face_tracker_node.hpp`, `src/scene_preview.cpp`, `tests/test_face_tracker.cpp` | Associate detections by IoU + embedding, with **frame-dependent** wei… |
|
||
| AR-008 | **Done** — one pool… | T2 | SR-002 | covered | `src/config.hpp`, `src/main.cpp`, `src/nodes/face_tracker_node.hpp`, `src/track_registry.hpp`, `tests/test_face_tracker.cpp`, `tests/test_track_registry.cpp` | One track pool keyed on `last_seen`; no separate revival path |
|
||
| AR-009 | Done | T2 | SR-002 | covered | `src/nodes/camera_position_change_detector_node.hpp` | Camera-cut detection (histogram) as an association hint |
|
||
| AR-010 | **Done** — decode b… | T2 | SR-002 | covered | `src/main.cpp`, `src/nodes/scene_boundary_annotator_node.hpp`, `src/nodes/scene_detector_node.hpp`, `src/scene_boundaries.hpp`, `tests/test_scene_detector_node.cpp` | Scene-boundary detection (TransNetV2) as an association hint |
|
||
| AR-011 | **Done** — both vio… | T1, T2 | SR-002 | covered | `src/config.hpp`, `src/nodes/scene_detector_node.hpp`, `src/scene_boundaries.hpp`, `tests/test_scene_detector_node.cpp` | **Every model is fed the input it was trained for** — cost reduced by… |
|
||
| AR-012 | **Done** — `src/tra… | T2 | **SR-002** | covered | `src/config.hpp`, `src/kpn_bindings.cpp`, `src/main.cpp`, `src/nodes/frame_annotation_node.hpp`, `src/nodes/identity_matcher_node.hpp`, `src/nodes/result_sink_node.hpp`, `src/scene_preview.cpp`, `src/track_registry.hpp`, `tests/test_replay_fixtures.cpp`, `tests/test_track_registry.cpp` | Presence follows **track extent**, not per-frame recognition |
|
||
| AR-013 | **Done** — `last_se… | T2 | SR-002 | covered | `src/config.hpp`, `src/nodes/frame_annotation_node.hpp`, `src/nodes/identity_matcher_node.hpp`, `src/track_registry.hpp`, `tests/test_replay_fixtures.cpp`, `tests/test_track_registry.cpp` | `last_seen` optional state machine; window ends at last sighting, nev… |
|
||
| AR-014 | **Done** — swap clo… | T2 | SR-002 | covered | `src/track_registry.hpp`, `tests/test_track_registry.cpp` | Belief swap A→B terminates the track and starts a new one |
|
||
| AR-015 | **Done** — reverse … | T2 | SR-002 | covered | `src/track_registry.hpp`, `tests/test_track_registry.cpp` | Two live tracks owned by one actor ⇒ treat as a detected cut, re-asso… |
|
||
| AR-016 | **Done** — `flush()… | T2 | SR-002 | covered | `src/kpn_bindings.cpp`, `src/main.cpp`, `src/nodes/result_sink_node.hpp`, `src/track_registry.hpp`, `tests/test_track_registry.cpp` | All tracks closed at EOF — a film ends with faces on screen |
|
||
| AR-017 | **Done** — `DeadTra… | T1, T2 | SR-002 | covered | `src/config.hpp`, `src/nodes/result_sink_node.hpp`, `src/track_registry.hpp`, `tests/test_track_registry.cpp` | Every presence claim carries its belief and identification route |
|
||
| AR-018 | **Done** — banded a… | T1, T2 | SR-005 | covered | `src/config.hpp`, `src/gallery/track_gallery.hpp`, `src/nodes/identity_matcher_node.hpp`, `tests/test_track_gallery.cpp` | Per-subject embedding store with banded admission (novel enough, safe… |
|
||
| AR-019 | **Done** — all thre… | T2 | SR-005 | covered | `src/gallery/track_gallery.hpp`, `src/nodes/identity_matcher_node.hpp`, `tests/test_track_gallery.cpp` | Per-film gallery annex from owned tracks; acquires the non-frontal vi… |
|
||
| AR-020 | Planned | T2 | SR-005 | untagged | - | Deferred re-identification of unknown tracks against the final expand… |
|
||
| AR-021 | Planned | T2 | SR-005 | untagged | - | Cluster unknown tracks into one entity per person, under temporal can… |
|
||
| AR-022 | Planned | T1, T2 | §4 | untagged | - | Capture still-unidentified tracks: embeddings, metadata, **context cr… |
|
||
| AR-023 | **Done** — and the … | T1 | SR-002 | covered | `src/gallery/gallery_calibration.hpp`, `src/nodes/identity_matcher_node.hpp`, `tests/test_calibration.cpp` | Fit sigmoid calibration from intra/inter similarity distributions |
|
||
| AR-024 | **Done** — associat… | T1, static | SR-002 | covered | `scripts/ci/check_raw_cosine.py`, `src/config.hpp`, `src/evidence_discount.hpp`, `src/gallery/gallery_calibration.hpp`, `src/gallery/track_gallery.hpp`, `src/main.cpp`, `src/nodes/face_tracker_node.hpp`, `src/nodes/identity_matcher_node.hpp`, `src/scene_preview.cpp`, `tests/test_track_gallery.cpp` | **Always the calibrated probability, never a raw cosine** — exception… |
|
||
| AR-025 | **Done** — log-odds… | T1 | SR-002 | covered | `src/config.hpp`, `src/evidence_discount.hpp`, `src/kpn_bindings.cpp`, `src/main.cpp`, `src/nodes/identity_matcher_node.hpp`, `src/track_registry.hpp`, `tests/test_track_registry.cpp` | Per-track Bayesian accumulation in log-odds, with correlated-observat… |
|
||
| AR-026 | **In Progress** — t… | T1, T4 | SR-001 | covered | `src/backends/gemm_backend.cpp`, `src/gallery/track_gallery.hpp`, `src/inference/similarity.hpp`, `src/nodes/identity_matcher_node.hpp`, `tests/test_similarity.cpp`, `tests/test_track_gallery.cpp` | All similarity computed as GEMM, including annex and deferred pass |
|
||
| AR-027 | Planned | T4 | SR-001 | tagged, unexecuted | `src/backends/gemm_backend.cpp` | Throughput acceptable for **arbitrary** gallery size |
|
||
| AR-028 | **Done** — filled i… | T2 | SR-002 | covered | `scripts/optimizer/replay.py`, `src/nodes/embedding_dump_node.hpp`, `src/nodes/face_aligner_node.hpp`, `src/types.hpp`, `tests/test_embedding_dump.cpp`, `tests/test_face_utils.cpp` | **Embedding input quality assessed and carried** — every face scored … |
|
||
| AR-029 | **Done** — `crop_sh… | T1 | SR-002 | covered | `src/face_utils.hpp`, `src/nodes/face_aligner_node.hpp`, `tests/test_face_utils.cpp` | Sharpness measure on the **aligned crop** (scale-normalised, so it ca… |
|
||
| AR-030 | **In Progress** — m… | T1 | SR-002 | covered | `src/face_utils.hpp`, `src/nodes/face_aligner_node.hpp`, `tests/test_face_utils.cpp` | Visibility measure from the AR-001 5-point landmarks — extreme pose o… |
|
||
| DP-001 | **Done, after a rep… | T1, manual | PR-004 | covered | `scripts/optimizer/replay.py`, `src/kpn_bindings.cpp`, `src/main.cpp`, `src/scene_preview.cpp` | One analysis core; modes are front-ends and must not fork pipeline lo… |
|
||
| DP-002 | Done | T1, manual | PR-004 | covered | `src/main.cpp` | Batch CLI over one title |
|
||
| DP-003 | Planned | T1, manual | PR-004 | untagged | - | On-demand resident service with bounded, observable queue |
|
||
| DP-004 | Planned | T1, manual | PR-004 | untagged | - | Opportunistic/idle mode: external trigger, hard stop, implicit re-que… |
|
||
| DP-005 | Planned | T1, manual | PR-004 | untagged | - | Native installer, no Docker; Fedora + Arch |
|
||
| DP-006 | Planned | T1, manual | PR-003 | untagged | - | Background incremental gallery refresh on a timer |
|
||
| DP-007 | **Mostly** — image … | T1, manual | PR-004 | untagged | - | CI builder image, CPU-only, pinned by tag in the Gitea container regi… |
|
||
| DP-008 | Planned | T1, manual | PR-004 | untagged | - | Builder images + release jobs per backend (cpu / cuda / rocm); ship b… |
|
||
| IR-001 | Done | T1 | SR-003 | covered | `src/kpn_bindings.cpp`, `src/nodes/result_sink_node.hpp` | Emit the JRay truth format as sibling `.jray.json` |
|
||
| IR-002 | **Done** — `schema_… | T1 | SR-003 | covered | `src/config.hpp`, `src/main.cpp`, `src/nodes/result_sink_node.hpp`, `src/track_registry.hpp` | Windows carry belief + route; `extraction.*` carries `extinction_sec`… |
|
||
| IR-003 | **In Progress** — s… | T1 | SR-003 | covered | `src/kpn_bindings.cpp`, `src/main.cpp` | Output written **after** the deferred pass, not at EOF |
|
||
| IR-004 | **Done** — `src/aud… | T1 | SR-003 | covered | `scripts/validation/test_audio_offset.py`, `src/audio_bindings.cpp`, `src/audio_signature.cpp`, `src/audio_signature.hpp`, `tests/test_audio_signature.cpp` | Compute the audio signature exactly per server spec §3 |
|
||
| IR-005 | **Done** — `tests/f… | T1 | SR-003 | covered | `src/audio_bindings.cpp`, `src/audio_signature.cpp`, `src/audio_signature.hpp`, `tests/test_audio_signature.cpp` | Golden-vector fixture shared with the plugin repo to prove bit-exactn… |
|
||
| IR-006 | Done | T1, manual | SR-001 | covered | `scripts/run_from_jellyfin.py` | Jellyfin round-trip: pull pending queue, push complete results only |
|
||
| IR-007 | **Done** | T1 | SR-003 | covered | `src/audio_signature.cpp`, `src/audio_signature.hpp`, `tests/test_audio_signature.cpp` | Media < 120 s: emit no signature, apply no sync offset — identical ru… |
|
||
| IR-008 | **Done** | T1 | SR-003 | covered | `src/audio_signature.cpp`, `src/audio_signature.hpp`, `tests/test_audio_signature.cpp` | Emit and honour the signature's own `v1:` version prefix |
|
||
| GR-001 | Done | T1, T3 | SR-001, SR-005 | covered | `scripts/make_jellyfin_gallery.py` | Build gallery from Jellyfin library cast, TMDB profile fallback |
|
||
| GR-002 | Done | T1, T3 | PR-003 | covered | `scripts/make_jellyfin_gallery.py` | Incremental `--merge` refresh without re-embedding known actors |
|
||
| GR-003 | **Done** — `gallery… | T1, T3 | SR-001 | covered | `src/build_gallery.cpp`, `src/gallery/gallery_calibration.hpp`, `src/gallery/gallery_report.hpp`, `tests/test_calibration.cpp` | Report coverage: zero-image actors, under-referenced actors, dedup, c… |
|
||
| GR-004 | **Done** — basename… | T1, T3 | SR-001 | covered | `scripts/filter_gallery.py`, `scripts/make_gallery.py`, `scripts/make_jellyfin_gallery.py`, `scripts/movienet_eval.py`, `scripts/optimizer/fetch_missing_actors.py`, `scripts/optimizer/optimize.py`, `scripts/optimizer/reembed_gallery.py`, `scripts/optimizer/replay.py`, `scripts/sae_embed_loader.py`, `scripts/sae_gallery.py`, `scripts/sae_stamp.py`, `scripts/stamp_gallery.py`, `src/config.hpp`, `src/gallery/embedder_stamp.cpp`, `src/gallery/embedder_stamp.hpp`, `src/gallery/gallery_builder.cpp`, `src/gallery/gallery_store.cpp`, `src/kpn_bindings.cpp`, `src/main.cpp`, `src/nodes/embedding_dump_node.hpp`, `src/scene_preview.cpp`, `src/types.hpp`, `tests/test_gallery_store.cpp` | Stamp embedder identity into the gallery; **hard startup error** on m… |
|
||
| GR-005 | Done | T1, T3 | **SR-005** | covered | `src/gallery/gallery_store.hpp` | Gallery data never leaves the instance |
|
||
| GR-006 | Planned | T1 | SR-005 | untagged | - | Provenance tiers: baked / harvested / confirmed, distinguishable per … |
|
||
| GR-007 | Planned | T1 | SR-005 | untagged | - | Persist harvested embeddings **flagged and reviewable**, never silent… |
|
||
| GR-008 | Planned | T1 | SR-005 | untagged | - | Flag distributional outliers among an actor's references (poisoning g… |
|
||
| GR-009 | TBD | T1 | §4 | untagged | - | Human-confirmed associations persist and improve future extractions |
|
||
| VR-001 | Done | out-of-ci | PR-002 | tagged, unexecuted | `src/nodes/embedding_dump_node.hpp`, `tests/test_embedding_dump.cpp`, `tests/test_replay_fixtures.cpp` | HDF5 post-inference dump at the embedded-frame boundary |
|
||
| VR-002 | **Done** — includin… | out-of-ci | PR-002 | tagged, unexecuted | `scripts/optimizer/replay.py`, `src/kpn_bindings.cpp`, `tests/test_replay_fixtures.cpp` | Replay drives the **real** KPN nodes, not a reimplementation |
|
||
| VR-003 | Done | out-of-ci | PR-002 | tagged, unexecuted | `scripts/optimizer/second_score.py` | Scoring: micro-F1 against X-Ray, precision/recall logged at every eva… |
|
||
| VR-004 | Done | out-of-ci | PR-002 | tagged, unexecuted | `scripts/validation/ground_truth.py` | Reproducible validation corpus with ground truth |
|
||
| VR-005 | **Done** — knee at … | out-of-ci | PR-002 | tagged, unexecuted | `scripts/validation/min_face_size.py` | Minimum face size study — TPI/FPI vs probe size, gallery held at nati… |
|
||
| VR-006 | **Planned, now unbl… | out-of-ci | PR-002 | untagged | - | Re-tune `scene_threshold` once native-rate decode lands |
|
||
| VR-007 | **Planned — scope c… | out-of-ci | PR-002 | untagged | - | Expansion band, clustering threshold, deferred-pass ablation, **and t… |
|
||
| VR-008 | Planned | out-of-ci | PR-002 | untagged | - | Gallery scaling benchmark — throughput vs gallery size |
|
||
| VR-009 | Planned | T1, out-of-ci | PR-002 | untagged | - | Verify accumulated posteriors are calibrated against held-out tracks |
|
||
| VR-010 | **Done** — `DumpPro… | out-of-ci | PR-002 | tagged, unexecuted | `src/nodes/embedding_dump_node.hpp` | Dump provenance attributes — embedder model, detector settings, `dens… |
|
||
| VR-011 | **Done** — `sae_kpn… | out-of-ci | PR-002 | tagged, unexecuted | `scripts/optimizer/replay.py`, `scripts/optimizer/test_sae_kpn.py`, `src/kpn_bindings.cpp` | Rewrite the replay harness for the post-AR-012 output contract |
|
||
| VR-012 | Planned | T4, out-of-ci | PR-002 | untagged | - | Quality-knee study — TPI/FPI vs sharpness and vs pose, as VR-005 did … |
|
||
| VR-013 | **In Progress** — h… | T4, out-of-ci | PR-002 | tagged, unexecuted | `experiments/xsource/resolution_sweep.py`, `experiments/xsource/verify_labels.py` | Cross-source identification probe — gallery from one recording, probe… |
|
||
| VR-014 | **Done** — 40 rando… | T2, out-of-ci | PR-002 | covered | `scripts/validation/test_audio_offset.py` | Audio-signature **offset recovery on real content** — a known trim re… |
|
||
| VR-015 | **Done** — `--bench… | out-of-ci | PR-004 | tagged, unexecuted | `src/backends/trt_backend.cpp`, `src/benchmark.hpp`, `src/config.hpp`, `src/main.cpp`, `tests/test_benchmark.cpp` | Per-node cost and bottleneck attribution for a run — where the time a… |
|
||
| VR-016 | **Planned.** The hi… | T2, out-of-ci | PR-002 | untagged | - | **Cut-detection cadence study** — is `cut_threshold` 0.70 meaningful … |
|
||
| VR-017 | **Planned.** Channe… | out-of-ci | PR-002 | untagged | - | **Vote-lag study** — how often does the matcher fall more than `track… |
|
||
|
||
## Detailed mapping
|
||
|
||
### AR-001
|
||
|
||
**Locations:** 1
|
||
|
||
- [`src/nodes/face_detector_node.hpp:2`](../src/nodes/face_detector_node.hpp#L2) — `Unknown`
|
||
|
||
### AR-002
|
||
|
||
**Locations:** 3
|
||
|
||
- [`src/nodes/face_detector_node.hpp:26`](../src/nodes/face_detector_node.hpp#L26) — `explicit FaceDetectorFunc(const Config& cfg)`
|
||
- [`tests/test_face_detector_node.cpp:3`](../tests/test_face_detector_node.cpp#L3) — `Unknown`
|
||
- [`tests/test_replay_fixtures.cpp:3`](../tests/test_replay_fixtures.cpp#L3) — `Unknown`
|
||
|
||
### AR-003
|
||
|
||
**Locations:** 3
|
||
|
||
- [`src/config.hpp:52`](../src/config.hpp#L52) — `Unknown`
|
||
- [`src/nodes/face_detector_node.hpp:64`](../src/nodes/face_detector_node.hpp#L64) — `private:`
|
||
- [`src/nodes/identity_matcher_node.hpp:213`](../src/nodes/identity_matcher_node.hpp#L213) — `std::vector<float> host_query(static_cast<size_t>(kMaxFaces) * 512);`
|
||
|
||
### AR-004
|
||
|
||
**Locations:** 17
|
||
|
||
- [`src/benchmark.hpp:176`](../src/benchmark.hpp#L176) — `Unknown`
|
||
- [`src/benchmark.hpp:472`](../src/benchmark.hpp#L472) — `void print(std::ostream& os, double film_sec) const`
|
||
- [`src/benchmark.hpp:522`](../src/benchmark.hpp#L522) — `else if (c.in_fill_pct > 50.0)`
|
||
- [`src/main.cpp:106`](../src/main.cpp#L106) — `static constexpr std::size_t kSceneInputDepth = 128;`
|
||
- [`src/main.cpp:111`](../src/main.cpp#L111) — `static constexpr std::size_t kSceneInputDepth = 128;`
|
||
- [`src/main.cpp:132`](../src/main.cpp#L132) — `static constexpr double kSceneJoinSafety = 2.0;`
|
||
- [`src/main.cpp:154`](../src/main.cpp#L154) — `static std::size_t scene_join_depth(float sample_fps)`
|
||
- [`src/main.cpp:172`](../src/main.cpp#L172) — `static std::shared_ptr<SceneBoundaries> scene_stats;`
|
||
- [`src/main.cpp:451`](../src/main.cpp#L451) — `Unknown`
|
||
- [`src/main.cpp:494`](../src/main.cpp#L494) — `std::ofstream bf(cfg.benchmark_path);`
|
||
- [`src/nodes/identity_matcher_node.hpp:213`](../src/nodes/identity_matcher_node.hpp#L213) — `std::vector<float> host_query(static_cast<size_t>(kMaxFaces) * 512);`
|
||
- [`src/nodes/scene_detector_node.hpp:95`](../src/nodes/scene_detector_node.hpp#L95) — `Unknown`
|
||
- [`src/types.hpp:189`](../src/types.hpp#L189) — `Unknown`
|
||
- [`tests/test_channel_bytes.cpp:3`](../tests/test_channel_bytes.cpp#L3) — `Unknown`
|
||
- [`tests/test_replay_fixtures.cpp:3`](../tests/test_replay_fixtures.cpp#L3) — `Unknown`
|
||
- [`tests/test_scene_detector_node.cpp:93`](../tests/test_scene_detector_node.cpp#L93) — `Unknown`
|
||
- [`scripts/optimizer/replay.py:174`](../scripts/optimizer/replay.py#L174) — `if i < len(frames):`
|
||
|
||
### AR-005
|
||
|
||
**Locations:** 3
|
||
|
||
- [`src/face_utils.hpp:2`](../src/face_utils.hpp#L2) — `Unknown`
|
||
- [`src/nodes/face_aligner_node.hpp:8`](../src/nodes/face_aligner_node.hpp#L8) — `Unknown`
|
||
- [`tests/test_face_utils.cpp:1`](../tests/test_face_utils.cpp#L1) — `Unknown`
|
||
|
||
### AR-006
|
||
|
||
**Locations:** 1
|
||
|
||
- [`src/nodes/embedder_node.hpp:21`](../src/nodes/embedder_node.hpp#L21) — `struct EmbedderFunc`
|
||
|
||
### AR-007
|
||
|
||
**Locations:** 5
|
||
|
||
- [`src/config.hpp:160`](../src/config.hpp#L160) — `Unknown`
|
||
- [`src/main.cpp:317`](../src/main.cpp#L317) — `Unknown`
|
||
- [`src/nodes/face_tracker_node.hpp:2`](../src/nodes/face_tracker_node.hpp#L2) — `Unknown`
|
||
- [`src/scene_preview.cpp:147`](../src/scene_preview.cpp#L147) — `Unknown`
|
||
- [`tests/test_face_tracker.cpp:1`](../tests/test_face_tracker.cpp#L1) — `Unknown`
|
||
|
||
### AR-008
|
||
|
||
**Locations:** 6
|
||
|
||
- [`src/config.hpp:160`](../src/config.hpp#L160) — `Unknown`
|
||
- [`src/main.cpp:317`](../src/main.cpp#L317) — `Unknown`
|
||
- [`src/nodes/face_tracker_node.hpp:2`](../src/nodes/face_tracker_node.hpp#L2) — `Unknown`
|
||
- [`src/track_registry.hpp:145`](../src/track_registry.hpp#L145) — `public:`
|
||
- [`tests/test_face_tracker.cpp:1`](../tests/test_face_tracker.cpp#L1) — `Unknown`
|
||
- [`tests/test_track_registry.cpp:417`](../tests/test_track_registry.cpp#L417) — `TrackRegistry reg(cfg(/*extinction=*/5.0), disc());`
|
||
|
||
### AR-009
|
||
|
||
**Locations:** 1
|
||
|
||
- [`src/nodes/camera_position_change_detector_node.hpp:30`](../src/nodes/camera_position_change_detector_node.hpp#L30) — `struct CameraPositionChangeDetectorFunc`
|
||
|
||
### AR-010
|
||
|
||
**Locations:** 12
|
||
|
||
- [`src/main.cpp:106`](../src/main.cpp#L106) — `static constexpr std::size_t kSceneInputDepth = 128;`
|
||
- [`src/main.cpp:111`](../src/main.cpp#L111) — `static constexpr std::size_t kSceneInputDepth = 128;`
|
||
- [`src/main.cpp:504`](../src/main.cpp#L504) — `Unknown`
|
||
- [`src/main.cpp:613`](../src/main.cpp#L613) — `return run_net(std::move(net));`
|
||
- [`src/main.cpp:645`](../src/main.cpp#L645) — `Unknown`
|
||
- [`src/nodes/scene_boundary_annotator_node.hpp:2`](../src/nodes/scene_boundary_annotator_node.hpp#L2) — `Unknown`
|
||
- [`src/nodes/scene_detector_node.hpp:38`](../src/nodes/scene_detector_node.hpp#L38) — `static constexpr std::string_view label() { return "scene_detector"; }`
|
||
- [`src/nodes/scene_detector_node.hpp:95`](../src/nodes/scene_detector_node.hpp#L95) — `Unknown`
|
||
- [`src/nodes/scene_detector_node.hpp:191`](../src/nodes/scene_detector_node.hpp#L191) — `Unknown`
|
||
- [`src/nodes/scene_detector_node.hpp:232`](../src/nodes/scene_detector_node.hpp#L232) — `void write_output()`
|
||
- [`src/scene_boundaries.hpp:2`](../src/scene_boundaries.hpp#L2) — `Unknown`
|
||
- [`tests/test_scene_detector_node.cpp:93`](../tests/test_scene_detector_node.cpp#L93) — `Unknown`
|
||
|
||
### AR-011
|
||
|
||
**Locations:** 6
|
||
|
||
- [`src/config.hpp:138`](../src/config.hpp#L138) — `Unknown`
|
||
- [`src/nodes/scene_detector_node.hpp:72`](../src/nodes/scene_detector_node.hpp#L72) — `void operator()(Frame f)`
|
||
- [`src/nodes/scene_detector_node.hpp:137`](../src/nodes/scene_detector_node.hpp#L137) — `Unknown`
|
||
- [`src/nodes/scene_detector_node.hpp:196`](../src/nodes/scene_detector_node.hpp#L196) — `Unknown`
|
||
- [`src/scene_boundaries.hpp:30`](../src/scene_boundaries.hpp#L30) — `public:`
|
||
- [`tests/test_scene_detector_node.cpp:4`](../tests/test_scene_detector_node.cpp#L4) — `Unknown`
|
||
|
||
### AR-012
|
||
|
||
**Locations:** 17
|
||
|
||
- [`src/config.hpp:210`](../src/config.hpp#L210) — `Unknown`
|
||
- [`src/kpn_bindings.cpp:406`](../src/kpn_bindings.cpp#L406) — `Unknown`
|
||
- [`src/main.cpp:317`](../src/main.cpp#L317) — `Unknown`
|
||
- [`src/main.cpp:343`](../src/main.cpp#L343) — `reg_cfg, EvidenceDiscounter(same_person, disc_cfg));`
|
||
- [`src/main.cpp:519`](../src/main.cpp#L519) — `Unknown`
|
||
- [`src/nodes/frame_annotation_node.hpp:2`](../src/nodes/frame_annotation_node.hpp#L2) — `Unknown`
|
||
- [`src/nodes/identity_matcher_node.hpp:151`](../src/nodes/identity_matcher_node.hpp#L151) — `const GalleryCalibration& calibration() const { return cal_; }`
|
||
- [`src/nodes/identity_matcher_node.hpp:173`](../src/nodes/identity_matcher_node.hpp#L173) — `MatchedSceneFrame operator()(TrackedSceneFrame tf)`
|
||
- [`src/nodes/identity_matcher_node.hpp:306`](../src/nodes/identity_matcher_node.hpp#L306) — `Unknown`
|
||
- [`src/nodes/result_sink_node.hpp:50`](../src/nodes/result_sink_node.hpp#L50) — `static constexpr std::string_view label() { return "result_sink"; }`
|
||
- [`src/nodes/result_sink_node.hpp:164`](../src/nodes/result_sink_node.hpp#L164) — `struct ActorMeta { std::string name, imdb_id, tmdb_id, jellyfin_id; };`
|
||
- [`src/scene_preview.cpp:147`](../src/scene_preview.cpp#L147) — `Unknown`
|
||
- [`src/track_registry.hpp:2`](../src/track_registry.hpp#L2) — `Unknown`
|
||
- [`src/track_registry.hpp:191`](../src/track_registry.hpp#L191) — `void tick(double now) { std::lock_guard g(mu_); tick_locked(now); }`
|
||
- [`tests/test_replay_fixtures.cpp:3`](../tests/test_replay_fixtures.cpp#L3) — `Unknown`
|
||
- [`tests/test_track_registry.cpp:3`](../tests/test_track_registry.cpp#L3) — `Unknown`
|
||
- [`tests/test_track_registry.cpp:376`](../tests/test_track_registry.cpp#L376) — `TrackRegistry reg(cfg(/*extinction=*/5.0), disc());`
|
||
|
||
### AR-013
|
||
|
||
**Locations:** 11
|
||
|
||
- [`src/config.hpp:210`](../src/config.hpp#L210) — `Unknown`
|
||
- [`src/nodes/frame_annotation_node.hpp:2`](../src/nodes/frame_annotation_node.hpp#L2) — `Unknown`
|
||
- [`src/nodes/identity_matcher_node.hpp:173`](../src/nodes/identity_matcher_node.hpp#L173) — `MatchedSceneFrame operator()(TrackedSceneFrame tf)`
|
||
- [`src/track_registry.hpp:2`](../src/track_registry.hpp#L2) — `Unknown`
|
||
- [`src/track_registry.hpp:145`](../src/track_registry.hpp#L145) — `public:`
|
||
- [`src/track_registry.hpp:191`](../src/track_registry.hpp#L191) — `void tick(double now) { std::lock_guard g(mu_); tick_locked(now); }`
|
||
- [`src/track_registry.hpp:222`](../src/track_registry.hpp#L222) — `std::lock_guard g(mu_);`
|
||
- [`tests/test_replay_fixtures.cpp:3`](../tests/test_replay_fixtures.cpp#L3) — `Unknown`
|
||
- [`tests/test_track_registry.cpp:3`](../tests/test_track_registry.cpp#L3) — `Unknown`
|
||
- [`tests/test_track_registry.cpp:376`](../tests/test_track_registry.cpp#L376) — `TrackRegistry reg(cfg(/*extinction=*/5.0), disc());`
|
||
- [`tests/test_track_registry.cpp:417`](../tests/test_track_registry.cpp#L417) — `TrackRegistry reg(cfg(/*extinction=*/5.0), disc());`
|
||
|
||
### AR-014
|
||
|
||
**Locations:** 2
|
||
|
||
- [`src/track_registry.hpp:2`](../src/track_registry.hpp#L2) — `Unknown`
|
||
- [`tests/test_track_registry.cpp:3`](../tests/test_track_registry.cpp#L3) — `Unknown`
|
||
|
||
### AR-015
|
||
|
||
**Locations:** 2
|
||
|
||
- [`src/track_registry.hpp:2`](../src/track_registry.hpp#L2) — `Unknown`
|
||
- [`tests/test_track_registry.cpp:3`](../tests/test_track_registry.cpp#L3) — `Unknown`
|
||
|
||
### AR-016
|
||
|
||
**Locations:** 5
|
||
|
||
- [`src/kpn_bindings.cpp:406`](../src/kpn_bindings.cpp#L406) — `Unknown`
|
||
- [`src/main.cpp:343`](../src/main.cpp#L343) — `reg_cfg, EvidenceDiscounter(same_person, disc_cfg));`
|
||
- [`src/nodes/result_sink_node.hpp:64`](../src/nodes/result_sink_node.hpp#L64) — `void set_pre_write_hook(std::function<void(double)> fn) { pre_write_ = std::move(fn); }`
|
||
- [`src/track_registry.hpp:2`](../src/track_registry.hpp#L2) — `Unknown`
|
||
- [`tests/test_track_registry.cpp:3`](../tests/test_track_registry.cpp#L3) — `Unknown`
|
||
|
||
### AR-017
|
||
|
||
**Locations:** 5
|
||
|
||
- [`src/config.hpp:181`](../src/config.hpp#L181) — `Unknown`
|
||
- [`src/nodes/result_sink_node.hpp:50`](../src/nodes/result_sink_node.hpp#L50) — `static constexpr std::string_view label() { return "result_sink"; }`
|
||
- [`src/track_registry.hpp:2`](../src/track_registry.hpp#L2) — `Unknown`
|
||
- [`src/track_registry.hpp:47`](../src/track_registry.hpp#L47) — `Unknown`
|
||
- [`tests/test_track_registry.cpp:3`](../tests/test_track_registry.cpp#L3) — `Unknown`
|
||
|
||
### AR-018
|
||
|
||
**Locations:** 5
|
||
|
||
- [`src/config.hpp:245`](../src/config.hpp#L245) — `Unknown`
|
||
- [`src/gallery/track_gallery.hpp:233`](../src/gallery/track_gallery.hpp#L233) — `struct TrackState`
|
||
- [`src/gallery/track_gallery.hpp:331`](../src/gallery/track_gallery.hpp#L331) — `Unknown`
|
||
- [`src/nodes/identity_matcher_node.hpp:136`](../src/nodes/identity_matcher_node.hpp#L136) — `std::vector<float> host_gallery(static_cast<size_t>(n_gallery_) * 512);`
|
||
- [`tests/test_track_gallery.cpp:1`](../tests/test_track_gallery.cpp#L1) — `Unknown`
|
||
|
||
### AR-019
|
||
|
||
**Locations:** 7
|
||
|
||
- [`src/gallery/track_gallery.hpp:136`](../src/gallery/track_gallery.hpp#L136) — `Unknown`
|
||
- [`src/gallery/track_gallery.hpp:161`](../src/gallery/track_gallery.hpp#L161) — `Unknown`
|
||
- [`src/gallery/track_gallery.hpp:183`](../src/gallery/track_gallery.hpp#L183) — `void set_owner(int track_id, int actor_idx)`
|
||
- [`src/nodes/identity_matcher_node.hpp:194`](../src/nodes/identity_matcher_node.hpp#L194) — `Unknown`
|
||
- [`src/nodes/identity_matcher_node.hpp:316`](../src/nodes/identity_matcher_node.hpp#L316) — `Unknown`
|
||
- [`src/nodes/identity_matcher_node.hpp:335`](../src/nodes/identity_matcher_node.hpp#L335) — `Unknown`
|
||
- [`tests/test_track_gallery.cpp:1`](../tests/test_track_gallery.cpp#L1) — `Unknown`
|
||
|
||
### AR-023
|
||
|
||
**Locations:** 4
|
||
|
||
- [`src/gallery/gallery_calibration.hpp:2`](../src/gallery/gallery_calibration.hpp#L2) — `Unknown`
|
||
- [`src/gallery/gallery_calibration.hpp:53`](../src/gallery/gallery_calibration.hpp#L53) — `float boundary_at(float p = 0.5f, float log_prior_odds = 0.f) const`
|
||
- [`src/nodes/identity_matcher_node.hpp:143`](../src/nodes/identity_matcher_node.hpp#L143) — `const GalleryCalibration& calibration() const { return cal_; }`
|
||
- [`tests/test_calibration.cpp:1`](../tests/test_calibration.cpp#L1) — `Unknown`
|
||
|
||
### AR-024
|
||
|
||
**Locations:** 19
|
||
|
||
- [`src/config.hpp:108`](../src/config.hpp#L108) — `Unknown`
|
||
- [`src/config.hpp:160`](../src/config.hpp#L160) — `Unknown`
|
||
- [`src/config.hpp:245`](../src/config.hpp#L245) — `Unknown`
|
||
- [`src/evidence_discount.hpp:2`](../src/evidence_discount.hpp#L2) — `Unknown`
|
||
- [`src/gallery/gallery_calibration.hpp:53`](../src/gallery/gallery_calibration.hpp#L53) — `float boundary_at(float p = 0.5f, float log_prior_odds = 0.f) const`
|
||
- [`src/gallery/track_gallery.hpp:193`](../src/gallery/track_gallery.hpp#L193) — `void set_owner(int track_id, int actor_idx)`
|
||
- [`src/gallery/track_gallery.hpp:233`](../src/gallery/track_gallery.hpp#L233) — `struct TrackState`
|
||
- [`src/gallery/track_gallery.hpp:331`](../src/gallery/track_gallery.hpp#L331) — `Unknown`
|
||
- [`src/main.cpp:317`](../src/main.cpp#L317) — `Unknown`
|
||
- [`src/nodes/face_tracker_node.hpp:2`](../src/nodes/face_tracker_node.hpp#L2) — `Unknown`
|
||
- [`src/nodes/identity_matcher_node.hpp:29`](../src/nodes/identity_matcher_node.hpp#L29) — `Unknown`
|
||
- [`src/nodes/identity_matcher_node.hpp:109`](../src/nodes/identity_matcher_node.hpp#L109) — `Unknown`
|
||
- [`src/nodes/identity_matcher_node.hpp:136`](../src/nodes/identity_matcher_node.hpp#L136) — `std::vector<float> host_gallery(static_cast<size_t>(n_gallery_) * 512);`
|
||
- [`src/nodes/identity_matcher_node.hpp:143`](../src/nodes/identity_matcher_node.hpp#L143) — `const GalleryCalibration& calibration() const { return cal_; }`
|
||
- [`src/nodes/identity_matcher_node.hpp:271`](../src/nodes/identity_matcher_node.hpp#L271) — `Unknown`
|
||
- [`src/scene_preview.cpp:147`](../src/scene_preview.cpp#L147) — `Unknown`
|
||
- [`tests/test_track_gallery.cpp:1`](../tests/test_track_gallery.cpp#L1) — `Unknown`
|
||
- [`tests/test_track_gallery.cpp:414`](../tests/test_track_gallery.cpp#L414) — `TrackGallery tg(expand_cfg());`
|
||
- [`scripts/ci/check_raw_cosine.py:4`](../scripts/ci/check_raw_cosine.py#L4) — `Unknown`
|
||
|
||
### AR-025
|
||
|
||
**Locations:** 10
|
||
|
||
- [`src/config.hpp:181`](../src/config.hpp#L181) — `Unknown`
|
||
- [`src/evidence_discount.hpp:2`](../src/evidence_discount.hpp#L2) — `Unknown`
|
||
- [`src/kpn_bindings.cpp:432`](../src/kpn_bindings.cpp#L432) — `Unknown`
|
||
- [`src/main.cpp:325`](../src/main.cpp#L325) — `reg_cfg, EvidenceDiscounter(same_person, disc_cfg));`
|
||
- [`src/main.cpp:519`](../src/main.cpp#L519) — `Unknown`
|
||
- [`src/nodes/identity_matcher_node.hpp:151`](../src/nodes/identity_matcher_node.hpp#L151) — `const GalleryCalibration& calibration() const { return cal_; }`
|
||
- [`src/nodes/identity_matcher_node.hpp:306`](../src/nodes/identity_matcher_node.hpp#L306) — `Unknown`
|
||
- [`src/track_registry.hpp:191`](../src/track_registry.hpp#L191) — `void tick(double now) { std::lock_guard g(mu_); tick_locked(now); }`
|
||
- [`src/track_registry.hpp:222`](../src/track_registry.hpp#L222) — `std::lock_guard g(mu_);`
|
||
- [`tests/test_track_registry.cpp:376`](../tests/test_track_registry.cpp#L376) — `TrackRegistry reg(cfg(/*extinction=*/5.0), disc());`
|
||
|
||
### AR-026
|
||
|
||
**Locations:** 17
|
||
|
||
- [`src/backends/gemm_backend.cpp:44`](../src/backends/gemm_backend.cpp#L44) — `constexpr int kDim = 512;`
|
||
- [`src/backends/gemm_backend.cpp:80`](../src/backends/gemm_backend.cpp#L80) — `int n_gallery() const override { return n_gallery_; }`
|
||
- [`src/backends/gemm_backend.cpp:256`](../src/backends/gemm_backend.cpp#L256) — `int n_gallery() const override { return n_gallery_; }`
|
||
- [`src/gallery/track_gallery.hpp:50`](../src/gallery/track_gallery.hpp#L50) — `struct TrackGallery`
|
||
- [`src/gallery/track_gallery.hpp:85`](../src/gallery/track_gallery.hpp#L85) — `bool enabled() const { return enabled_; }`
|
||
- [`src/gallery/track_gallery.hpp:100`](../src/gallery/track_gallery.hpp#L100) — `const float* annex_row(int i) const`
|
||
- [`src/gallery/track_gallery.hpp:380`](../src/gallery/track_gallery.hpp#L380) — `static constexpr int kEmbDim = 512;`
|
||
- [`src/inference/similarity.hpp:19`](../src/inference/similarity.hpp#L19) — `struct ISimilarityEngine`
|
||
- [`src/inference/similarity.hpp:39`](../src/inference/similarity.hpp#L39) — `virtual int n_gallery() const = 0;`
|
||
- [`src/nodes/identity_matcher_node.hpp:60`](../src/nodes/identity_matcher_node.hpp#L60) — `struct IdentityMatcherFunc`
|
||
- [`src/nodes/identity_matcher_node.hpp:233`](../src/nodes/identity_matcher_node.hpp#L233) — `std::vector<float> host_query(static_cast<size_t>(kMaxFaces) * 512);`
|
||
- [`src/nodes/identity_matcher_node.hpp:349`](../src/nodes/identity_matcher_node.hpp#L349) — `private:`
|
||
- [`tests/test_similarity.cpp:1`](../tests/test_similarity.cpp#L1) — `Unknown`
|
||
- [`tests/test_similarity.cpp:85`](../tests/test_similarity.cpp#L85) — `Unknown`
|
||
- [`tests/test_track_gallery.cpp:1`](../tests/test_track_gallery.cpp#L1) — `Unknown`
|
||
- [`tests/test_track_gallery.cpp:54`](../tests/test_track_gallery.cpp#L54) — `Embedding annex_view(const TrackGallery& tg, int row)`
|
||
- [`tests/test_track_gallery.cpp:364`](../tests/test_track_gallery.cpp#L364) — `TrackGallery tg(expand_cfg());`
|
||
|
||
### AR-027
|
||
|
||
**Locations:** 1
|
||
|
||
- [`src/backends/gemm_backend.cpp:44`](../src/backends/gemm_backend.cpp#L44) — `constexpr int kDim = 512;`
|
||
|
||
### AR-028
|
||
|
||
**Locations:** 8
|
||
|
||
- [`src/nodes/embedding_dump_node.hpp:2`](../src/nodes/embedding_dump_node.hpp#L2) — `Unknown`
|
||
- [`src/nodes/embedding_dump_node.hpp:181`](../src/nodes/embedding_dump_node.hpp#L181) — `Unknown`
|
||
- [`src/nodes/embedding_dump_node.hpp:296`](../src/nodes/embedding_dump_node.hpp#L296) — `Unknown`
|
||
- [`src/nodes/face_aligner_node.hpp:8`](../src/nodes/face_aligner_node.hpp#L8) — `Unknown`
|
||
- [`src/types.hpp:62`](../src/types.hpp#L62) — `struct DetectedFace`
|
||
- [`tests/test_embedding_dump.cpp:1`](../tests/test_embedding_dump.cpp#L1) — `Unknown`
|
||
- [`tests/test_face_utils.cpp:1`](../tests/test_face_utils.cpp#L1) — `Unknown`
|
||
- [`scripts/optimizer/replay.py:70`](../scripts/optimizer/replay.py#L70) — `for i in range(len(ts)):`
|
||
|
||
### AR-029
|
||
|
||
**Locations:** 4
|
||
|
||
- [`src/face_utils.hpp:2`](../src/face_utils.hpp#L2) — `Unknown`
|
||
- [`src/face_utils.hpp:147`](../src/face_utils.hpp#L147) — `Unknown`
|
||
- [`src/nodes/face_aligner_node.hpp:8`](../src/nodes/face_aligner_node.hpp#L8) — `Unknown`
|
||
- [`tests/test_face_utils.cpp:1`](../tests/test_face_utils.cpp#L1) — `Unknown`
|
||
|
||
### AR-030
|
||
|
||
**Locations:** 3
|
||
|
||
- [`src/face_utils.hpp:2`](../src/face_utils.hpp#L2) — `Unknown`
|
||
- [`src/nodes/face_aligner_node.hpp:8`](../src/nodes/face_aligner_node.hpp#L8) — `Unknown`
|
||
- [`tests/test_face_utils.cpp:1`](../tests/test_face_utils.cpp#L1) — `Unknown`
|
||
|
||
### DP-001
|
||
|
||
**Locations:** 4
|
||
|
||
- [`src/kpn_bindings.cpp:322`](../src/kpn_bindings.cpp#L322) — `Unknown`
|
||
- [`src/main.cpp:3`](../src/main.cpp#L3) — `Unknown`
|
||
- [`src/scene_preview.cpp:147`](../src/scene_preview.cpp#L147) — `Unknown`
|
||
- [`scripts/optimizer/replay.py:194`](../scripts/optimizer/replay.py#L194) — `Unknown`
|
||
|
||
### DP-002
|
||
|
||
**Locations:** 1
|
||
|
||
- [`src/main.cpp:3`](../src/main.cpp#L3) — `Unknown`
|
||
|
||
### GR-001
|
||
|
||
**Locations:** 1
|
||
|
||
- [`scripts/make_jellyfin_gallery.py:4`](../scripts/make_jellyfin_gallery.py#L4) — `Unknown`
|
||
|
||
### GR-002
|
||
|
||
**Locations:** 1
|
||
|
||
- [`scripts/make_jellyfin_gallery.py:4`](../scripts/make_jellyfin_gallery.py#L4) — `Unknown`
|
||
|
||
### GR-003
|
||
|
||
**Locations:** 16
|
||
|
||
- [`src/build_gallery.cpp:87`](../src/build_gallery.cpp#L87) — `Unknown`
|
||
- [`src/gallery/gallery_calibration.hpp:80`](../src/gallery/gallery_calibration.hpp#L80) — `struct GalleryCalibrationStats`
|
||
- [`src/gallery/gallery_calibration.hpp:145`](../src/gallery/gallery_calibration.hpp#L145) — `std::vector<bool> actor_eligible(n_actors, false);`
|
||
- [`src/gallery/gallery_calibration.hpp:307`](../src/gallery/gallery_calibration.hpp#L307) — `Unknown`
|
||
- [`src/gallery/gallery_report.hpp:2`](../src/gallery/gallery_report.hpp#L2) — `Unknown`
|
||
- [`src/gallery/gallery_report.hpp:52`](../src/gallery/gallery_report.hpp#L52) — `struct GalleryBuildAudit`
|
||
- [`src/gallery/gallery_report.hpp:73`](../src/gallery/gallery_report.hpp#L73) — `struct GalleryReport`
|
||
- [`src/gallery/gallery_report.hpp:154`](../src/gallery/gallery_report.hpp#L154) — `inline GalleryReport build_gallery_report(const ActorGallery& gallery,`
|
||
- [`src/gallery/gallery_report.hpp:295`](../src/gallery/gallery_report.hpp#L295) — `inline nlohmann::json gallery_report_to_json(const GalleryReport& r)`
|
||
- [`src/gallery/gallery_report.hpp:361`](../src/gallery/gallery_report.hpp#L361) — `inline GalleryReport gallery_report_from_json(const nlohmann::json& j)`
|
||
- [`src/gallery/gallery_report.hpp:446`](../src/gallery/gallery_report.hpp#L446) — `inline void save_gallery_report(const std::string& path, const GalleryReport& r)`
|
||
- [`src/gallery/gallery_report.hpp:454`](../src/gallery/gallery_report.hpp#L454) — `inline GalleryReport load_gallery_report(const std::string& path)`
|
||
- [`src/gallery/gallery_report.hpp:464`](../src/gallery/gallery_report.hpp#L464) — `return gallery_report_from_json(j);`
|
||
- [`tests/test_calibration.cpp:192`](../tests/test_calibration.cpp#L192) — `Embedding unit_axis(int slot)`
|
||
- [`tests/test_calibration.cpp:222`](../tests/test_calibration.cpp#L222) — `Unknown`
|
||
- [`tests/test_calibration.cpp:248`](../tests/test_calibration.cpp#L248) — `Unknown`
|
||
|
||
### GR-004
|
||
|
||
**Locations:** 44
|
||
|
||
- [`src/config.hpp:62`](../src/config.hpp#L62) — `Unknown`
|
||
- [`src/gallery/embedder_stamp.cpp:1`](../src/gallery/embedder_stamp.cpp#L1) — `Unknown`
|
||
- [`src/gallery/embedder_stamp.hpp:2`](../src/gallery/embedder_stamp.hpp#L2) — `Unknown`
|
||
- [`src/gallery/gallery_builder.cpp:45`](../src/gallery/gallery_builder.cpp#L45) — `ActorGallery build_gallery(const BuildConfig& cfg)`
|
||
- [`src/gallery/gallery_store.cpp:82`](../src/gallery/gallery_store.cpp#L82) — `H5::StrType str(H5::PredType::C_S1, H5T_VARIABLE);`
|
||
- [`src/gallery/gallery_store.cpp:167`](../src/gallery/gallery_store.cpp#L167) — `H5::DataSpace scalar(H5S_SCALAR);`
|
||
- [`src/gallery/gallery_store.cpp:219`](../src/gallery/gallery_store.cpp#L219) — `Unknown`
|
||
- [`src/kpn_bindings.cpp:257`](../src/kpn_bindings.cpp#L257) — `Unknown`
|
||
- [`src/kpn_bindings.cpp:359`](../src/kpn_bindings.cpp#L359) — `static std::map<std::string, std::shared_ptr<ActorGallery>> cache;`
|
||
- [`src/main.cpp:292`](../src/main.cpp#L292) — `Unknown`
|
||
- [`src/nodes/embedding_dump_node.hpp:127`](../src/nodes/embedding_dump_node.hpp#L127) — `static constexpr std::string_view label() { return "embedding_dump"; }`
|
||
- [`src/nodes/embedding_dump_node.hpp:257`](../src/nodes/embedding_dump_node.hpp#L257) — `H5::H5File file(path_, H5F_ACC_TRUNC);`
|
||
- [`src/scene_preview.cpp:130`](../src/scene_preview.cpp#L130) — `int main(int argc, char** argv)`
|
||
- [`src/types.hpp:173`](../src/types.hpp#L173) — `struct Actor`
|
||
- [`tests/test_gallery_store.cpp:182`](../tests/test_gallery_store.cpp#L182) — `TempFile tf("gallery_stamped.h5");`
|
||
- [`tests/test_gallery_store.cpp:201`](../tests/test_gallery_store.cpp#L201) — `TempFile tf("gallery_stamped.h5");`
|
||
- [`tests/test_gallery_store.cpp:219`](../tests/test_gallery_store.cpp#L219) — `TempFile tf("gallery_unstamped.h5");`
|
||
- [`tests/test_gallery_store.cpp:240`](../tests/test_gallery_store.cpp#L240) — `TempFile tf("gallery_json_stamp.json");`
|
||
- [`tests/test_gallery_store.cpp:252`](../tests/test_gallery_store.cpp#L252) — `Unknown`
|
||
- [`tests/test_gallery_store.cpp:268`](../tests/test_gallery_store.cpp#L268) — `Unknown`
|
||
- [`tests/test_gallery_store.cpp:300`](../tests/test_gallery_store.cpp#L300) — `Unknown`
|
||
- [`tests/test_gallery_store.cpp:309`](../tests/test_gallery_store.cpp#L309) — `Unknown`
|
||
- [`tests/test_gallery_store.cpp:333`](../tests/test_gallery_store.cpp#L333) — `Unknown`
|
||
- [`tests/test_gallery_store.cpp:348`](../tests/test_gallery_store.cpp#L348) — `Unknown`
|
||
- [`tests/test_gallery_store.cpp:367`](../tests/test_gallery_store.cpp#L367) — `Unknown`
|
||
- [`tests/test_gallery_store.cpp:384`](../tests/test_gallery_store.cpp#L384) — `TempFile tf("fake_model.onnx");`
|
||
- [`scripts/filter_gallery.py:80`](../scripts/filter_gallery.py#L80) — `if actor_jellyfin_id(a) in cast_ids]`
|
||
- [`scripts/make_gallery.py:181`](../scripts/make_gallery.py#L181) — `Unknown`
|
||
- [`scripts/make_jellyfin_gallery.py:448`](../scripts/make_jellyfin_gallery.py#L448) — `Unknown`
|
||
- [`scripts/make_jellyfin_gallery.py:456`](../scripts/make_jellyfin_gallery.py#L456) — `Unknown`
|
||
- [`scripts/movienet_eval.py:65`](../scripts/movienet_eval.py#L65) — `with open(args.gt) as f:`
|
||
- [`scripts/optimizer/fetch_missing_actors.py:62`](../scripts/optimizer/fetch_missing_actors.py#L62) — `def fetch(missing_path, out_path, token, build_dir, models_dir, arcface,`
|
||
- [`scripts/optimizer/fetch_missing_actors.py:109`](../scripts/optimizer/fetch_missing_actors.py#L109) — `def merge(base_path, add_path, out_path):`
|
||
- [`scripts/optimizer/fetch_missing_actors.py:124`](../scripts/optimizer/fetch_missing_actors.py#L124) — `def merge(base_path, add_path, out_path):`
|
||
- [`scripts/optimizer/optimize.py:186`](../scripts/optimizer/optimize.py#L186) — `Unknown`
|
||
- [`scripts/optimizer/optimize.py:202`](../scripts/optimizer/optimize.py#L202) — `if not Path(f["dump"]).exists():`
|
||
- [`scripts/optimizer/reembed_gallery.py:62`](../scripts/optimizer/reembed_gallery.py#L62) — `for i, a in enumerate(ref["actors"], 1):`
|
||
- [`scripts/optimizer/replay.py:144`](../scripts/optimizer/replay.py#L144) — `Unknown`
|
||
- [`scripts/optimizer/replay.py:337`](../scripts/optimizer/replay.py#L337) — `Unknown`
|
||
- [`scripts/sae_embed_loader.py:23`](../scripts/sae_embed_loader.py#L23) — `def resolve_arcface(models_dir: str, arcface: str \| None = None) -> str:`
|
||
- [`scripts/sae_gallery.py:171`](../scripts/sae_gallery.py#L171) — `if not _stamp_empty(embedder):`
|
||
- [`scripts/sae_gallery.py:200`](../scripts/sae_gallery.py#L200) — `for a in range(len(offset)):`
|
||
- [`scripts/sae_stamp.py:3`](../scripts/sae_stamp.py#L3) — `Unknown`
|
||
- [`scripts/stamp_gallery.py:4`](../scripts/stamp_gallery.py#L4) — `Unknown`
|
||
|
||
### GR-005
|
||
|
||
**Locations:** 1
|
||
|
||
- [`src/gallery/gallery_store.hpp:15`](../src/gallery/gallery_store.hpp#L15) — `Unknown`
|
||
|
||
### IR-001
|
||
|
||
**Locations:** 2
|
||
|
||
- [`src/kpn_bindings.cpp:261`](../src/kpn_bindings.cpp#L261) — `Unknown`
|
||
- [`src/nodes/result_sink_node.hpp:2`](../src/nodes/result_sink_node.hpp#L2) — `Unknown`
|
||
|
||
### IR-002
|
||
|
||
**Locations:** 6
|
||
|
||
- [`src/config.hpp:20`](../src/config.hpp#L20) — `struct Config`
|
||
- [`src/main.cpp:343`](../src/main.cpp#L343) — `reg_cfg, EvidenceDiscounter(same_person, disc_cfg));`
|
||
- [`src/nodes/result_sink_node.hpp:50`](../src/nodes/result_sink_node.hpp#L50) — `static constexpr std::string_view label() { return "result_sink"; }`
|
||
- [`src/nodes/result_sink_node.hpp:123`](../src/nodes/result_sink_node.hpp#L123) — `void write_output()`
|
||
- [`src/nodes/result_sink_node.hpp:164`](../src/nodes/result_sink_node.hpp#L164) — `struct ActorMeta { std::string name, imdb_id, tmdb_id, jellyfin_id; };`
|
||
- [`src/track_registry.hpp:47`](../src/track_registry.hpp#L47) — `Unknown`
|
||
|
||
### IR-003
|
||
|
||
**Locations:** 2
|
||
|
||
- [`src/kpn_bindings.cpp:406`](../src/kpn_bindings.cpp#L406) — `Unknown`
|
||
- [`src/main.cpp:343`](../src/main.cpp#L343) — `reg_cfg, EvidenceDiscounter(same_person, disc_cfg));`
|
||
|
||
### IR-004
|
||
|
||
**Locations:** 18
|
||
|
||
- [`src/audio_bindings.cpp:3`](../src/audio_bindings.cpp#L3) — `Unknown`
|
||
- [`src/audio_signature.cpp:3`](../src/audio_signature.cpp#L3) — `Unknown`
|
||
- [`src/audio_signature.cpp:280`](../src/audio_signature.cpp#L280) — `std::vector<std::uint8_t> pack_frames(const std::vector<float>& mono)`
|
||
- [`src/audio_signature.cpp:335`](../src/audio_signature.cpp#L335) — `std::optional<std::string> signature_from_mono(const std::vector<float>& mono)`
|
||
- [`src/audio_signature.cpp:342`](../src/audio_signature.cpp#L342) — `std::optional<std::vector<float>> decode_centre_window(const std::string& path)`
|
||
- [`src/audio_signature.cpp:436`](../src/audio_signature.cpp#L436) — `std::optional<std::string> compute_signature(const std::string& path)`
|
||
- [`src/audio_signature.hpp:4`](../src/audio_signature.hpp#L4) — `Unknown`
|
||
- [`tests/test_audio_signature.cpp:3`](../tests/test_audio_signature.cpp#L3) — `Unknown`
|
||
- [`tests/test_audio_signature.cpp:129`](../tests/test_audio_signature.cpp#L129) — `Unknown`
|
||
- [`tests/test_audio_signature.cpp:151`](../tests/test_audio_signature.cpp#L151) — `Unknown`
|
||
- [`tests/test_audio_signature.cpp:167`](../tests/test_audio_signature.cpp#L167) — `Unknown`
|
||
- [`tests/test_audio_signature.cpp:236`](../tests/test_audio_signature.cpp#L236) — `Unknown`
|
||
- [`tests/test_audio_signature.cpp:263`](../tests/test_audio_signature.cpp#L263) — `TempWav w("centred300");`
|
||
- [`tests/test_audio_signature.cpp:301`](../tests/test_audio_signature.cpp#L301) — `Unknown`
|
||
- [`tests/test_audio_signature.cpp:314`](../tests/test_audio_signature.cpp#L314) — `kNumBands * std::log10(1000.0 / kBandLoHz) / std::log10(kBandHiHz / kBandLoHz)));`
|
||
- [`tests/test_audio_signature.cpp:328`](../tests/test_audio_signature.cpp#L328) — `std::vector<float> a(kWindowSamples / 50);`
|
||
- [`tests/test_audio_signature.cpp:344`](../tests/test_audio_signature.cpp#L344) — `return base64_encode(reinterpret_cast<const std::uint8_t*>(s.data()), s.size());`
|
||
- [`scripts/validation/test_audio_offset.py:5`](../scripts/validation/test_audio_offset.py#L5) — `The golden vector (IR-005) proves the *arithmetic* is identical in both`
|
||
|
||
### IR-005
|
||
|
||
**Locations:** 6
|
||
|
||
- [`src/audio_bindings.cpp:3`](../src/audio_bindings.cpp#L3) — `Unknown`
|
||
- [`src/audio_signature.cpp:436`](../src/audio_signature.cpp#L436) — `std::optional<std::string> compute_signature(const std::string& path)`
|
||
- [`src/audio_signature.hpp:4`](../src/audio_signature.hpp#L4) — `Unknown`
|
||
- [`tests/test_audio_signature.cpp:3`](../tests/test_audio_signature.cpp#L3) — `Unknown`
|
||
- [`tests/test_audio_signature.cpp:129`](../tests/test_audio_signature.cpp#L129) — `Unknown`
|
||
- [`tests/test_audio_signature.cpp:138`](../tests/test_audio_signature.cpp#L138) — `Unknown`
|
||
|
||
### IR-006
|
||
|
||
**Locations:** 1
|
||
|
||
- [`scripts/run_from_jellyfin.py:4`](../scripts/run_from_jellyfin.py#L4) — `Unknown`
|
||
|
||
### IR-007
|
||
|
||
**Locations:** 8
|
||
|
||
- [`src/audio_signature.cpp:3`](../src/audio_signature.cpp#L3) — `Unknown`
|
||
- [`src/audio_signature.cpp:342`](../src/audio_signature.cpp#L342) — `std::optional<std::vector<float>> decode_centre_window(const std::string& path)`
|
||
- [`src/audio_signature.cpp:436`](../src/audio_signature.cpp#L436) — `std::optional<std::string> compute_signature(const std::string& path)`
|
||
- [`src/audio_signature.hpp:4`](../src/audio_signature.hpp#L4) — `Unknown`
|
||
- [`tests/test_audio_signature.cpp:3`](../tests/test_audio_signature.cpp#L3) — `Unknown`
|
||
- [`tests/test_audio_signature.cpp:201`](../tests/test_audio_signature.cpp#L201) — `TempWav w("short30");`
|
||
- [`tests/test_audio_signature.cpp:219`](../tests/test_audio_signature.cpp#L219) — `TempWav w("exact120");`
|
||
- [`tests/test_audio_signature.cpp:229`](../tests/test_audio_signature.cpp#L229) — `TempWav w("exact120");`
|
||
|
||
### IR-008
|
||
|
||
**Locations:** 7
|
||
|
||
- [`src/audio_signature.cpp:3`](../src/audio_signature.cpp#L3) — `Unknown`
|
||
- [`src/audio_signature.cpp:335`](../src/audio_signature.cpp#L335) — `std::optional<std::string> signature_from_mono(const std::vector<float>& mono)`
|
||
- [`src/audio_signature.cpp:436`](../src/audio_signature.cpp#L436) — `std::optional<std::string> compute_signature(const std::string& path)`
|
||
- [`src/audio_signature.hpp:4`](../src/audio_signature.hpp#L4) — `Unknown`
|
||
- [`tests/test_audio_signature.cpp:3`](../tests/test_audio_signature.cpp#L3) — `Unknown`
|
||
- [`tests/test_audio_signature.cpp:129`](../tests/test_audio_signature.cpp#L129) — `Unknown`
|
||
- [`tests/test_audio_signature.cpp:167`](../tests/test_audio_signature.cpp#L167) — `Unknown`
|
||
|
||
### IT-001
|
||
|
||
**Locations:** 1
|
||
|
||
- [`tests/test_replay_fixtures.cpp:3`](../tests/test_replay_fixtures.cpp#L3) — `Unknown`
|
||
|
||
### PR-002
|
||
|
||
**Locations:** 22
|
||
|
||
- [`src/kpn_bindings.cpp:6`](../src/kpn_bindings.cpp#L6) — `Unknown`
|
||
- [`src/kpn_bindings.cpp:70`](../src/kpn_bindings.cpp#L70) — `namespace nb = nanobind;`
|
||
- [`src/kpn_bindings.cpp:261`](../src/kpn_bindings.cpp#L261) — `Unknown`
|
||
- [`src/kpn_bindings.cpp:322`](../src/kpn_bindings.cpp#L322) — `Unknown`
|
||
- [`src/kpn_bindings.cpp:432`](../src/kpn_bindings.cpp#L432) — `Unknown`
|
||
- [`src/nodes/embedding_dump_node.hpp:2`](../src/nodes/embedding_dump_node.hpp#L2) — `Unknown`
|
||
- [`src/nodes/embedding_dump_node.hpp:18`](../src/nodes/embedding_dump_node.hpp#L18) — `Unknown`
|
||
- [`src/nodes/embedding_dump_node.hpp:133`](../src/nodes/embedding_dump_node.hpp#L133) — `static constexpr std::string_view label() { return "embedding_dump"; }`
|
||
- [`src/nodes/embedding_dump_node.hpp:159`](../src/nodes/embedding_dump_node.hpp#L159) — `void operator()(EmbeddedSceneFrame ef)`
|
||
- [`src/nodes/embedding_dump_node.hpp:261`](../src/nodes/embedding_dump_node.hpp#L261) — `H5::H5File file(path_, H5F_ACC_TRUNC);`
|
||
- [`scripts/optimizer/replay.py:5`](../scripts/optimizer/replay.py#L5) — `Reads an embedding dump (scripts/optimizer/SCHEMA.md), feeds each frame as an`
|
||
- [`scripts/optimizer/replay.py:120`](../scripts/optimizer/replay.py#L120) — `ending at the last sighting (AR-013) -- and are byte-for-byte the same`
|
||
- [`scripts/optimizer/replay.py:174`](../scripts/optimizer/replay.py#L174) — `if i < len(frames):`
|
||
- [`scripts/optimizer/replay.py:194`](../scripts/optimizer/replay.py#L194) — `Unknown`
|
||
- [`scripts/optimizer/replay.py:242`](../scripts/optimizer/replay.py#L242) — `Unknown`
|
||
- [`scripts/optimizer/replay.py:268`](../scripts/optimizer/replay.py#L268) — `def write_raw_frames(truth: dict, raw_out: str) -> None:`
|
||
- [`scripts/optimizer/replay.py:316`](../scripts/optimizer/replay.py#L316) — `def main():`
|
||
- [`scripts/optimizer/second_score.py:5`](../scripts/optimizer/second_score.py#L5) — `Unknown`
|
||
- [`scripts/optimizer/test_sae_kpn.py:7`](../scripts/optimizer/test_sae_kpn.py#L7) — `Unknown`
|
||
- [`scripts/validation/ground_truth.py:24`](../scripts/validation/ground_truth.py#L24) — `Unknown`
|
||
- [`experiments/xsource/resolution_sweep.py:4`](../experiments/xsource/resolution_sweep.py#L4) — `Unknown`
|
||
- [`experiments/xsource/verify_labels.py:4`](../experiments/xsource/verify_labels.py#L4) — `Unknown`
|
||
|
||
### PR-004
|
||
|
||
**Locations:** 24
|
||
|
||
- [`src/backends/trt_backend.cpp:49`](../src/backends/trt_backend.cpp#L49) — `throw CudaError(std::string(what) + ": " + cudaGetErrorString(e));`
|
||
- [`src/benchmark.hpp:2`](../src/benchmark.hpp#L2) — `Unknown`
|
||
- [`src/benchmark.hpp:86`](../src/benchmark.hpp#L86) — `namespace sae::bench`
|
||
- [`src/benchmark.hpp:107`](../src/benchmark.hpp#L107) — `struct ChannelOccupancy`
|
||
- [`src/benchmark.hpp:141`](../src/benchmark.hpp#L141) — `struct NodeCost`
|
||
- [`src/benchmark.hpp:176`](../src/benchmark.hpp#L176) — `Unknown`
|
||
- [`src/benchmark.hpp:185`](../src/benchmark.hpp#L185) — `Unknown`
|
||
- [`src/benchmark.hpp:267`](../src/benchmark.hpp#L267) — `inline std::string verdict(const std::vector<NodeCost>& costs)`
|
||
- [`src/benchmark.hpp:315`](../src/benchmark.hpp#L315) — `class BenchmarkRecorder`
|
||
- [`src/benchmark.hpp:384`](../src/benchmark.hpp#L384) — `return attribute_cost(final_.nodes, channels(), final_.elapsed_s);`
|
||
- [`src/benchmark.hpp:465`](../src/benchmark.hpp#L465) — `void print(std::ostream& os, double film_sec) const`
|
||
- [`src/benchmark.hpp:472`](../src/benchmark.hpp#L472) — `void print(std::ostream& os, double film_sec) const`
|
||
- [`src/benchmark.hpp:522`](../src/benchmark.hpp#L522) — `else if (c.in_fill_pct > 50.0)`
|
||
- [`src/config.hpp:35`](../src/config.hpp#L35) — `Unknown`
|
||
- [`src/kpn_bindings.cpp:322`](../src/kpn_bindings.cpp#L322) — `Unknown`
|
||
- [`src/main.cpp:3`](../src/main.cpp#L3) — `Unknown`
|
||
- [`src/main.cpp:172`](../src/main.cpp#L172) — `static std::shared_ptr<SceneBoundaries> scene_stats;`
|
||
- [`src/main.cpp:265`](../src/main.cpp#L265) — `int main(int argc, char** argv)`
|
||
- [`src/main.cpp:351`](../src/main.cpp#L351) — `Unknown`
|
||
- [`src/main.cpp:425`](../src/main.cpp#L425) — `std::lock_guard<std::mutex> lk(event_mtx);`
|
||
- [`src/main.cpp:451`](../src/main.cpp#L451) — `Unknown`
|
||
- [`src/main.cpp:464`](../src/main.cpp#L464) — `Unknown`
|
||
- [`src/scene_preview.cpp:147`](../src/scene_preview.cpp#L147) — `Unknown`
|
||
- [`tests/test_benchmark.cpp:3`](../tests/test_benchmark.cpp#L3) — `Unknown`
|
||
|
||
### SR-001
|
||
|
||
**Locations:** 79
|
||
|
||
- [`src/backends/gemm_backend.cpp:44`](../src/backends/gemm_backend.cpp#L44) — `constexpr int kDim = 512;`
|
||
- [`src/backends/gemm_backend.cpp:80`](../src/backends/gemm_backend.cpp#L80) — `int n_gallery() const override { return n_gallery_; }`
|
||
- [`src/backends/gemm_backend.cpp:256`](../src/backends/gemm_backend.cpp#L256) — `int n_gallery() const override { return n_gallery_; }`
|
||
- [`src/build_gallery.cpp:87`](../src/build_gallery.cpp#L87) — `Unknown`
|
||
- [`src/config.hpp:62`](../src/config.hpp#L62) — `Unknown`
|
||
- [`src/gallery/embedder_stamp.cpp:1`](../src/gallery/embedder_stamp.cpp#L1) — `Unknown`
|
||
- [`src/gallery/embedder_stamp.hpp:2`](../src/gallery/embedder_stamp.hpp#L2) — `Unknown`
|
||
- [`src/gallery/gallery_builder.cpp:45`](../src/gallery/gallery_builder.cpp#L45) — `ActorGallery build_gallery(const BuildConfig& cfg)`
|
||
- [`src/gallery/gallery_calibration.hpp:80`](../src/gallery/gallery_calibration.hpp#L80) — `struct GalleryCalibrationStats`
|
||
- [`src/gallery/gallery_calibration.hpp:145`](../src/gallery/gallery_calibration.hpp#L145) — `std::vector<bool> actor_eligible(n_actors, false);`
|
||
- [`src/gallery/gallery_calibration.hpp:307`](../src/gallery/gallery_calibration.hpp#L307) — `Unknown`
|
||
- [`src/gallery/gallery_report.hpp:2`](../src/gallery/gallery_report.hpp#L2) — `Unknown`
|
||
- [`src/gallery/gallery_report.hpp:52`](../src/gallery/gallery_report.hpp#L52) — `struct GalleryBuildAudit`
|
||
- [`src/gallery/gallery_report.hpp:73`](../src/gallery/gallery_report.hpp#L73) — `struct GalleryReport`
|
||
- [`src/gallery/gallery_report.hpp:154`](../src/gallery/gallery_report.hpp#L154) — `inline GalleryReport build_gallery_report(const ActorGallery& gallery,`
|
||
- [`src/gallery/gallery_report.hpp:295`](../src/gallery/gallery_report.hpp#L295) — `inline nlohmann::json gallery_report_to_json(const GalleryReport& r)`
|
||
- [`src/gallery/gallery_report.hpp:361`](../src/gallery/gallery_report.hpp#L361) — `inline GalleryReport gallery_report_from_json(const nlohmann::json& j)`
|
||
- [`src/gallery/gallery_report.hpp:446`](../src/gallery/gallery_report.hpp#L446) — `inline void save_gallery_report(const std::string& path, const GalleryReport& r)`
|
||
- [`src/gallery/gallery_report.hpp:454`](../src/gallery/gallery_report.hpp#L454) — `inline GalleryReport load_gallery_report(const std::string& path)`
|
||
- [`src/gallery/gallery_report.hpp:464`](../src/gallery/gallery_report.hpp#L464) — `return gallery_report_from_json(j);`
|
||
- [`src/gallery/gallery_store.cpp:82`](../src/gallery/gallery_store.cpp#L82) — `H5::StrType str(H5::PredType::C_S1, H5T_VARIABLE);`
|
||
- [`src/gallery/gallery_store.cpp:167`](../src/gallery/gallery_store.cpp#L167) — `H5::DataSpace scalar(H5S_SCALAR);`
|
||
- [`src/gallery/gallery_store.cpp:219`](../src/gallery/gallery_store.cpp#L219) — `Unknown`
|
||
- [`src/gallery/track_gallery.hpp:50`](../src/gallery/track_gallery.hpp#L50) — `struct TrackGallery`
|
||
- [`src/gallery/track_gallery.hpp:85`](../src/gallery/track_gallery.hpp#L85) — `bool enabled() const { return enabled_; }`
|
||
- [`src/gallery/track_gallery.hpp:100`](../src/gallery/track_gallery.hpp#L100) — `const float* annex_row(int i) const`
|
||
- [`src/gallery/track_gallery.hpp:380`](../src/gallery/track_gallery.hpp#L380) — `static constexpr int kEmbDim = 512;`
|
||
- [`src/inference/similarity.hpp:19`](../src/inference/similarity.hpp#L19) — `struct ISimilarityEngine`
|
||
- [`src/inference/similarity.hpp:39`](../src/inference/similarity.hpp#L39) — `virtual int n_gallery() const = 0;`
|
||
- [`src/kpn_bindings.cpp:257`](../src/kpn_bindings.cpp#L257) — `Unknown`
|
||
- [`src/kpn_bindings.cpp:359`](../src/kpn_bindings.cpp#L359) — `static std::map<std::string, std::shared_ptr<ActorGallery>> cache;`
|
||
- [`src/main.cpp:292`](../src/main.cpp#L292) — `Unknown`
|
||
- [`src/nodes/embedding_dump_node.hpp:127`](../src/nodes/embedding_dump_node.hpp#L127) — `static constexpr std::string_view label() { return "embedding_dump"; }`
|
||
- [`src/nodes/embedding_dump_node.hpp:257`](../src/nodes/embedding_dump_node.hpp#L257) — `H5::H5File file(path_, H5F_ACC_TRUNC);`
|
||
- [`src/nodes/identity_matcher_node.hpp:60`](../src/nodes/identity_matcher_node.hpp#L60) — `struct IdentityMatcherFunc`
|
||
- [`src/nodes/identity_matcher_node.hpp:233`](../src/nodes/identity_matcher_node.hpp#L233) — `std::vector<float> host_query(static_cast<size_t>(kMaxFaces) * 512);`
|
||
- [`src/nodes/identity_matcher_node.hpp:349`](../src/nodes/identity_matcher_node.hpp#L349) — `private:`
|
||
- [`src/scene_preview.cpp:130`](../src/scene_preview.cpp#L130) — `int main(int argc, char** argv)`
|
||
- [`src/types.hpp:173`](../src/types.hpp#L173) — `struct Actor`
|
||
- [`tests/test_calibration.cpp:192`](../tests/test_calibration.cpp#L192) — `Embedding unit_axis(int slot)`
|
||
- [`tests/test_calibration.cpp:222`](../tests/test_calibration.cpp#L222) — `Unknown`
|
||
- [`tests/test_calibration.cpp:248`](../tests/test_calibration.cpp#L248) — `Unknown`
|
||
- [`tests/test_gallery_store.cpp:182`](../tests/test_gallery_store.cpp#L182) — `TempFile tf("gallery_stamped.h5");`
|
||
- [`tests/test_gallery_store.cpp:201`](../tests/test_gallery_store.cpp#L201) — `TempFile tf("gallery_stamped.h5");`
|
||
- [`tests/test_gallery_store.cpp:219`](../tests/test_gallery_store.cpp#L219) — `TempFile tf("gallery_unstamped.h5");`
|
||
- [`tests/test_gallery_store.cpp:240`](../tests/test_gallery_store.cpp#L240) — `TempFile tf("gallery_json_stamp.json");`
|
||
- [`tests/test_gallery_store.cpp:252`](../tests/test_gallery_store.cpp#L252) — `Unknown`
|
||
- [`tests/test_gallery_store.cpp:268`](../tests/test_gallery_store.cpp#L268) — `Unknown`
|
||
- [`tests/test_gallery_store.cpp:300`](../tests/test_gallery_store.cpp#L300) — `Unknown`
|
||
- [`tests/test_gallery_store.cpp:309`](../tests/test_gallery_store.cpp#L309) — `Unknown`
|
||
- [`tests/test_gallery_store.cpp:333`](../tests/test_gallery_store.cpp#L333) — `Unknown`
|
||
- [`tests/test_gallery_store.cpp:348`](../tests/test_gallery_store.cpp#L348) — `Unknown`
|
||
- [`tests/test_gallery_store.cpp:367`](../tests/test_gallery_store.cpp#L367) — `Unknown`
|
||
- [`tests/test_gallery_store.cpp:384`](../tests/test_gallery_store.cpp#L384) — `TempFile tf("fake_model.onnx");`
|
||
- [`tests/test_similarity.cpp:1`](../tests/test_similarity.cpp#L1) — `Unknown`
|
||
- [`tests/test_similarity.cpp:85`](../tests/test_similarity.cpp#L85) — `Unknown`
|
||
- [`tests/test_track_gallery.cpp:1`](../tests/test_track_gallery.cpp#L1) — `Unknown`
|
||
- [`tests/test_track_gallery.cpp:54`](../tests/test_track_gallery.cpp#L54) — `Embedding annex_view(const TrackGallery& tg, int row)`
|
||
- [`tests/test_track_gallery.cpp:364`](../tests/test_track_gallery.cpp#L364) — `TrackGallery tg(expand_cfg());`
|
||
- [`scripts/filter_gallery.py:80`](../scripts/filter_gallery.py#L80) — `if actor_jellyfin_id(a) in cast_ids]`
|
||
- [`scripts/make_gallery.py:181`](../scripts/make_gallery.py#L181) — `Unknown`
|
||
- [`scripts/make_jellyfin_gallery.py:4`](../scripts/make_jellyfin_gallery.py#L4) — `Unknown`
|
||
- [`scripts/make_jellyfin_gallery.py:448`](../scripts/make_jellyfin_gallery.py#L448) — `Unknown`
|
||
- [`scripts/make_jellyfin_gallery.py:456`](../scripts/make_jellyfin_gallery.py#L456) — `Unknown`
|
||
- [`scripts/movienet_eval.py:65`](../scripts/movienet_eval.py#L65) — `with open(args.gt) as f:`
|
||
- [`scripts/optimizer/fetch_missing_actors.py:62`](../scripts/optimizer/fetch_missing_actors.py#L62) — `def fetch(missing_path, out_path, token, build_dir, models_dir, arcface,`
|
||
- [`scripts/optimizer/fetch_missing_actors.py:109`](../scripts/optimizer/fetch_missing_actors.py#L109) — `def merge(base_path, add_path, out_path):`
|
||
- [`scripts/optimizer/fetch_missing_actors.py:124`](../scripts/optimizer/fetch_missing_actors.py#L124) — `def merge(base_path, add_path, out_path):`
|
||
- [`scripts/optimizer/optimize.py:186`](../scripts/optimizer/optimize.py#L186) — `Unknown`
|
||
- [`scripts/optimizer/optimize.py:202`](../scripts/optimizer/optimize.py#L202) — `if not Path(f["dump"]).exists():`
|
||
- [`scripts/optimizer/reembed_gallery.py:62`](../scripts/optimizer/reembed_gallery.py#L62) — `for i, a in enumerate(ref["actors"], 1):`
|
||
- [`scripts/optimizer/replay.py:144`](../scripts/optimizer/replay.py#L144) — `Unknown`
|
||
- [`scripts/optimizer/replay.py:337`](../scripts/optimizer/replay.py#L337) — `Unknown`
|
||
- [`scripts/run_from_jellyfin.py:4`](../scripts/run_from_jellyfin.py#L4) — `Unknown`
|
||
- [`scripts/sae_embed_loader.py:23`](../scripts/sae_embed_loader.py#L23) — `def resolve_arcface(models_dir: str, arcface: str \| None = None) -> str:`
|
||
- [`scripts/sae_gallery.py:171`](../scripts/sae_gallery.py#L171) — `if not _stamp_empty(embedder):`
|
||
- [`scripts/sae_gallery.py:200`](../scripts/sae_gallery.py#L200) — `for a in range(len(offset)):`
|
||
- [`scripts/sae_stamp.py:3`](../scripts/sae_stamp.py#L3) — `Unknown`
|
||
- [`scripts/stamp_gallery.py:4`](../scripts/stamp_gallery.py#L4) — `Unknown`
|
||
|
||
### SR-002
|
||
|
||
**Locations:** 75
|
||
|
||
- [`src/config.hpp:52`](../src/config.hpp#L52) — `Unknown`
|
||
- [`src/config.hpp:108`](../src/config.hpp#L108) — `Unknown`
|
||
- [`src/config.hpp:138`](../src/config.hpp#L138) — `Unknown`
|
||
- [`src/config.hpp:160`](../src/config.hpp#L160) — `Unknown`
|
||
- [`src/config.hpp:181`](../src/config.hpp#L181) — `Unknown`
|
||
- [`src/config.hpp:210`](../src/config.hpp#L210) — `Unknown`
|
||
- [`src/evidence_discount.hpp:2`](../src/evidence_discount.hpp#L2) — `Unknown`
|
||
- [`src/face_utils.hpp:2`](../src/face_utils.hpp#L2) — `Unknown`
|
||
- [`src/face_utils.hpp:147`](../src/face_utils.hpp#L147) — `Unknown`
|
||
- [`src/gallery/gallery_calibration.hpp:2`](../src/gallery/gallery_calibration.hpp#L2) — `Unknown`
|
||
- [`src/gallery/gallery_calibration.hpp:53`](../src/gallery/gallery_calibration.hpp#L53) — `float boundary_at(float p = 0.5f, float log_prior_odds = 0.f) const`
|
||
- [`src/kpn_bindings.cpp:406`](../src/kpn_bindings.cpp#L406) — `Unknown`
|
||
- [`src/main.cpp:106`](../src/main.cpp#L106) — `static constexpr std::size_t kSceneInputDepth = 128;`
|
||
- [`src/main.cpp:111`](../src/main.cpp#L111) — `static constexpr std::size_t kSceneInputDepth = 128;`
|
||
- [`src/main.cpp:132`](../src/main.cpp#L132) — `static constexpr double kSceneJoinSafety = 2.0;`
|
||
- [`src/main.cpp:154`](../src/main.cpp#L154) — `static std::size_t scene_join_depth(float sample_fps)`
|
||
- [`src/main.cpp:317`](../src/main.cpp#L317) — `Unknown`
|
||
- [`src/main.cpp:325`](../src/main.cpp#L325) — `reg_cfg, EvidenceDiscounter(same_person, disc_cfg));`
|
||
- [`src/main.cpp:343`](../src/main.cpp#L343) — `reg_cfg, EvidenceDiscounter(same_person, disc_cfg));`
|
||
- [`src/main.cpp:494`](../src/main.cpp#L494) — `std::ofstream bf(cfg.benchmark_path);`
|
||
- [`src/main.cpp:504`](../src/main.cpp#L504) — `Unknown`
|
||
- [`src/main.cpp:519`](../src/main.cpp#L519) — `Unknown`
|
||
- [`src/main.cpp:613`](../src/main.cpp#L613) — `return run_net(std::move(net));`
|
||
- [`src/main.cpp:645`](../src/main.cpp#L645) — `Unknown`
|
||
- [`src/nodes/camera_position_change_detector_node.hpp:30`](../src/nodes/camera_position_change_detector_node.hpp#L30) — `struct CameraPositionChangeDetectorFunc`
|
||
- [`src/nodes/embedder_node.hpp:21`](../src/nodes/embedder_node.hpp#L21) — `struct EmbedderFunc`
|
||
- [`src/nodes/embedding_dump_node.hpp:181`](../src/nodes/embedding_dump_node.hpp#L181) — `Unknown`
|
||
- [`src/nodes/embedding_dump_node.hpp:296`](../src/nodes/embedding_dump_node.hpp#L296) — `Unknown`
|
||
- [`src/nodes/face_aligner_node.hpp:8`](../src/nodes/face_aligner_node.hpp#L8) — `Unknown`
|
||
- [`src/nodes/face_detector_node.hpp:2`](../src/nodes/face_detector_node.hpp#L2) — `Unknown`
|
||
- [`src/nodes/face_detector_node.hpp:26`](../src/nodes/face_detector_node.hpp#L26) — `explicit FaceDetectorFunc(const Config& cfg)`
|
||
- [`src/nodes/face_detector_node.hpp:64`](../src/nodes/face_detector_node.hpp#L64) — `private:`
|
||
- [`src/nodes/face_tracker_node.hpp:2`](../src/nodes/face_tracker_node.hpp#L2) — `Unknown`
|
||
- [`src/nodes/frame_annotation_node.hpp:2`](../src/nodes/frame_annotation_node.hpp#L2) — `Unknown`
|
||
- [`src/nodes/identity_matcher_node.hpp:29`](../src/nodes/identity_matcher_node.hpp#L29) — `Unknown`
|
||
- [`src/nodes/identity_matcher_node.hpp:109`](../src/nodes/identity_matcher_node.hpp#L109) — `Unknown`
|
||
- [`src/nodes/identity_matcher_node.hpp:143`](../src/nodes/identity_matcher_node.hpp#L143) — `const GalleryCalibration& calibration() const { return cal_; }`
|
||
- [`src/nodes/identity_matcher_node.hpp:151`](../src/nodes/identity_matcher_node.hpp#L151) — `const GalleryCalibration& calibration() const { return cal_; }`
|
||
- [`src/nodes/identity_matcher_node.hpp:173`](../src/nodes/identity_matcher_node.hpp#L173) — `MatchedSceneFrame operator()(TrackedSceneFrame tf)`
|
||
- [`src/nodes/identity_matcher_node.hpp:213`](../src/nodes/identity_matcher_node.hpp#L213) — `std::vector<float> host_query(static_cast<size_t>(kMaxFaces) * 512);`
|
||
- [`src/nodes/identity_matcher_node.hpp:271`](../src/nodes/identity_matcher_node.hpp#L271) — `Unknown`
|
||
- [`src/nodes/identity_matcher_node.hpp:306`](../src/nodes/identity_matcher_node.hpp#L306) — `Unknown`
|
||
- [`src/nodes/result_sink_node.hpp:50`](../src/nodes/result_sink_node.hpp#L50) — `static constexpr std::string_view label() { return "result_sink"; }`
|
||
- [`src/nodes/result_sink_node.hpp:64`](../src/nodes/result_sink_node.hpp#L64) — `void set_pre_write_hook(std::function<void(double)> fn) { pre_write_ = std::move(fn); }`
|
||
- [`src/nodes/result_sink_node.hpp:164`](../src/nodes/result_sink_node.hpp#L164) — `struct ActorMeta { std::string name, imdb_id, tmdb_id, jellyfin_id; };`
|
||
- [`src/nodes/scene_boundary_annotator_node.hpp:2`](../src/nodes/scene_boundary_annotator_node.hpp#L2) — `Unknown`
|
||
- [`src/nodes/scene_detector_node.hpp:38`](../src/nodes/scene_detector_node.hpp#L38) — `static constexpr std::string_view label() { return "scene_detector"; }`
|
||
- [`src/nodes/scene_detector_node.hpp:72`](../src/nodes/scene_detector_node.hpp#L72) — `void operator()(Frame f)`
|
||
- [`src/nodes/scene_detector_node.hpp:95`](../src/nodes/scene_detector_node.hpp#L95) — `Unknown`
|
||
- [`src/nodes/scene_detector_node.hpp:137`](../src/nodes/scene_detector_node.hpp#L137) — `Unknown`
|
||
- [`src/nodes/scene_detector_node.hpp:191`](../src/nodes/scene_detector_node.hpp#L191) — `Unknown`
|
||
- [`src/nodes/scene_detector_node.hpp:196`](../src/nodes/scene_detector_node.hpp#L196) — `Unknown`
|
||
- [`src/nodes/scene_detector_node.hpp:232`](../src/nodes/scene_detector_node.hpp#L232) — `void write_output()`
|
||
- [`src/scene_boundaries.hpp:2`](../src/scene_boundaries.hpp#L2) — `Unknown`
|
||
- [`src/scene_boundaries.hpp:30`](../src/scene_boundaries.hpp#L30) — `public:`
|
||
- [`src/scene_preview.cpp:147`](../src/scene_preview.cpp#L147) — `Unknown`
|
||
- [`src/track_registry.hpp:2`](../src/track_registry.hpp#L2) — `Unknown`
|
||
- [`src/track_registry.hpp:47`](../src/track_registry.hpp#L47) — `Unknown`
|
||
- [`src/track_registry.hpp:145`](../src/track_registry.hpp#L145) — `public:`
|
||
- [`src/track_registry.hpp:191`](../src/track_registry.hpp#L191) — `void tick(double now) { std::lock_guard g(mu_); tick_locked(now); }`
|
||
- [`src/track_registry.hpp:222`](../src/track_registry.hpp#L222) — `std::lock_guard g(mu_);`
|
||
- [`src/types.hpp:62`](../src/types.hpp#L62) — `struct DetectedFace`
|
||
- [`src/types.hpp:189`](../src/types.hpp#L189) — `Unknown`
|
||
- [`tests/test_calibration.cpp:1`](../tests/test_calibration.cpp#L1) — `Unknown`
|
||
- [`tests/test_channel_bytes.cpp:3`](../tests/test_channel_bytes.cpp#L3) — `Unknown`
|
||
- [`tests/test_embedding_dump.cpp:1`](../tests/test_embedding_dump.cpp#L1) — `Unknown`
|
||
- [`tests/test_face_detector_node.cpp:3`](../tests/test_face_detector_node.cpp#L3) — `Unknown`
|
||
- [`tests/test_face_tracker.cpp:1`](../tests/test_face_tracker.cpp#L1) — `Unknown`
|
||
- [`tests/test_face_utils.cpp:1`](../tests/test_face_utils.cpp#L1) — `Unknown`
|
||
- [`tests/test_scene_detector_node.cpp:4`](../tests/test_scene_detector_node.cpp#L4) — `Unknown`
|
||
- [`tests/test_scene_detector_node.cpp:93`](../tests/test_scene_detector_node.cpp#L93) — `Unknown`
|
||
- [`tests/test_track_registry.cpp:376`](../tests/test_track_registry.cpp#L376) — `TrackRegistry reg(cfg(/*extinction=*/5.0), disc());`
|
||
- [`tests/test_track_registry.cpp:417`](../tests/test_track_registry.cpp#L417) — `TrackRegistry reg(cfg(/*extinction=*/5.0), disc());`
|
||
- [`scripts/ci/check_raw_cosine.py:4`](../scripts/ci/check_raw_cosine.py#L4) — `Unknown`
|
||
- [`scripts/optimizer/replay.py:70`](../scripts/optimizer/replay.py#L70) — `for i in range(len(ts)):`
|
||
|
||
### SR-003
|
||
|
||
**Locations:** 9
|
||
|
||
- [`src/audio_bindings.cpp:3`](../src/audio_bindings.cpp#L3) — `Unknown`
|
||
- [`src/audio_signature.cpp:3`](../src/audio_signature.cpp#L3) — `Unknown`
|
||
- [`src/audio_signature.hpp:4`](../src/audio_signature.hpp#L4) — `Unknown`
|
||
- [`src/config.hpp:20`](../src/config.hpp#L20) — `struct Config`
|
||
- [`src/kpn_bindings.cpp:261`](../src/kpn_bindings.cpp#L261) — `Unknown`
|
||
- [`src/nodes/result_sink_node.hpp:2`](../src/nodes/result_sink_node.hpp#L2) — `Unknown`
|
||
- [`src/nodes/result_sink_node.hpp:50`](../src/nodes/result_sink_node.hpp#L50) — `static constexpr std::string_view label() { return "result_sink"; }`
|
||
- [`src/nodes/result_sink_node.hpp:123`](../src/nodes/result_sink_node.hpp#L123) — `void write_output()`
|
||
- [`src/track_registry.hpp:47`](../src/track_registry.hpp#L47) — `Unknown`
|
||
|
||
### SR-005
|
||
|
||
**Locations:** 15
|
||
|
||
- [`src/config.hpp:245`](../src/config.hpp#L245) — `Unknown`
|
||
- [`src/gallery/gallery_store.hpp:15`](../src/gallery/gallery_store.hpp#L15) — `Unknown`
|
||
- [`src/gallery/track_gallery.hpp:136`](../src/gallery/track_gallery.hpp#L136) — `Unknown`
|
||
- [`src/gallery/track_gallery.hpp:161`](../src/gallery/track_gallery.hpp#L161) — `Unknown`
|
||
- [`src/gallery/track_gallery.hpp:183`](../src/gallery/track_gallery.hpp#L183) — `void set_owner(int track_id, int actor_idx)`
|
||
- [`src/gallery/track_gallery.hpp:193`](../src/gallery/track_gallery.hpp#L193) — `void set_owner(int track_id, int actor_idx)`
|
||
- [`src/gallery/track_gallery.hpp:233`](../src/gallery/track_gallery.hpp#L233) — `struct TrackState`
|
||
- [`src/gallery/track_gallery.hpp:331`](../src/gallery/track_gallery.hpp#L331) — `Unknown`
|
||
- [`src/nodes/identity_matcher_node.hpp:136`](../src/nodes/identity_matcher_node.hpp#L136) — `std::vector<float> host_gallery(static_cast<size_t>(n_gallery_) * 512);`
|
||
- [`src/nodes/identity_matcher_node.hpp:194`](../src/nodes/identity_matcher_node.hpp#L194) — `Unknown`
|
||
- [`src/nodes/identity_matcher_node.hpp:316`](../src/nodes/identity_matcher_node.hpp#L316) — `Unknown`
|
||
- [`src/nodes/identity_matcher_node.hpp:335`](../src/nodes/identity_matcher_node.hpp#L335) — `Unknown`
|
||
- [`tests/test_track_gallery.cpp:1`](../tests/test_track_gallery.cpp#L1) — `Unknown`
|
||
- [`tests/test_track_gallery.cpp:414`](../tests/test_track_gallery.cpp#L414) — `TrackGallery tg(expand_cfg());`
|
||
- [`scripts/make_jellyfin_gallery.py:4`](../scripts/make_jellyfin_gallery.py#L4) — `Unknown`
|
||
|
||
### UT-001
|
||
|
||
**Locations:** 3
|
||
|
||
- [`tests/test_track_registry.cpp:3`](../tests/test_track_registry.cpp#L3) — `Unknown`
|
||
- [`tests/test_track_registry.cpp:376`](../tests/test_track_registry.cpp#L376) — `TrackRegistry reg(cfg(/*extinction=*/5.0), disc());`
|
||
- [`tests/test_track_registry.cpp:417`](../tests/test_track_registry.cpp#L417) — `TrackRegistry reg(cfg(/*extinction=*/5.0), disc());`
|
||
|
||
### UT-002
|
||
|
||
**Locations:** 1
|
||
|
||
- [`tests/test_face_detector_node.cpp:3`](../tests/test_face_detector_node.cpp#L3) — `Unknown`
|
||
|
||
### UT-003
|
||
|
||
**Locations:** 2
|
||
|
||
- [`tests/test_scene_detector_node.cpp:4`](../tests/test_scene_detector_node.cpp#L4) — `Unknown`
|
||
- [`tests/test_scene_detector_node.cpp:93`](../tests/test_scene_detector_node.cpp#L93) — `Unknown`
|
||
|
||
### UT-004
|
||
|
||
**Locations:** 2
|
||
|
||
- [`tests/test_similarity.cpp:1`](../tests/test_similarity.cpp#L1) — `Unknown`
|
||
- [`tests/test_similarity.cpp:85`](../tests/test_similarity.cpp#L85) — `Unknown`
|
||
|
||
### UT-005
|
||
|
||
**Locations:** 3
|
||
|
||
- [`tests/test_track_gallery.cpp:1`](../tests/test_track_gallery.cpp#L1) — `Unknown`
|
||
- [`tests/test_track_gallery.cpp:364`](../tests/test_track_gallery.cpp#L364) — `TrackGallery tg(expand_cfg());`
|
||
- [`tests/test_track_gallery.cpp:414`](../tests/test_track_gallery.cpp#L414) — `TrackGallery tg(expand_cfg());`
|
||
|
||
### UT-101
|
||
|
||
**Locations:** 5
|
||
|
||
- [`tests/test_audio_signature.cpp:3`](../tests/test_audio_signature.cpp#L3) — `Unknown`
|
||
- [`tests/test_audio_signature.cpp:129`](../tests/test_audio_signature.cpp#L129) — `Unknown`
|
||
- [`tests/test_audio_signature.cpp:138`](../tests/test_audio_signature.cpp#L138) — `Unknown`
|
||
- [`tests/test_audio_signature.cpp:151`](../tests/test_audio_signature.cpp#L151) — `Unknown`
|
||
- [`tests/test_audio_signature.cpp:167`](../tests/test_audio_signature.cpp#L167) — `Unknown`
|
||
|
||
### UT-102
|
||
|
||
**Locations:** 5
|
||
|
||
- [`tests/test_audio_signature.cpp:3`](../tests/test_audio_signature.cpp#L3) — `Unknown`
|
||
- [`tests/test_audio_signature.cpp:201`](../tests/test_audio_signature.cpp#L201) — `TempWav w("short30");`
|
||
- [`tests/test_audio_signature.cpp:219`](../tests/test_audio_signature.cpp#L219) — `TempWav w("exact120");`
|
||
- [`tests/test_audio_signature.cpp:229`](../tests/test_audio_signature.cpp#L229) — `TempWav w("exact120");`
|
||
- [`tests/test_audio_signature.cpp:236`](../tests/test_audio_signature.cpp#L236) — `Unknown`
|
||
|
||
### UT-103
|
||
|
||
**Locations:** 2
|
||
|
||
- [`tests/test_audio_signature.cpp:3`](../tests/test_audio_signature.cpp#L3) — `Unknown`
|
||
- [`tests/test_audio_signature.cpp:263`](../tests/test_audio_signature.cpp#L263) — `TempWav w("centred300");`
|
||
|
||
### UT-104
|
||
|
||
**Locations:** 5
|
||
|
||
- [`tests/test_audio_signature.cpp:3`](../tests/test_audio_signature.cpp#L3) — `Unknown`
|
||
- [`tests/test_audio_signature.cpp:301`](../tests/test_audio_signature.cpp#L301) — `Unknown`
|
||
- [`tests/test_audio_signature.cpp:314`](../tests/test_audio_signature.cpp#L314) — `kNumBands * std::log10(1000.0 / kBandLoHz) / std::log10(kBandHiHz / kBandLoHz)));`
|
||
- [`tests/test_audio_signature.cpp:328`](../tests/test_audio_signature.cpp#L328) — `std::vector<float> a(kWindowSamples / 50);`
|
||
- [`tests/test_audio_signature.cpp:344`](../tests/test_audio_signature.cpp#L344) — `return base64_encode(reinterpret_cast<const std::uint8_t*>(s.data()), s.size());`
|
||
|
||
### UT-105
|
||
|
||
**Locations:** 1
|
||
|
||
- [`scripts/validation/test_audio_offset.py:5`](../scripts/validation/test_audio_offset.py#L5) — `The golden vector (IR-005) proves the *arithmetic* is identical in both`
|
||
|
||
### UT-106
|
||
|
||
**Locations:** 1
|
||
|
||
- [`scripts/validation/test_audio_offset.py:5`](../scripts/validation/test_audio_offset.py#L5) — `The golden vector (IR-005) proves the *arithmetic* is identical in both`
|
||
|
||
### UT-107
|
||
|
||
**Locations:** 1
|
||
|
||
- [`scripts/validation/test_audio_offset.py:5`](../scripts/validation/test_audio_offset.py#L5) — `The golden vector (IR-005) proves the *arithmetic* is identical in both`
|
||
|
||
### UT-108
|
||
|
||
**Locations:** 1
|
||
|
||
- [`scripts/validation/test_audio_offset.py:5`](../scripts/validation/test_audio_offset.py#L5) — `The golden vector (IR-005) proves the *arithmetic* is identical in both`
|
||
|
||
### UT-120
|
||
|
||
**Locations:** 1
|
||
|
||
- [`tests/test_benchmark.cpp:3`](../tests/test_benchmark.cpp#L3) — `Unknown`
|
||
|
||
### UT-121
|
||
|
||
**Locations:** 1
|
||
|
||
- [`tests/test_benchmark.cpp:3`](../tests/test_benchmark.cpp#L3) — `Unknown`
|
||
|
||
### UT-122
|
||
|
||
**Locations:** 1
|
||
|
||
- [`tests/test_benchmark.cpp:3`](../tests/test_benchmark.cpp#L3) — `Unknown`
|
||
|
||
### UT-123
|
||
|
||
**Locations:** 1
|
||
|
||
- [`tests/test_benchmark.cpp:3`](../tests/test_benchmark.cpp#L3) — `Unknown`
|
||
|
||
### UT-124
|
||
|
||
**Locations:** 1
|
||
|
||
- [`tests/test_benchmark.cpp:3`](../tests/test_benchmark.cpp#L3) — `Unknown`
|
||
|
||
### UT-130
|
||
|
||
**Locations:** 1
|
||
|
||
- [`tests/test_face_utils.cpp:1`](../tests/test_face_utils.cpp#L1) — `Unknown`
|
||
|
||
### UT-131
|
||
|
||
**Locations:** 1
|
||
|
||
- [`tests/test_face_utils.cpp:1`](../tests/test_face_utils.cpp#L1) — `Unknown`
|
||
|
||
### UT-132
|
||
|
||
**Locations:** 1
|
||
|
||
- [`tests/test_face_utils.cpp:1`](../tests/test_face_utils.cpp#L1) — `Unknown`
|
||
|
||
### UT-133
|
||
|
||
**Locations:** 1
|
||
|
||
- [`tests/test_face_utils.cpp:1`](../tests/test_face_utils.cpp#L1) — `Unknown`
|
||
|
||
### UT-134
|
||
|
||
**Locations:** 1
|
||
|
||
- [`tests/test_face_utils.cpp:1`](../tests/test_face_utils.cpp#L1) — `Unknown`
|
||
|
||
### UT-135
|
||
|
||
**Locations:** 1
|
||
|
||
- [`tests/test_face_utils.cpp:1`](../tests/test_face_utils.cpp#L1) — `Unknown`
|
||
|
||
### UT-136
|
||
|
||
**Locations:** 1
|
||
|
||
- [`tests/test_face_utils.cpp:1`](../tests/test_face_utils.cpp#L1) — `Unknown`
|
||
|
||
### UT-137
|
||
|
||
**Locations:** 1
|
||
|
||
- [`tests/test_face_utils.cpp:1`](../tests/test_face_utils.cpp#L1) — `Unknown`
|
||
|
||
### UT-138
|
||
|
||
**Locations:** 1
|
||
|
||
- [`tests/test_face_utils.cpp:1`](../tests/test_face_utils.cpp#L1) — `Unknown`
|
||
|
||
### UT-139
|
||
|
||
**Locations:** 1
|
||
|
||
- [`tests/test_embedding_dump.cpp:1`](../tests/test_embedding_dump.cpp#L1) — `Unknown`
|
||
|
||
### UT-140
|
||
|
||
**Locations:** 1
|
||
|
||
- [`tests/test_embedding_dump.cpp:1`](../tests/test_embedding_dump.cpp#L1) — `Unknown`
|
||
|
||
### UT-141
|
||
|
||
**Locations:** 1
|
||
|
||
- [`tests/test_embedding_dump.cpp:1`](../tests/test_embedding_dump.cpp#L1) — `Unknown`
|
||
|
||
### VR-001
|
||
|
||
**Locations:** 3
|
||
|
||
- [`src/nodes/embedding_dump_node.hpp:2`](../src/nodes/embedding_dump_node.hpp#L2) — `Unknown`
|
||
- [`tests/test_embedding_dump.cpp:1`](../tests/test_embedding_dump.cpp#L1) — `Unknown`
|
||
- [`tests/test_replay_fixtures.cpp:3`](../tests/test_replay_fixtures.cpp#L3) — `Unknown`
|
||
|
||
### VR-002
|
||
|
||
**Locations:** 6
|
||
|
||
- [`src/kpn_bindings.cpp:6`](../src/kpn_bindings.cpp#L6) — `Unknown`
|
||
- [`src/kpn_bindings.cpp:322`](../src/kpn_bindings.cpp#L322) — `Unknown`
|
||
- [`tests/test_replay_fixtures.cpp:3`](../tests/test_replay_fixtures.cpp#L3) — `Unknown`
|
||
- [`scripts/optimizer/replay.py:5`](../scripts/optimizer/replay.py#L5) — `Reads an embedding dump (scripts/optimizer/SCHEMA.md), feeds each frame as an`
|
||
- [`scripts/optimizer/replay.py:120`](../scripts/optimizer/replay.py#L120) — `ending at the last sighting (AR-013) -- and are byte-for-byte the same`
|
||
- [`scripts/optimizer/replay.py:194`](../scripts/optimizer/replay.py#L194) — `Unknown`
|
||
|
||
### VR-003
|
||
|
||
**Locations:** 1
|
||
|
||
- [`scripts/optimizer/second_score.py:5`](../scripts/optimizer/second_score.py#L5) — `Unknown`
|
||
|
||
### VR-004
|
||
|
||
**Locations:** 1
|
||
|
||
- [`scripts/validation/ground_truth.py:24`](../scripts/validation/ground_truth.py#L24) — `Unknown`
|
||
|
||
### VR-005
|
||
|
||
**Locations:** 1
|
||
|
||
- [`scripts/validation/min_face_size.py:5`](../scripts/validation/min_face_size.py#L5) — `Unknown`
|
||
|
||
### VR-010
|
||
|
||
**Locations:** 5
|
||
|
||
- [`src/nodes/embedding_dump_node.hpp:2`](../src/nodes/embedding_dump_node.hpp#L2) — `Unknown`
|
||
- [`src/nodes/embedding_dump_node.hpp:18`](../src/nodes/embedding_dump_node.hpp#L18) — `Unknown`
|
||
- [`src/nodes/embedding_dump_node.hpp:133`](../src/nodes/embedding_dump_node.hpp#L133) — `static constexpr std::string_view label() { return "embedding_dump"; }`
|
||
- [`src/nodes/embedding_dump_node.hpp:159`](../src/nodes/embedding_dump_node.hpp#L159) — `void operator()(EmbeddedSceneFrame ef)`
|
||
- [`src/nodes/embedding_dump_node.hpp:261`](../src/nodes/embedding_dump_node.hpp#L261) — `H5::H5File file(path_, H5F_ACC_TRUNC);`
|
||
|
||
### VR-011
|
||
|
||
**Locations:** 13
|
||
|
||
- [`src/kpn_bindings.cpp:6`](../src/kpn_bindings.cpp#L6) — `Unknown`
|
||
- [`src/kpn_bindings.cpp:70`](../src/kpn_bindings.cpp#L70) — `namespace nb = nanobind;`
|
||
- [`src/kpn_bindings.cpp:261`](../src/kpn_bindings.cpp#L261) — `Unknown`
|
||
- [`src/kpn_bindings.cpp:322`](../src/kpn_bindings.cpp#L322) — `Unknown`
|
||
- [`src/kpn_bindings.cpp:432`](../src/kpn_bindings.cpp#L432) — `Unknown`
|
||
- [`scripts/optimizer/replay.py:5`](../scripts/optimizer/replay.py#L5) — `Reads an embedding dump (scripts/optimizer/SCHEMA.md), feeds each frame as an`
|
||
- [`scripts/optimizer/replay.py:120`](../scripts/optimizer/replay.py#L120) — `ending at the last sighting (AR-013) -- and are byte-for-byte the same`
|
||
- [`scripts/optimizer/replay.py:174`](../scripts/optimizer/replay.py#L174) — `if i < len(frames):`
|
||
- [`scripts/optimizer/replay.py:194`](../scripts/optimizer/replay.py#L194) — `Unknown`
|
||
- [`scripts/optimizer/replay.py:242`](../scripts/optimizer/replay.py#L242) — `Unknown`
|
||
- [`scripts/optimizer/replay.py:268`](../scripts/optimizer/replay.py#L268) — `def write_raw_frames(truth: dict, raw_out: str) -> None:`
|
||
- [`scripts/optimizer/replay.py:316`](../scripts/optimizer/replay.py#L316) — `def main():`
|
||
- [`scripts/optimizer/test_sae_kpn.py:7`](../scripts/optimizer/test_sae_kpn.py#L7) — `Unknown`
|
||
|
||
### VR-013
|
||
|
||
**Locations:** 2
|
||
|
||
- [`experiments/xsource/resolution_sweep.py:4`](../experiments/xsource/resolution_sweep.py#L4) — `Unknown`
|
||
- [`experiments/xsource/verify_labels.py:4`](../experiments/xsource/verify_labels.py#L4) — `Unknown`
|
||
|
||
### VR-014
|
||
|
||
**Locations:** 1
|
||
|
||
- [`scripts/validation/test_audio_offset.py:5`](../scripts/validation/test_audio_offset.py#L5) — `The golden vector (IR-005) proves the *arithmetic* is identical in both`
|
||
|
||
### VR-015
|
||
|
||
**Locations:** 21
|
||
|
||
- [`src/backends/trt_backend.cpp:49`](../src/backends/trt_backend.cpp#L49) — `throw CudaError(std::string(what) + ": " + cudaGetErrorString(e));`
|
||
- [`src/benchmark.hpp:2`](../src/benchmark.hpp#L2) — `Unknown`
|
||
- [`src/benchmark.hpp:86`](../src/benchmark.hpp#L86) — `namespace sae::bench`
|
||
- [`src/benchmark.hpp:107`](../src/benchmark.hpp#L107) — `struct ChannelOccupancy`
|
||
- [`src/benchmark.hpp:141`](../src/benchmark.hpp#L141) — `struct NodeCost`
|
||
- [`src/benchmark.hpp:176`](../src/benchmark.hpp#L176) — `Unknown`
|
||
- [`src/benchmark.hpp:185`](../src/benchmark.hpp#L185) — `Unknown`
|
||
- [`src/benchmark.hpp:267`](../src/benchmark.hpp#L267) — `inline std::string verdict(const std::vector<NodeCost>& costs)`
|
||
- [`src/benchmark.hpp:315`](../src/benchmark.hpp#L315) — `class BenchmarkRecorder`
|
||
- [`src/benchmark.hpp:384`](../src/benchmark.hpp#L384) — `return attribute_cost(final_.nodes, channels(), final_.elapsed_s);`
|
||
- [`src/benchmark.hpp:465`](../src/benchmark.hpp#L465) — `void print(std::ostream& os, double film_sec) const`
|
||
- [`src/benchmark.hpp:472`](../src/benchmark.hpp#L472) — `void print(std::ostream& os, double film_sec) const`
|
||
- [`src/benchmark.hpp:522`](../src/benchmark.hpp#L522) — `else if (c.in_fill_pct > 50.0)`
|
||
- [`src/config.hpp:35`](../src/config.hpp#L35) — `Unknown`
|
||
- [`src/main.cpp:172`](../src/main.cpp#L172) — `static std::shared_ptr<SceneBoundaries> scene_stats;`
|
||
- [`src/main.cpp:265`](../src/main.cpp#L265) — `int main(int argc, char** argv)`
|
||
- [`src/main.cpp:351`](../src/main.cpp#L351) — `Unknown`
|
||
- [`src/main.cpp:425`](../src/main.cpp#L425) — `std::lock_guard<std::mutex> lk(event_mtx);`
|
||
- [`src/main.cpp:451`](../src/main.cpp#L451) — `Unknown`
|
||
- [`src/main.cpp:464`](../src/main.cpp#L464) — `Unknown`
|
||
- [`tests/test_benchmark.cpp:3`](../tests/test_benchmark.cpp#L3) — `Unknown`
|
||
|