Manufacturing Intelligence

RD-03 · Center Point Labs · Research white paper · Version 1.0 · 14 September 2026

Abstract

Manufacturing Intelligence is an ongoing research project and working capabilities demonstration: a way to investigate how relational manufacturing records can become useful operational answers without obscuring the data underneath. A real PostgreSQL database contains 5,412,559 synthetic operational records across 24 linked tables. The console connects order exploration, lot genealogy, material risk, quality evidence and bounded CSV integration. It is not a packaged ERP, a production deployment for a manufacturer, or a certified quality system.

Cypress Bend Manufacturing and all operational data in this demonstration are fictional. No real manufacturer's operational data or proprietary specifications are presented. Record volume is measured; commercial impact is not.

1. Architecture and research method

The browser runs a React 19 / TypeScript console built with Vite. A Node / Express 5 API issues parameterized PostgreSQL queries through a 12-connection pool. The seven areas are Overview, Order explorer, Lot traceability, Material risk, Quality, Dataset and CSV workspace. Keyset pagination bounds order retrieval; virtualization bounds rendered rows. Charts drill into records instead of substituting visual aggregates for traceable evidence.

The deployed topology is browser → HTTPS/Caddy → nonroot, read-only Node application → private Unix-domain socket → PostgreSQL 16. PostgreSQL has no network interface or published TCP port. Reference SELECT privileges are separated from visitor-workspace writes. The public host is an existing DigitalOcean Ubuntu 24.04.4 server with two shared vCPUs and approximately 4 GiB RAM; it is not the Ryzen workstation used for the detailed benchmark below. The application has a 512 MiB memory limit and the database 2 GiB. Bounded requests, timeouts, expiry and resource monitoring limit a public demonstration's working set; they do not establish enterprise availability or security certification.

The method is to define a causal fixture, generate deterministic records, validate relational and business invariants, build explicit query paths, inspect execution plans, and measure distinct database/API/browser boundaries. The completed reference passed 34 SQL integrity checks. Twelve API integration suites cover queries and real database-backed visitor workflows. Saved browser evidence includes desktop and touch-emulated mobile interaction, including actual CSV upload/download and dropped-response recovery. These are engineering checks, not an independent audit.

Materialized snapshots serve named aggregate views and carry refresh metadata. They are deliberately distinct from live base-table joins. No claim is made that every chart scans 5.4 million records on each request. The reference is frozen, with business-record timestamps spanning 2020-01-01 through 2026-01-10 UTC; it does not simulate a continuously changing factory.

2. Data model and provenance

Cypress Bend Manufacturing is fictional. No real customer, supplier, personnel, address, proprietary specification or certification data is used. The 180-person company size is a planning assumption, not a generated employee table.

Operational footprint

The exact immutable reference manifest is reference.manifest: 5,412,559 linked records in 24 operational tables. This count excludes the manifest, refresh metadata, materialized aggregate copies and all visitor data. Seed 73013, generator 1.2.0, fixed dates and deterministic integer arithmetic; no wall-clock dates in business records. The manifest/refresh timestamps and visitor IDs are intentionally nondeterministic metadata.

Table Exact rows
facilities 2
work_centers 36
customers 300
suppliers 220
parts 25,000
part_revisions 40,000
bom_lines 150,000
supplier_parts 45,000
sales_orders 60,000
sales_order_lines 180,000
work_orders 100,000
operations 600,000
production_events 1,500,000
purchase_orders 30,000
purchase_order_lines 120,000
lots 100,000
inventory_movements 1,000,000
reservations 100,000
material_consumption 600,000
inspections 100,000
measurements 500,000
nonconformances 2,001
shipments 80,000
shipment_lines 80,000

Causal process rules

Customer → Order / frozen revision → Work order → Operations → Finished lot → Shipment
Supplier → Purchase line → Raw lot → Consumption → Operations
Lot ledger − Active reservations = Available inventory
Figure 1. Linked operational records. Inspections and nonconformances connect quality evidence to lot genealogy.

Known stories (tested against full data)

Story Expected answer
Supplier drift RAW-000001, inspection 1, SUPPLIER-DRIFT, open retrospective hold 2026-01-01
Downstream exposure 10 work orders: 1, 10001, 20001, 30001, 40001, 50001, 60001, 70001, 80001, 90001
Shipped exposure Four finished lots 60001/70001/80001/90001; eight shipment lines; 36 units total
Shortage RAW-000001 on-hand 0, active reservations 60, available -60; six threatened work orders
Supplier delay PO line 1 received 11 days after expected date
Bottleneck WC-07 has the highest all-history actual production minutes
Partial fulfillment Sales-order line 1: two shipments, quantities 4 + 5 = 9 against 10 ordered

