§6.3.4 가 요구하는 검사를 정리하면 축이 셋이다.
RAW ──▶ ① 범위 물리적으로 가능한 값인가 예: 실내 −80 ℃ 는 불가능
──▶ ② 신선도 갱신이 멈추지 않았는가 TBD-022 max age
──▶ ③ 복구 이력 방금 고장났다 살아난 건 아닌가 TBD-038
──▶ 정상 정보로 사용 가능
세 번째 축이 자주 빠진다
센서가 간헐적으로 고장 나면 값이 정상/이상을 오간다. 정상값 하나가 오는 순간 바로 복구로 판정하면 기능이 켜졌다 꺼졌다를 반복한다.
TBD-038 이 정확히 이걸 다루고, **"TBD-022 데이터 age 와 별개"**라고 단서를 단 게 핵심이다.
진입은 1회, 복구는 N회
진입(불신) 즉시 — 이상값 1회로 바로 불신
복구(신뢰) 보수적 — 연속 N회 정상이어야
이 비대칭이 안전 설계의 기본이다. 위험 쪽으로는 민감하게, 안전 쪽으로는 둔감하게. 진입·해제 비대칭 이 이 문서 전체에서 반복되는 패턴이다.
판정과 갱신을 분리해야 한다
age 는 시간이 흐르면 저절로 나빠지므로 값이 들어올 때가 아니라 쓸 때 판정해야 한다. feed() 에서만 판정하면 갱신이 멈춘 신호가 영원히 정상으로 남는다.
void trust_feed(trusted_t *t, int32_t raw); /* 수신 시 */
trust_t trust_eval(const trusted_t *t); /* 사용 직전 — age 는 여기서 */