Skip to content

[Production] Release 2026-08-27 - #209

Merged
wasimxyz merged 2 commits into
productionfrom
staging
Aug 27, 2026
Merged

[Production] Release 2026-08-27#209
wasimxyz merged 2 commits into
productionfrom
staging

Conversation

@wasimxyz

Copy link
Copy Markdown
Member

No description provided.

wasimxyz and others added 2 commits August 27, 2026 16:28
* Recover files stuck in processing from the UI and MCP

Record when a file enters processing so the run page can tell in-flight
work from a Lambda that never reported back. After the 15-minute Lambda
limit, those files show as Stalled and can be reprocessed from the table,
the REST API, and MCP.

Co-authored-by: Wasim Amiri <wasimxyz@users.noreply.github.com>

* Stop polling the files table when processing has stalled

Auto-refresh keyed off every processing file, so a stalled row refreshed
the page every three seconds forever. Count only in-flight processing
(inside the stall window) for that signal.

Co-authored-by: Wasim Amiri <wasimxyz@users.noreply.github.com>

* Make the stalled-processing window configurable.

Operators can set STALLED_PROCESSING_AFTER_MINUTES instead of shipping a code change when the 20-minute default is too long or too short.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Surface stalled processing at the run level and make it filterable

A stalled file was only visible after opening the run and scrolling to the
files table. The run itself kept a spinning "Processing" badge on the
dashboard, the instrument page, and the run header, which is where an
operator would actually notice something needs a retry.

Runs now derive a "Stalled" status, ranked directly under "failed" so a file
merely waiting to upload cannot mask it. `filesProcessing` counts only work
inside the stall window, so the two buckets stay exclusive. The files table
gains a matching "Stalled" filter option, and "Processing" narrows to
in-flight rows so the filter agrees with the label in the status column.

Consistency fixes along the way:

- The stall rule was written three times in two languages. The SQL now lives
  in one module shared by the run status, the run counts, the file filter,
  the sort ranking, and run-level reprocess. That surfaced an off-by-one:
  stalled used `< cutoff` while in-flight used `> cutoff`, so a row landing
  exactly on the boundary belonged to neither.
- Each fragment used to call `new Date()` independently, letting two
  fragments in one query disagree by microseconds. Each query now takes a
  single clock reading and shares it with the per-row stall stamp.
- `getFileStatusKey` and `ReprocessableFile` require `stalledProcessing`
  instead of accepting it optionally, so a plain database row can no longer
  compile into a silently wrong label. `canReprocessFile` drops its
  `flag ?? recompute` fallback and never reads the clock.
- `RunStatusIcon` takes the row instead of seven count props, so the next
  bucket is a one-file change rather than eight.
- The stalled tooltip shows an absolute timestamp; polling stops for stalled
  rows, so the relative one froze as soon as it rendered.
- Sort-by-status gained a Stalled bucket. Its comment referenced
  `statusLabel`, which was dead code and is removed.
- The three copies of the allowed file-status list are now one.

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Wasim Amiri <wasimxyz@users.noreply.github.com>
* Accept Aunty isothermal, partial-ramp, and table-only exports.

Those workbooks don't use the full eight-column graph layout the parser required, so they never produced a plate. Fit well-chart y-axes to each series so high-baseline curves aren't flattened against 0.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Show Aunty hold temperatures in the table and filters.

Isothermal runs store a single temperature_c, so the list and filter need that value — not only start/end ramp pairs. Empty k-rate columns no longer pick the flavor.

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
@wasimxyz wasimxyz self-assigned this Aug 27, 2026
@vercel

vercel Bot commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
data-hub Ready Ready Preview Aug 27, 2026 11:33pm

Request Review

@wasimxyz
wasimxyz merged commit 6a024fb into production Aug 27, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant