From c599e07d4b3447cb8d0fb7b931d223b0a8a9e051 Mon Sep 17 00:00:00 2001 From: Duncan Tourolle Date: Thu, 6 Aug 2026 20:54:45 +0200 Subject: [PATCH] =?UTF-8?q?chore:=20update=20KPN=20=E2=80=94=20a=20re-offe?= =?UTF-8?q?red=20sentinel=20is=20not=20data=20loss?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Picks up c9aa246, which the SuperHero run turned up. 139bfbb made the channel refuse a sentinel offered while one was still pending — right, and it fixes a real use-after-free — but it recorded the refusal as a drop and reported it as an overflow. frame_source emits EOF once and then returns it forever (frame_source_node.hpp:76), so the token is re-offered on every firing. This pipeline's own loss detector therefore fired on a clean run: [main] ERROR: frames were dropped (channel overflow): frame_source: 2 scene_annotate: 1 [main] The output would describe footage that was never analysed. Refusing to report success. exit 2, with nothing dropped and every frame analysed. A loss detector that cries loss on a clean run is worse than none, because the next real one gets ignored. Measured on SuperHero-1 at --fps 5 --scene-detect after the fix: exit 0, no drops, and outran() 0 — the AR-004 join-depth derivation (59a2927) holds at 95 slots where it was pinned at 256. TRACES: AR-004 | SR-002 --- external/KPN | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/external/KPN b/external/KPN index 27f8844..c9aa246 160000 --- a/external/KPN +++ b/external/KPN @@ -1 +1 @@ -Subproject commit 27f884496d03a88e66b6592c3a457486ccc00c4c +Subproject commit c9aa246322b9960ca94cee397e0a6d9f3f9aa96e