From 9a80f36160125801b09d851301b240c9938122a2 Mon Sep 17 00:00:00 2001 From: bdchatham Date: Sat, 5 Sep 2026 09:16:58 -0700 Subject: [PATCH] fix(seidroid-review): read the finding counts where the driver writes them check.json carries `counts: {blocking, non_blocking, placeable, pre_existing}` beside a top-level `conclusion`. The step read the three counts at the root, where they are always null: $ jq -r '[(.blocking // "?"), (.non_blocking // "?"), (.pre_existing // "?"), (.conclusion // "?")] | @tsv' check.json ? ? ? success $ jq -r '[(.counts.blocking // "?"), ...] | @tsv' check.json 0 2 1 success Three consequences, all silent. The findings line never printed a number. The notice announced that the driver "predates check.json's blocking and non_blocking fields" against a driver that has them. And both disagreement warnings are guarded by `is_count "$blocking"`, so neither could ever fire -- the only automated cross-check between this comment and the check run was dead code, which matters most now that a clean conclusion can post an approval. The sentinel still does its job for a genuinely older driver: absent counts answer null at the new path too. Co-Authored-By: Claude Opus 5 (1M context) --- .github/workflows/seidroid-review.yml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/workflows/seidroid-review.yml b/.github/workflows/seidroid-review.yml index 91725c1..fdaa32c 100644 --- a/.github/workflows/seidroid-review.yml +++ b/.github/workflows/seidroid-review.yml @@ -1204,10 +1204,16 @@ jobs: # A driver older than these fields writes none of them and jq answers null. The # sentinel makes that a value is_count rejects, so an old driver publishes the # same comment with a shorter line that is still true. + # Under `counts`, which is where the driver writes them: check.json carries + # `counts: {blocking, non_blocking, placeable, pre_existing}` beside a + # top-level `conclusion`. Read at the ROOT they answered null on every run, so + # the line never printed a number, the notice below claimed the driver predates + # fields it has, and neither disagreement warning could fire -- the one automated + # cross-check between this comment and the check run was dead code. blocking="" non_blocking="" pre_existing="" conclusion="" if [ -s "${CHECK:-}" ]; then - read -r blocking non_blocking pre_existing conclusion < <(jq -r '[(.blocking // "?"), - (.non_blocking // "?"), (.pre_existing // "?"), (.conclusion // "?")] | @tsv' \ + read -r blocking non_blocking pre_existing conclusion < <(jq -r '[(.counts.blocking // "?"), + (.counts.non_blocking // "?"), (.counts.pre_existing // "?"), (.conclusion // "?")] | @tsv' \ "$CHECK" 2>/dev/null) || true fi if is_count "$blocking" && is_count "$non_blocking"; then