The raw-lot hold is retrospective: it opens after the affected historical shipments. The trace UI answers an investigation, not a claim that a currently quarantined input was deliberately released for production.

Metrics and dates

Metric/view Definition / filter scope
Backlog Count of orders with status not shipped; filter by order timestamp
On-time delivery Delivered shipment lines with delivered_at <= promised_at / all shipped lines in shipment-date range; not order-level OTIF
Quality holds Work-order status quality_hold; work-release date range
Material shortages Distinct work orders with active reservations on lots whose available balance is negative; work-release date range
Throughput chart Good component-stage event quantity; event date range; not finished units
Quality chart Rejected sample units; inspection date range; denominators displayed
Supplier comparison Rejected sample units / sample_size across all history; sample and inspection counts shown
Late receipts Actual lot received_at > PO-line expected_at, all history; explicitly precomputed
Work-center load Actual event minutes, all history; explanatory, not a finite-capacity scheduler
Trace Complete bounded fixture genealogy, all history; date controls disabled
Dataset / CSV Global reference metadata / visitor workspace; date controls disabled

daily_production, daily_quality, order_summary, supplier_quality, center_load, stock, late_receipts are materialized snapshots, explicitly labeled. Exact refresh completion per view is recorded in aggregate_refresh; these reads are never represented as multi-million-row scans. Chart clicks use the selected month intersected with the active date range, then fetch matching base records with bounded keysets. Supplier/center drilldowns retain their explicitly all-history scope.

3. Useful investigation workflows

Supplier-quality investigation

Start with RAW-000001 in Lot traceability. Follow the supplier lot through consumption to ten affected work orders, then four finished lots and eight shipment lines totaling 36 units. The hold is retrospective: it opens after those historical shipments. This demonstrates how an investigator could scope exposure, not a claim of a validated recall process or automated release decision.

Material planning and purchasing

Use Material risk to separate physical on-hand from active reservations. The known fixture has zero on-hand and 60 reserved units, producing −60 available and six threatened work orders. Follow the related purchasing evidence; purchase-order line 1 is eleven days late. This supports a reasoned investigation but does not optimize replenishment or issue purchase orders.

Commitments and production context

Use Order explorer to filter commitments, sort value or date, and export bounded records. A line ordered for ten units ships in two partial deliveries of four and five. Inspect work-center load and chart drilldowns to explain where event minutes accumulate: WC-07 is the intentional all-history bottleneck fixture. Component-stage good output is not finished-assembly throughput, and event minutes are not a finite-capacity schedule.

Quality and integration review

Compare supplier sample rejection rates with their denominators, then inspect the underlying records. In CSV workspace, stage the sample file, review accepted/rejected rows, apply only the accepted subset, download rejections, and retry or reset. Use synthetic sample content: this public workspace is temporary and is not a destination for confidential production records.

4. CSV integration: isolation and recovery

This is an import laboratory, not a production master-data import. Operational reference tables are never mutated. Every browser gets a cryptographically random HttpOnly/SameSite=Strict cookie mapped to one PostgreSQL visitor session. Public HTTPS uses Secure cookies; local loopback development uses non-Secure cookies.

Input

UTF-8 CSV, optional BOM, quoted fields/newlines supported by csv-parse. Exact header:

sku,description,quantity,unit
SAMPLE-1,"Quoted, description",25.125,ea
SAMPLE-2,Cable,12.5,m

Transaction states

  1. Staged: parse/validate once, accepted and rejected rows persisted with source row numbers, exact content SHA-256 and caller retry key; no parts changed.
  2. Committed: explicit apply locks the owning session/import and atomically upserts accepted SKUs. Existing quantities are replaced, never incremented. Rejected rows remain downloadable. All-or-nothing for the accepted subset.
  3. Cancelled: explicit cancellation prevents subsequent commit. Repeated cancel is idempotent; commit-after-cancel returns conflict.

Retrying staging with the same key + content returns the original import; same key + different content is rejected. Repeated/concurrent commit returns the already-committed result with one committed audit event. If the response disappears after commit, reload and review/retry safely. Tab sessionStorage preserves the draft and retry key; server history supports resuming staged records across reloads. Different committed imports affecting the same SKU serialize on the session lock; last committed import wins.

Isolation and bounds

Every import, row, part and audit query is owner-scoped. Another visitor cannot inspect or commit a known import UUID. Same-origin mutation checks and Host allowlist protect the application surface. No arbitrary SQL endpoint. Database role permissions additionally deny reference INSERT/UPDATE/DELETE.

