Fortress Desk · US session 2026-10-09 · closed 04:00 SGT

Desk real-time report

The native app is now 15 to 150 times more real-time than the Chrome Classic pages. Every approved change shipped and is live. No market-data line was refused all night, and the test suite closed fully green.

0.3 s
app spot / held-call age, Rebuild p50
(Chrome page: 44 s)
0.02 s
watcher write to app delivery
130 → 42
spot lines after spot sharing
0
refused lines (err 101), 612 samples

1. Chrome vs the app, side by side

Measured 03:00 to 03:21 SGT in one window: headless Chrome on the five Classic pages and the app's hub feed, every second. Each number is how old the data on screen is. Read-only, nothing clicked, no watcher restarted during the run.

Chrome Classic page, p50App tab numbers, p50
Rebuild
44 s
1.1 s (ticks 0.3 s)
FIGHT
46 s
1.1 s (ticks 0.7 s)
Scanner
8.5 s
1.1 s (ticks 0.4 s)
Coverage
20 s
3.3 s
Income
10 s
3.3 s

Full numbers (p50 / p90)

TabChrome Classic pageApp: tab numbersApp: spot & held-call marks
Rebuild44 / 73 s1.1 / 1.9 s0.3 / 0.8 s
FIGHT46 / 76 s1.1 / 3.1 s0.7 / 1.0 s
Scanner8.5 / 15 s1.1 / 2.0 s0.4 / 0.9 s
Coverage20 / 32 s3.3 / 7.4 snot ticked
Income10 / 17 s3.3 / 9.3 snot ticked
A tab you aren't looking atfrozen: ~10 min old after 10 min hiddenkeeps updatingkeeps updating

Why Chrome lags most on Rebuild and FIGHT: the Classic pages throttle their own reloads. Rebuild rewrote its page 37 times in 10 minutes, Chrome showed 10 of them. Data: runs/desk_bench/chrome_vs_app_20261010/.

2. What shipped tonight

All live. Every restart resumed from the watcher's own saved state except one (see incidents).

ChangeCommitsResult
Spot sharing across the five watcherse1b5ad3Spot lines 130 → 42. Survived a real cc_check restart: cc_manager took over 34 tickers, nobody else opened a line.
FIGHT: Monte Carlo off every cycle77469e6Desk publish 1,613 → 86 ms; Desk update gap p90 6 → 5 s.
Scanner: publish first, verify after8209bb2, 1b3ac12Desk update gap p90 6 → 5 s.
Scanner windows (80 streams + 50 window lines)87ab8b9Live since 01:03 SGT.
Rebuild: fallback fetches as windowsc2d646f, 1dcf5a2Blocking 17.2 → 0.9 s per minute; p90 down to 2 s mid-morning.
Rebuild: sweep gets 50 more lines, plus fixes52fbb9e, fb9baf9, bfd0b40, fabb705, 14e6398Stale-row re-checks ~6,100 → ~10,500 an hour, never waiting for lines.
Held legs: skip re-checks Rebuild already covers4659166Live at the next launch; first measurement at Monday's open.
Launch fix: pinned Python, normal priority, Launchpad KILLf889003Watchers on Homebrew 3.12 at PRI 31 from any launch path. FortressList PRI 4 → 31.

3. Line safety

The account allows 578 live quotes at once (TWS's own windows hold ~72). A refused quote (err 101) used to be silent; it is now counted.

4. Incidents

5. Decisions and follow-ups

None urgent.

  1. Rebuild's remaining p90 tail: more window lines (a budget change) or smaller verify pieces. Recommendation: watch Monday's open first.
  2. Let a delayed-data window mark a contract dead: removes the last blocking sweep call but weakens the dead-contract check. Recommendation: no.
  3. Optional, Chrome Classic only: lowering the pages' reload limit would roughly halve how old Rebuild and FIGHT look there. The app doesn't need it.
  4. FortressList priority setting is live but its file is untracked (a Desk session's work); it must keep ProcessType=Interactive when committed.

Checks at Monday's open (21:30 SGT)