From 69929cf971172d62edf9b1b25ef8e5f089c04872 Mon Sep 17 00:00:00 2001 From: Christopher Sellers <1@christophersellers.com> Date: Fri, 23 Oct 2026 22:48:14 -0700 Subject: [PATCH 1/5] fix(frontend): remove dead Inflow Lab mock export links and stop /proof verifier prefetch 404 Signed-off-by: Christopher Sellers <1@christophersellers.com> --- frontend/src/app/proof/page.tsx | 6 ++-- .../inflow-lab/components/InflowLabClient.tsx | 30 ------------------- 2 files changed, 3 insertions(+), 33 deletions(-) diff --git a/frontend/src/app/proof/page.tsx b/frontend/src/app/proof/page.tsx index 5b4235333..fc73f1ffb 100644 --- a/frontend/src/app/proof/page.tsx +++ b/frontend/src/app/proof/page.tsx @@ -112,7 +112,7 @@ export default function ProofPage() { @@ -176,9 +176,9 @@ export default function ProofPage() { verify_chain.py reads the manifest, recomputes each declared file's SHA-256, and rebuilds the Merkle root using the same algorithm RegEngine ships in services/shared/merkle_tree.py. If those values disagree with the included manifest, the script exits non-zero.

diff --git a/frontend/src/app/tools/inflow-lab/components/InflowLabClient.tsx b/frontend/src/app/tools/inflow-lab/components/InflowLabClient.tsx index 6a39b8d4a..7145711de 100644 --- a/frontend/src/app/tools/inflow-lab/components/InflowLabClient.tsx +++ b/frontend/src/app/tools/inflow-lab/components/InflowLabClient.tsx @@ -1279,8 +1279,6 @@ export function InflowLabClient({ mode = "standalone" }: InflowLabClientProps) { setIsTutorialOpen(true); }; - const csvExportHref = `${servicePath(`/api/mock/regengine/export/fda-request?preset=${exportPreset}&traceability_lot_code=${encodeURIComponent(traceInput)}&start_date=${startDate}&end_date=${endDate}`)}`; - const epcisExportHref = `${servicePath(`/api/mock/regengine/export/epcis?traceability_lot_code=${encodeURIComponent(traceInput)}&start_date=${startDate}&end_date=${endDate}`)}`; const engineConnected = Boolean(health?.ok && !serviceError); const connectionLabel = engineConnected ? "Connection ready" : serviceError ? "Connection needs attention" : "Checking connection"; const connectionTone = engineConnected ? "border-emerald-200 bg-emerald-50 text-emerald-700" : "border-amber-200 bg-amber-50 text-amber-800"; @@ -1811,17 +1809,6 @@ export function InflowLabClient({ mode = "standalone" }: InflowLabClientProps) {

Preview test CSV or EPCIS JSON-LD filters. Formal production records are generated only from imported production data.

-
- - - Preview test EPCIS - -
@@ -2375,17 +2362,6 @@ export function InflowLabClient({ mode = "standalone" }: InflowLabClientProps) {

{exportReadyCount} lots are test complete. {exceptionLots.length} exception lots remain visible. Formal production records require signed-in imports.

-
- - - Preview test EPCIS - -
@@ -2586,9 +2562,6 @@ export function InflowLabClient({ mode = "standalone" }: InflowLabClientProps) {

Includes {exportReadyCount} test-complete lots. {exceptionLots.length} exception lots are flagged for review. Formal production records are generated only from imported production data.

-
@@ -2596,9 +2569,6 @@ export function InflowLabClient({ mode = "standalone" }: InflowLabClientProps) {

Uses the same lot and date filters for interoperability testing. It is not production evidence.

-
From 540816a2ba41d2dff5d8e93deae3ab129fcbf25b Mon Sep 17 00:00:00 2001 From: Christopher Sellers <1@christophersellers.com> Date: Fri, 23 Oct 2026 22:50:39 -0700 Subject: [PATCH 2/5] fix(frontend): remove leftover Inflow Lab test handoff preview card Signed-off-by: Christopher Sellers <1@christophersellers.com> --- .../app/tools/inflow-lab/components/InflowLabClient.tsx | 7 ------- 1 file changed, 7 deletions(-) diff --git a/frontend/src/app/tools/inflow-lab/components/InflowLabClient.tsx b/frontend/src/app/tools/inflow-lab/components/InflowLabClient.tsx index 7145711de..db2339f28 100644 --- a/frontend/src/app/tools/inflow-lab/components/InflowLabClient.tsx +++ b/frontend/src/app/tools/inflow-lab/components/InflowLabClient.tsx @@ -1803,13 +1803,6 @@ export function InflowLabClient({ mode = "standalone" }: InflowLabClientProps) { )} - -
-

Test handoff preview

-

- Preview test CSV or EPCIS JSON-LD filters. Formal production records are generated only from imported production data. -

-
From 440152e5f5613d814feabb383fae6861b216d202 Mon Sep 17 00:00:00 2001 From: Christopher Sellers <1@christophersellers.com> Date: Fri, 23 Oct 2026 23:03:22 -0700 Subject: [PATCH 3/5] fix(frontend): remove dead Inflow Lab export filters and preview cards, unused mock export routes, and /proof zip prefetch Signed-off-by: Christopher Sellers <1@christophersellers.com> --- .../src/app/api/inflow-lab/[...path]/route.ts | 8 +- frontend/src/app/proof/page.tsx | 4 +- .../inflow-lab/components/InflowLabClient.tsx | 76 +------------------ 3 files changed, 4 insertions(+), 84 deletions(-) diff --git a/frontend/src/app/api/inflow-lab/[...path]/route.ts b/frontend/src/app/api/inflow-lab/[...path]/route.ts index f7b998cd3..21258c860 100644 --- a/frontend/src/app/api/inflow-lab/[...path]/route.ts +++ b/frontend/src/app/api/inflow-lab/[...path]/route.ts @@ -13,7 +13,7 @@ const AUTH_SESSION_COOKIE = "__Host-regengine_session"; const ALLOWED_METHODS = new Set(["GET", "POST"]); const JSON_CONTENT_TYPES = ["application/json", "application/problem+json"]; -type BoundaryMode = "simulator" | "mock-export" | "live-export"; +type BoundaryMode = "simulator" | "live-export"; type EndpointContract = { name: "health" | "status" | "records" | "lineage" | "run" | "reset" | "fixture" | "export"; boundary: BoundaryMode; @@ -118,12 +118,6 @@ function endpointContract(path: string, method: string): EndpointContract | null if (method === "POST" && path === "/api/simulate/reset") { return { name: "reset", boundary: "simulator", stream: false }; } - if (method === "GET" && path === "/api/mock/regengine/export/fda-request") { - return { name: "export", boundary: "mock-export", stream: true }; - } - if (method === "GET" && path === "/api/mock/regengine/export/epcis") { - return { name: "export", boundary: "mock-export", stream: true }; - } if (method === "GET" && path === "/api/regengine/export/fda-request") { return { name: "export", boundary: "live-export", stream: true }; } diff --git a/frontend/src/app/proof/page.tsx b/frontend/src/app/proof/page.tsx index fc73f1ffb..553b91646 100644 --- a/frontend/src/app/proof/page.tsx +++ b/frontend/src/app/proof/page.tsx @@ -204,9 +204,9 @@ export default function ProofPage() { audit-bundle-tampered.zip contains a changed CSV while the manifest's declared hash remains unchanged. Run the verifier against it and watch it exit non-zero. This demonstrates detection of changed file bytes against an unchanged manifest; replacing both the file and manifest is outside this check.

diff --git a/frontend/src/app/tools/inflow-lab/components/InflowLabClient.tsx b/frontend/src/app/tools/inflow-lab/components/InflowLabClient.tsx index db2339f28..f5831362a 100644 --- a/frontend/src/app/tools/inflow-lab/components/InflowLabClient.tsx +++ b/frontend/src/app/tools/inflow-lab/components/InflowLabClient.tsx @@ -10,7 +10,6 @@ import { CheckCircle2, ClipboardList, Database, - FileJson, FileSpreadsheet, GitBranch, GraduationCap, @@ -830,9 +829,6 @@ export function InflowLabClient({ mode = "standalone" }: InflowLabClientProps) { const [fixture, setFixture] = useState("leafy_greens_trace"); const [deliveryMode, setDeliveryMode] = useState("mock"); const [source, setSource] = useState("codex-simulator"); - const [exportPreset, setExportPreset] = useState("all_records"); - const [startDate, setStartDate] = useState("2026-04-26"); - const [endDate, setEndDate] = useState("2026-04-27"); const [feederCsv, setFeederCsv] = useState(FEEDER_SAMPLE_CSV); const [feederResult, setFeederResult] = useState(null); const [feederError, setFeederError] = useState(null); @@ -2325,37 +2321,12 @@ export function InflowLabClient({ mode = "standalone" }: InflowLabClientProps) {

Export filters

- - -
- -
-

Test handoff preview

-

- {exportReadyCount} lots are test complete. {exceptionLots.length} exception lots remain visible. Formal production records require signed-in imports. -

-
@@ -2548,22 +2519,6 @@ export function InflowLabClient({ mode = "standalone" }: InflowLabClientProps) { Selected lot is an exception. Test-complete counts include only complete mock lots; this lot stays visible until missing CTE/KDE evidence or delivery issues are resolved. )} -
-
- -

Test CSV preview

-

- Includes {exportReadyCount} test-complete lots. {exceptionLots.length} exception lots are flagged for review. Formal production records are generated only from imported production data. -

-
-
- -

Test EPCIS preview

-

- Uses the same lot and date filters for interoperability testing. It is not production evidence. -

-
-
)} @@ -2788,7 +2743,7 @@ export function InflowLabClient({ mode = "standalone" }: InflowLabClientProps) { - {isStandalone ? ( + {isStandalone && ( <> @@ -2812,35 +2767,6 @@ export function InflowLabClient({ mode = "standalone" }: InflowLabClientProps) { - ) : ( - - - - - Test preview filters - - - - - - - - )} From 4b9bb4015d9cf45e9749a5a93a9c31faae48843d Mon Sep 17 00:00:00 2001 From: Christopher Sellers <1@christophersellers.com> Date: Fri, 23 Oct 2026 23:12:57 -0700 Subject: [PATCH 4/5] fix(frontend): drop empty Inflow Lab Test previews tab, stale date window copy, and half width lot filter Signed-off-by: Christopher Sellers <1@christophersellers.com> --- .../inflow-lab/components/InflowLabClient.tsx | 20 +++++-------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/frontend/src/app/tools/inflow-lab/components/InflowLabClient.tsx b/frontend/src/app/tools/inflow-lab/components/InflowLabClient.tsx index f5831362a..45a267a11 100644 --- a/frontend/src/app/tools/inflow-lab/components/InflowLabClient.tsx +++ b/frontend/src/app/tools/inflow-lab/components/InflowLabClient.tsx @@ -585,8 +585,8 @@ function getLotFixGuidance(lot: { }; } -const standaloneTabs = ["Control room", "Data feeder", "Fix queue", "Scenarios", "Suppliers", "Lots", "Lineage", "Test previews", "Event log", "Diagnostics"]; -const dashboardTabs = ["Overview", "Data feeder", "Fix queue", "Lots", "Lineage", "Test previews", "Record log", "Diagnostics"]; +const standaloneTabs = ["Control room", "Data feeder", "Fix queue", "Scenarios", "Suppliers", "Lots", "Lineage", "Event log", "Diagnostics"]; +const dashboardTabs = ["Overview", "Data feeder", "Fix queue", "Lots", "Lineage", "Record log", "Diagnostics"]; const lotCodes = [ "00614141000012-20260426-000001", @@ -1245,7 +1245,7 @@ export function InflowLabClient({ mode = "standalone" }: InflowLabClientProps) { const prepareExport = () => { setRunStage("exported"); - setActiveTab("Test previews"); + setActiveTab("Lots"); }; const startMachineDemo = async () => { @@ -1702,7 +1702,7 @@ export function InflowLabClient({ mode = "standalone" }: InflowLabClientProps) {

{exportReadinessLabel}

- Test previews use the selected lot and date window. Formal production records come later from signed-in imports. + Test completeness uses the selected lot. Formal production records come later from signed in imports.

@@ -2320,7 +2320,7 @@ export function InflowLabClient({ mode = "standalone" }: InflowLabClientProps) {

Export filters

-
+
)} - {activeTab === "Test previews" && ( -
- {!selectedIsExportReady && ( -
- Selected lot is an exception. Test-complete counts include only complete mock lots; this lot stays visible until missing CTE/KDE evidence or delivery issues are resolved. -
- )} -
- )} - {activeTab === "Diagnostics" && (
{!isStandalone && ( From d636243f48d25ddcdc379551faad37fee877bec7 Mon Sep 17 00:00:00 2001 From: Christopher <131207452+PetrefiedThunder@users.noreply.github.com> Date: Fri, 23 Oct 2026 23:19:54 -0700 Subject: [PATCH 5/5] fix(frontend): retitle Inflow Lab lot filter card to Lot code (#3571) Signed-off-by: Christopher Sellers <1@christophersellers.com> --- .../src/app/tools/inflow-lab/components/InflowLabClient.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/frontend/src/app/tools/inflow-lab/components/InflowLabClient.tsx b/frontend/src/app/tools/inflow-lab/components/InflowLabClient.tsx index 45a267a11..acea666b9 100644 --- a/frontend/src/app/tools/inflow-lab/components/InflowLabClient.tsx +++ b/frontend/src/app/tools/inflow-lab/components/InflowLabClient.tsx @@ -6,7 +6,6 @@ import { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } fr import { AlertTriangle, ArrowDownToLine, - CalendarDays, CheckCircle2, ClipboardList, Database, @@ -20,6 +19,7 @@ import { RotateCcw, Search, SlidersHorizontal, + Tag, Truck, Upload, } from "lucide-react"; @@ -2317,8 +2317,8 @@ export function InflowLabClient({ mode = "standalone" }: InflowLabClientProps) {
- -

Export filters

+ +

Lot code