Rejected CSV and bounded operational exports escape cells beginning with formula-significant characters (=, +, -, @, leading whitespace controls), quote cells and double quotes. There is no spreadsheet formula execution in the web app.

Tests cover real DB isolation, duplicate/invalid decimals/quoting, upsert replacement, rejected exports, concurrent commit, cancelled commit conflict, both caps, expiry/reset and reference permission denial. Browser tests actually drop the committed network response, reload and recover. No mocked backend or fabricated mutation response is used.

5. Measured performance

Measured 2026-09-13T18:19:30.862Z. This is a documentation summary; raw JSON, request observations and screenshots remain in ignored artifacts/.

Configuration

HTTP benchmark

Closed-loop concurrency 1/10/25, three warm-ups before each workload, 20/30/75 measured responses per workload respectively. 1,125 measured requests, zero errors in this final run. Nearest-rank p50/p95; payload is response-body byte length. End-to-end is loopback fetch through response-body consumption, excluding JSON parsing. Query time includes pool acquisition and row decoding; server time ends before serialization/socket delivery. The console's browser timing additionally includes JSON parsing.

Workload Users n Query p50/p95 ms Server p50/p95 ms HTTP E2E p50/p95 ms Mean bytes Errors
orders/selective 1 20 0.30 / 0.34 0.33 / 0.38 1.92 / 2.00 329 0
orders/unselective 1 20 0.47 / 0.55 0.50 / 0.59 2.30 / 2.41 11,616 0
orders/value-sort 1 20 0.46 / 0.55 0.49 / 0.58 2.20 / 2.36 11,675 0
orders/customer-join 1 20 1.61 / 2.12 1.62 / 2.14 3.12 / 3.58 4,174 0
lot/trace-joins 1 20 3.28 / 3.55 3.29 / 3.56 4.78 / 5.09 4,650 0
analytics/overview 1 20 35.79 / 37.32 35.85 / 37.36 39.38 / 40.65 99,389 0
risk/shortages-and-late 1 20 1.09 / 1.31 1.10 / 1.33 2.78 / 3.11 11,415 0
quality/aggregates 1 20 1.84 / 2.00 1.85 / 2.02 4.33 / 4.54 87,654 0
events/date-join 1 20 0.99 / 1.21 1.01 / 1.23 2.53 / 2.93 10,443 0
orders/selective 10 30 1.79 / 25.58 1.81 / 25.60 4.29 / 29.96 328 0
orders/unselective 10 30 1.43 / 4.73 1.45 / 4.74 5.36 / 8.85 11,614 0
orders/value-sort 10 30 2.04 / 5.41 2.06 / 5.43 6.07 / 8.87 11,673 0
orders/customer-join 10 30 9.67 / 24.61 9.68 / 24.62 12.74 / 27.24 4,174 0
lot/trace-joins 10 30 15.60 / 38.94 15.61 / 38.94 18.19 / 42.53 4,650 0
analytics/overview 10 30 210.30 / 264.83 210.31 / 264.85 214.94 / 280.05 99,390 0
risk/shortages-and-late 10 30 4.61 / 17.12 4.63 / 17.13 9.43 / 20.20 11,414 0
quality/aggregates 10 30 15.79 / 22.24 15.80 / 22.25 23.66 / 29.42 87,653 0
events/date-join 10 30 3.52 / 10.69 3.54 / 10.70 7.91 / 12.65 10,442 0
orders/selective 25 75 3.81 / 7.79 3.83 / 7.80 8.17 / 12.23 327 0
orders/unselective 25 75 3.00 / 7.28 3.02 / 7.29 9.76 / 15.79 11,614 0
orders/value-sort 25 75 3.63 / 9.00 3.65 / 9.01 10.58 / 15.09 11,673 0
orders/customer-join 25 75 23.18 / 31.76 23.18 / 31.77 26.91 / 43.49 4,174 0
lot/trace-joins 25 75 37.56 / 44.78 37.57 / 44.78 40.92 / 49.42 4,650 0
analytics/overview 25 75 487.82 / 774.39 487.83 / 774.39 494.47 / 788.57 99,388 0
risk/shortages-and-late 25 75 12.91 / 18.89 12.91 / 18.90 17.44 / 23.91 11,414 0
quality/aggregates 25 75 41.45 / 70.27 41.45 / 70.27 60.56 / 75.11 87,652 0
events/date-join 25 75 8.47 / 20.11 8.48 / 20.13 17.77 / 35.66 10,442 0

