Skip to content

Thread card: draw only the mu positions the driver reports (#58) - #59

Merged
ThinkOffApp merged 2 commits into
mainfrom
fix/58-real-mu-cursors
Sep 7, 2026
Merged

ThinkOffApp merged 2 commits into
mainfrom
fix/58-real-mu-cursors

Conversation

@ThinkOffApp

Copy link
Copy Markdown
Owner

Fixes #58 (reported by @Petrus: "thread a has mu_0-3 but all the mus move together").

Cause: muProgressVector() manufactured four per-mu cursor positions from the single cfg-progress scalar (fixed +/-0.06 offsets, mean forced back onto the scalar by rebalanceMuMean). The real coordinates were consulted only when the scalar was missing, which on a running job is never.

Fix: the vector holds only reported positions: for a loop cursor, T along tdir and R along sdir (from meas_cursor_t / meas_cursor_r, or the shift vector when present); the other rows are NaN and the existing marker code draws nothing for them. The stabiliser keeps NaN and no longer rebalances. The magenta cfg-progress track stays the one moving element for overall progress. Legend now says why two rows carry no marker: the GPU heat bath updates every direction in one kernel, so there is no per-direction sweep position to report.

Checks: page script parses; applied to the live seed 9101 dashboard, screenshot in the room.

🤖 Generated with Claude Code

muProgressVector() manufactured four per-mu cursor positions from the single
cfg-progress scalar (fixed +/-0.06 offsets, mean forced back onto the scalar
by rebalanceMuMean), so the four markers always moved together; the real
coordinates were consulted only when the scalar was missing, which on a
running job is never. petrus spotted it on seed 9101.

Now the vector holds only reported positions: for a loop cursor, T along
tdir and R along sdir (from meas_cursor_t / meas_cursor_r, or the shift
vector when present); the other rows are NaN and the existing marker code
draws nothing for them. The stabiliser keeps NaN and no longer rebalances.
The magenta cfg-progress track stays the one moving element for overall
progress, as before. Legend explains why two rows carry no marker: the GPU
heat bath updates every direction in one kernel, there is no per-direction
sweep position.

Page script parses; applied to the live seed 9101 dashboard.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 7, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-09-07T00:53:11.744546Z 00e8bd9 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 00e8bd9cda

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread tools/su2_dashboard.html
Comment on lines 2906 to 2910
const c = toFiniteNumber(coords?.[mu], NaN);
const l = toFiniteNumber(dims?.[mu], NaN);
if (!Number.isFinite(c)) return NaN;
const denom = Number.isFinite(l) && l > 1 ? (l - 1) : 1;
return clamp01(c / denom);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Ignore GPU skip counts as cursor positions

When a GPU worker is in skip_sweeps, this raw-vector path still treats every finite meas_cursor_shift entry as a lattice position. In gpt/applications/hmc/su2_2q_signal_scan.py, the GPU one_sweep() invokes its callback only after the complete 2 * Nd sweep, while on_skip_substep() expands that completion into equal counters for every direction before emitting the shift vector. As a result, all four μ markers still appear and move together in exactly the GPU scenario where the new legend says no per-direction position exists; GPU skip-count vectors should not populate these position rows.

Useful? React with 👍 / 👎.

With only the reported positions drawn, the markers jumped with every
operator because the driver's cursor is a scan over loop geometries, not a
position travelling along an axis (petrus: 'jumping wildly'). Rows now print
the current T (time direction row) and R (space direction row); the magenta
cfg-progress track is the only moving element.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@ThinkOffApp
ThinkOffApp merged commit 9102984 into main Sep 7, 2026
1 check 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.

Thread card invents four per-mu cursors from one scalar; the driver's real measurement cursor is not shown

1 participant