From 1ff00a1f7cee9e93826594ed174cbb4987ef7e57 Mon Sep 17 00:00:00 2001 From: SecureCloudGroup Date: Wed, 14 Oct 2026 09:35:52 -0400 Subject: [PATCH] fix(ni): a building card wears no "Interpreted" chip A flow shell (ni_flow._empty_shell_spec) carries a `model` placeholder source but has read nothing, yet the board row derived `interpreted` from the source type, so the consent pause and an honest stop both wore "This card includes a language model's reading of the data". The row now says false while spec._shell is set; the intake test pins it on the board. --- app/smartbrain_3000/ni_routes.py | 6 +++++- app/tests/test_ni_routes.py | 4 ++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/app/smartbrain_3000/ni_routes.py b/app/smartbrain_3000/ni_routes.py index 3e255ae3..02a96706 100644 --- a/app/smartbrain_3000/ni_routes.py +++ b/app/smartbrain_3000/ni_routes.py @@ -146,7 +146,11 @@ def _board_row(store: ni.NIStore, item: dict, *, slot = "preview" if item["state"] == "draft" else (snap.get("slot") if snap else None) built_from = item["spec"].get("_built_from") or {} source_type = (item["spec"].get("source") or {}).get("type") - interpreted = source_type == "model" or ni._spec_has_llm_stage(item["spec"]) + # A flow SHELL (ni_flow._empty_shell_spec) carries a `model` placeholder source but has read + # nothing: no "Interpreted" chip while it builds (found 2026-10-14 recording the NI clip — + # the consent pause and an honest stop both wore the chip). + interpreted = item["spec"].get("_shell") is not True \ + and (source_type == "model" or ni._spec_has_llm_stage(item["spec"])) update_flag, gone_flag = _template_update_flags(item, library_index, library_pack_id, spec_hashes) row = { diff --git a/app/tests/test_ni_routes.py b/app/tests/test_ni_routes.py index bf1f9371..4c18508a 100644 --- a/app/tests/test_ni_routes.py +++ b/app/tests/test_ni_routes.py @@ -1204,6 +1204,10 @@ def test_intake_creates_shell_and_starts_worker(client: TestClient, assert item["spec"].get("_shell") is True entries = client.get("/api/audit").json()["entries"] assert any(e["tool"] == "ni_intake" for e in entries) + # the shell's placeholder source is a `model` no-op that has read nothing: no "Interpreted" + # chip on the board while the card builds (2026-10-14) + row = next(r for r in client.get("/api/ni/board").json()["items"] if r["id"] == iid) + assert row["interpreted"] is False def test_intake_duplicate_title_409s_naming_the_card(client: TestClient,