The final sampled ordinary list-page server p95 is below the initial 250 ms target; the full-history overview p95 is below the initial 1,000 ms analytics target. These are achieved results for this bounded run, not latency promises. An earlier post-tune run reached 1,077.82 ms overview server p95 at concurrency 25; normal short-run variation is preserved in artifacts/post-tune-benchmark/ rather than hidden.

Actual browser-render benchmark

Independent Chromium contexts, desktop 1280×900, one per simulated visitor. Overview preloaded; time from Playwright navigation click through 50-row API result, visible virtualized table and two animation frames. Includes browser scheduling and Playwright actionability, not just an HTTP timer. Warm browser assets. Browser/driver shared CPUs 0/1 with app/DB, with a separate 1 GiB memory cgroup / 2-CPU quota. No WAN or physical-device claim.

Concurrent pages Samples Navigation p50 ms Navigation p95 ms Errors DB quota before/after
1 20 93.79 102.98 0 2 / 2
10 30 262.01 321.74 0 2 / 2
25 75 1927.52 2972.86 0 2 / 2

The 25-page headless result is materially slower than the API p95 because browser pages compete for the same two CPUs. This is not representative of 25 separate physical client devices. An earlier browser stress run triggered the resource guard's one-CPU DB reduction; final before/after quotas above are recorded rather than assumed.

Direct query measurements

Eight base/aggregate fixtures × 20/30/75 observations = 1,000 measured direct database calls. Timings include local pg-client pool/transfer; engine-only timing is separately in EXPLAIN.

Query fixture Users n p50 ms p95 ms
base/customer-order-index 1 20 0.27 0.47
base/open-work-index 1 20 0.12 0.20
base/event-operation-index 1 20 0.10 0.15
base/inventory-lot-index 1 20 0.11 0.19
base/inspection-lot-index 1 20 0.12 0.24
base/trace-join 1 20 0.65 0.78
aggregate/order-summary 1 20 0.30 0.47
base/unselective-join 1 20 0.48 0.52
base/customer-order-index 10 30 1.36 20.92
base/open-work-index 10 30 1.06 2.65
base/event-operation-index 10 30 0.99 2.97
base/inventory-lot-index 10 30 1.32 2.95
base/inspection-lot-index 10 30 0.58 3.36
base/trace-join 10 30 4.51 11.63
aggregate/order-summary 10 30 1.38 10.39
base/unselective-join 10 30 2.14 6.44
base/customer-order-index 25 75 5.98 8.50
base/open-work-index 25 75 2.10 3.76
base/event-operation-index 25 75 1.11 1.90
base/inventory-lot-index 25 75 1.69 3.99
base/inspection-lot-index 25 75 1.11 2.11
base/trace-join 25 75 8.12 13.26
aggregate/order-summary 25 75 5.20 8.45
base/unselective-join 25 75 5.80 9.04

EXPLAIN ANALYZE evidence

artifacts/explain.json contains full ANALYZE/BUFFERS/SETTINGS JSON. artifacts/explain-api.json adds the exact order-prefix and late-receipt API SQL. Required workload indexes were actually selected:

Probe Engine execution ms Selected index(es)
base/customer-order-index 0.129 sales_orders_customer_id_ordered_at_id_idx
base/open-work-index 0.034 work_orders_status_due_at_id_idx
base/event-operation-index 0.04 production_events_operation_id_occurred_at_id_idx
base/inventory-lot-index 0.071 inventory_movements_lot_id_occurred_at_id_idx
base/inspection-lot-index 0.02 inspections_lot_id_inspected_at_id_idx
base/trace-join 0.25 material_consumption_lot_id_operation_id_idx, operations_pkey, work_orders_pkey, sales_order_lines_pkey
aggregate/order-summary 0.207 order_summary_ordered_at_id_idx
base/unselective-join 0.118 sales_order_lines_sales_order_id_id_idx, sales_orders_pkey, customers_pkey

Cache methodology

Final cache probe: 2026-09-13T18:24:29.472Z. Restarted only manufacturing-db and its own app connection pool. Host OS page cache was deliberately retained; no other DB/app/service was restarted.

Failed initial run and corrections

The first run had 60 HTTP errors, all in the late-receipt workload. Concurrent parallel hash joins exhausted Docker's default 64 MiB shared-memory area. Original observations, errors and plans are retained in artifacts/initial-benchmark/. Corrected by disabling application parallel gathers and reading an explicitly labeled immutable late-receipts snapshot; no memory-limit increase or service substitution. Trace queries were index-targeted and order-number prefix search separated from customer substring search. Final zero-error results followed those changes.

Limits

