From a3a1e1332145a07f23d41595c46b1dfdca6e30dc Mon Sep 17 00:00:00 2001 From: Christopher Sellers <1@christophersellers.com> Date: Wed, 28 Oct 2026 05:05:40 -0700 Subject: [PATCH 1/5] fix(copy): SEL-607 qualify E11 product/import claims Qualify advisory enforcement and checked-export wording on the product page, mark Sensitech experimental / not on the production allowlist, and remove XLSX claims from Data Import Hub + readiness copy (CSV only). Linear: https://linear.app/sellers01/issue/SEL-607/e11-diligence-qualify-product-page-data-import-hub-claims-that-exceed --- frontend/src/__tests__/pages/product.test.tsx | 2 +- frontend/src/app/product/page.tsx | 12 ++++++------ .../data-import/components/DataImportClient.tsx | 14 +++++++------- frontend/src/lib/customer-readiness.ts | 6 +++--- 4 files changed, 17 insertions(+), 17 deletions(-) diff --git a/frontend/src/__tests__/pages/product.test.tsx b/frontend/src/__tests__/pages/product.test.tsx index 9b520db99..d201df8b8 100644 --- a/frontend/src/__tests__/pages/product.test.tsx +++ b/frontend/src/__tests__/pages/product.test.tsx @@ -23,6 +23,6 @@ describe("ProductPage Inflow impact illustration", () => { expect(screen.getByRole("heading", { name: "Fix before evidence" })).toBeInTheDocument(); expect(screen.getByRole("heading", { name: "Persist and prove" })).toBeInTheDocument(); expect(screen.getByRole("heading", { name: "Tenant-scoped evidence" })).toBeInTheDocument(); - expect(screen.getByRole("heading", { name: "Export-ready package" })).toBeInTheDocument(); + expect(screen.getByRole("heading", { name: "Export package from stored records" })).toBeInTheDocument(); }); }); diff --git a/frontend/src/app/product/page.tsx b/frontend/src/app/product/page.tsx index 5c95163c2..6fa2f6147 100644 --- a/frontend/src/app/product/page.tsx +++ b/frontend/src/app/product/page.tsx @@ -57,8 +57,8 @@ const inflowEffects = [ const engineResults = [ { - title: "Blocked or corrected", - detail: "Bad supplier data is routed back through the fix queue instead of polluting the evidence ledger.", + title: "Flagged for fix", + detail: "Incomplete or inconsistent supplier rows are surfaced in the fix queue so operators can correct them before treating them as production evidence. Rule blocking is advisory in production today; rejection is not guaranteed.", icon: PackageX, }, { @@ -67,8 +67,8 @@ const engineResults = [ icon: Lock, }, { - title: "Export-ready package", - detail: "Coverage and completeness checklist results, recall posture, and FDA/retailer exports use checked records only.", + title: "Export package from stored records", + detail: "Coverage and completeness checklist results, recall posture, and FDA/retailer export packages are built from records stored for the tenant. RegEngine helps with recordkeeping; it does not certify FDA acceptance or guaranteed compliance.", icon: FileOutput, }, ]; @@ -105,7 +105,7 @@ function InflowImpactDiagram() {

Raw supplier feed

- CSV/XLSX upload or supplier portal, the JSON events API, or EPCIS-shaped records (EPCIS in Preview) + CSV upload or the JSON events API (Live). EPCIS-shaped records are Preview. Other feeds are Beta.

@@ -161,7 +161,7 @@ function InflowImpactDiagram() {

Commit gate says yes

Persist and prove

- RegEngine promotes checked records into tenant-scoped evidence, then uses that evidence for scores and exports. + RegEngine can promote records that passed the commit gate into tenant-scoped evidence and use that stored evidence for scores and export packages. Enforcement remains advisory unless RULES_ENGINE_ENFORCE is explicitly set and the route opts in.

diff --git a/frontend/src/app/tools/data-import/components/DataImportClient.tsx b/frontend/src/app/tools/data-import/components/DataImportClient.tsx index 04d60bff6..f18611390 100644 --- a/frontend/src/app/tools/data-import/components/DataImportClient.tsx +++ b/frontend/src/app/tools/data-import/components/DataImportClient.tsx @@ -182,19 +182,19 @@ export function DataImportClient() { return (