Trace the eye reading to FR-CULL-8a and the chip to FR-CULL-13

The register grew both clauses the same day this was built: FR-CULL-8a is
the per-face state the reading is, and FR-CULL-13 is the rule that a
signal is shown and filtered and never writes a judgement. The tags,
faces.md §17 and catalog.md now say which is which; FR-CULL-8a records
what of it is built, and that its third model is under the InsightFace
grant by the same decision as the pair.
This commit is contained in:
2026-09-19 14:06:59 +02:00
parent d706c12d77
commit 85cc2b1dcc
16 changed files with 36 additions and 33 deletions
+1 -1
View File
@@ -121,7 +121,7 @@ pub struct DetectedFace {
/// no length left to read, so the only way to measure one is to embed it
/// again (schema V14).
pub quality: Option<f32>,
/// TRACES: FR-CULL-13
/// TRACES: FR-CULL-8a
/// What the eyes are doing — P(open) per eye and P(sunglasses), read by
/// `dr_face::classify` from the same aligned crop. `None` where the eye
/// models were not present at indexing, or the face came from a peer
+2 -2
View File
@@ -752,7 +752,7 @@ CREATE TABLE IF NOT EXISTS xmp_conflicts (
"#;
const V17: &str = r#"
-- TRACES: FR-CULL-13 | NFR-P9
-- TRACES: FR-CULL-8a | FR-CULL-13 | NFR-P9
-- The eyes-open filter's index, and a lesson about where a column lands.
--
-- The people filter is a correlated EXISTS over `faces` per image, and it
@@ -774,7 +774,7 @@ CREATE INDEX IF NOT EXISTS faces_eyes ON faces(
);
"#;
// V16 -- TRACES: FR-CULL-13
// V16 -- TRACES: FR-CULL-8a
//
// What each face's eyes are doing: for each eye P(open), the source pixels
// across its box and the sharpness of the patch the classifier saw; and
+1 -1
View File
@@ -1,4 +1,4 @@
//! TRACES: FR-CULL-13
//! TRACES: FR-CULL-8a
//! The two small classifiers behind a face's eye state (docs/faces.md §17).
//!
//! **OCEC** — *open closed eyes classification*, Hyodo 2025 — reads one
+1 -1
View File
@@ -1,4 +1,4 @@
//! TRACES: FR-CULL-13
//! TRACES: FR-CULL-8a
//! What a face's eyes are doing, and how the numbers behind it are read.
//!
//! Model-free: the models in [`crate::classify`] produce the numbers, and
+1 -1
View File
@@ -1,4 +1,4 @@
//! TRACES: FR-CULL-13
//! TRACES: FR-CULL-8a
//! Dense facial landmarks — InsightFace's `2d106det` (docs/faces.md §17.2).
//!
//! SCRFD's five points place a face; they do not place an eye. Its eye
+1 -1
View File
@@ -4,7 +4,7 @@
//! landmarks, a confidence and a 512-d embedding (FR-CULL-8) — and then the
//! arithmetic that turns embeddings into people (FR-CULL-9, FR-CULL-10). Two
//! more, optional, read each face's eyes and whether sunglasses hide them
//! (FR-CULL-13, [`classify`] and [`eyes`]).
//! (FR-CULL-8a, [`classify`] and [`eyes`]).
//!
//! Like `dr-segment`, this crate is **device-free**: no GPU adapter, no
//! Slint, nothing that needs a display. Unlike `dr-segment`, it carries **no
+1 -1
View File
@@ -126,7 +126,7 @@ pub struct StoredFilter {
/// does not derive serde — and "all of them" is the only thing the second
/// variant means.
pub people_all: bool,
/// TRACES: FR-CULL-13
/// TRACES: FR-CULL-8a | FR-CULL-13
/// Whether the grid was narrowed to photographs with nobody blinking.
/// Travels: it is a narrowing like `local_only`, and a record without it
/// — from a build before it existed — reads as off.