Local short closed-loop runs, not a soak test, internet-scale load or production capacity certification. No true cold-disk result. No provider/vendor speed claims. Server/query/browser timings measure different boundaries and must not be interchanged. Physical Safari/iOS was not tested. This benchmark is local; the separate public smoke check below is not a repeat of it. Actual field deployments require their own profiling.

6. Public deployment check — a different experiment

The saved public HTTPS smoke check used three rounds each at concurrency 1, 10 and 25 against /api/orders: 3, 30 and 75 successful requests, respectively (108 total). Recorded p95 was 102.33 / 200.68 / 212.40 ms. The timer included fetch and JSON parsing across the public network. There were no explicit workload warm-ups, only one endpoint, and only three observations at concurrency 1; the result is a short connectivity/concurrency acceptance check, not a capacity benchmark. Client network conditions and exact server CPU model were not captured in this artifact. It must not be compared directly with the loopback suite's body-consumption timer or used to promise WAN latency.

Public acceptance also verified trusted TLS, Secure/HttpOnly/SameSite cookies, HSTS, origin rejection, desktop and emulated-mobile workflows. Physical iOS/Safari, long-duration load, multi-region performance and disaster-recovery objectives remain unverified.

7. Reproducibility and evidence

The fixed seed is 73013, generator 1.2.0. Each operational table has an ordered-row fingerprint: SHA-256 over concatenated per-row MD5 values in primary-key order (composite supplier/part order for supplier_parts), using UTC timestamp rendering. The manifest excludes materialized copies, metadata and visitor rows. Metadata timestamps and visitor identifiers are intentionally nondeterministic. A second independent full reseed has not been performed, so repeatability is supported by source and fingerprints, not claimed as a completed second experiment.

For a source-assisted reproduction, use the project's lockfile and a new isolated database—not the public instance or an existing reference schema. Follow docs/OPERATIONS.md: npm ci; start the dedicated database with scripts/database.sh start; run npm run seed (schema, seed, refine, tune, finalize, facility, manifest); build and start via the documented scripts. The seed command refuses an existing reference schema; it is not a reset or migration command. Match the affinity, quotas, PostgreSQL settings and application pool above before comparing results.

Then run scripts/database.sh sql < db/integrity.sql, npm test, and npm run browser. Run the benchmark with NODE_OPTIONS=--max-old-space-size=384 taskset -c 0,1 npm run benchmark; use scripts/browser-benchmark.ts inside the documented 1 GiB / two-CPU scope. Run sequentially on a quiet host. Compare table counts and fingerprints before comparing timings. Cache probes restart only the isolated research database; do not flush the host cache or restart unrelated services.

Source method references: db/schema.sql, db/seed.sql, db/refine.sql, db/tune.sql, db/finalize.sql, db/facility.sql, db/manifest.sql, db/integrity.sql; scripts/benchmark.ts, scripts/browser-benchmark.ts, scripts/buffer-cold.ts; tests/integration.ts, tests/browser.ts, tests/file-import.ts, tests/deployment.ts; and docs/MODEL.md, docs/CSV.md, docs/PERFORMANCE.md, docs/OPERATIONS.md. The repository is not publicly hosted at publication time; these are source identifiers, not downloadable links or a claim of open-source release.

The selected synthetic-only evidence downloads below were copied from saved raw artifacts, not regenerated to improve the reported results. Full per-request observations and historical failed-run evidence remain in the local research archive. The downloadable checksum manifest identifies the exact published files.

8. Research roadmap and limitations

  1. Independent regeneration: rebuild in a clean environment and compare every table fingerprint; investigate any drift before performance comparison.
  2. Changing operational state: study incremental refresh, freshness budgets and concurrent writes instead of assuming an immutable reference.
  3. Representative planning fixtures: expand beyond the deliberately open/partial backlog, add realistic completed commitments and evaluate metric definitions with domain practitioners.
  4. Integration contracts: explore versioned mappings, explicit unit conversions, reconciliation and authenticated connector boundaries. The current CSV workspace does not synchronize an ERP or alter reference master data.
  5. Operational evaluation: test longer soaks, different query mixes, remote clients and physical mobile browsers; measure storage growth and recovery procedures under explicit service objectives.
  6. Access and assurance: investigate production identity, roles, audit retention and tenant boundaries before any real operational deployment. Visitor-cookie isolation is not enterprise identity or tamper-evident compliance logging.

The current result demonstrates a coherent data model, bounded query design, inspectable metrics and recoverable integration behavior. It does not demonstrate labor savings, defect reduction, certification, production readiness, a scheduling optimizer, or guaranteed performance. Future collaborations begin with the operational question and measurable acceptance criteria—not a claim that an ERP package is already complete.

Selected saved evidence