Skip to content

Fixes GRE-822: follow rebuild job snapshots in the browser - #1258

Merged
poitee merged 2 commits into
mainfrom
gre-822-job-context
Oct 27, 2026
Merged

poitee merged 2 commits into
mainfrom
gre-822-job-context

Conversation

@poitee

@poitee poitee commented Oct 27, 2026 •

Copy link
Copy Markdown
Owner

Fixes GRE-822

Summary

When /health reports tenant_feature_toggles, the browser job row follows the socket and skips HTTP polling. The next frame, including the snapshot after reconnect, replaces status, message, and progress. While that capability is absent, including while health is still loading, the provider keeps the existing socket plus HTTP poll.

A lost session during a rebuild job still does not end the row. The socket helper is unchanged. That gap is GRE-1001.

Definition of done

See the definition of done.

  • One job, under about 1,500 lines. Work for other tickets is noted on those tickets.
  • Unslop pass run on code, comments and docs. No filler comments, dead code or speculative abstractions.
  • Docs updated in this PR, or the PR changes no behavior, setup or interface.
  • Reviewed by a different model vendor than the author, on the exact head commit, with CI green.

Evidence

cd web && npm run test -w @print-partner/web -- src/context/JobContext.test.tsx passed 28 tests, including job_context_rebuild_reconnect_uses_snapshot and job_context_flag_off_uses_existing_transport. PrinterSendPanel.job-recovery.test.tsx passed 1 test. eslint on the two context files was clean.

npm run quality from web/ ran on Node v24.21.0. The repo asks for Node 22.x, which is not installed here. Lint, knip, typecheck, and web vitest passed: 286 files, 1712 tests. Server test:ci failed one test, GRE-649 in src/services/bambu-connect.test.ts. The Python probe could not parse a pid because FORCE_COLOR colored the Node print. One rerun with FORCE_COLOR and NO_COLOR unset passed in 639ms. The remaining quality steps then passed with those variables unset: accepted-stl bundle 30, workflow smoke 12, build, route bundles 3, runtime 4, and the GRE-498 browser proof.

The doc commit fc78c6d0 only names GRE-1001. It does not change JobContext.

This PR does not change STL rendering, build management, part download, or the printable checkoff sheet.

Sol round 1, Claude Opus 5.5, effort xhigh, on 5dc6efc1: APPROVE 8/10. S1 stays out of this PR. The ticket does not change connectJobWebSocket, so the session-loss fix is GRE-1001 and the doc names it. S2 and S3 are nits and stay declined. Health loading uses the same absent-capability path as the flag-off test. The named rebuildJobSnapshots helper keeps the capability comment next to the check. No second Sol round. The doc-only commit does not change behavior.

Council round 1 on fc78c6d0: Claude Opus 5.5 9/10 APPROVE, Grok 4.7 9/10 APPROVE, Qwen3.8-Flash 8/10 APPROVE. Qwen sits below the other two, so this head stays. Qwen S1 asks for a fetchJob probe after a socket error. That probe stays out. A late read can overwrite the snapshot this ticket keeps. GRE-1001 covers a socket that will not reconnect, including every 1008 reason other than Job not found and a URL-construction failure. Qwen S2 through S5 stay declined. The test drives a later socket frame on the same subscription, which is the row behavior this slice adds. The helper reconnect policy is unchanged. Health loading uses the absent-capability path. The flag-off test shows a socket error does not replace the polled row. Claude's nits stay declined for the same reasons.

Exemption

Exemption: none

Reviewed with sol-loop: 1 round with Claude Opus 5.5 on effort xhigh. Sol verdict: approved.

Council review

Rounds: 1

Delegate Round 1
Claude Opus 5.5 9/10
Grok 4.7 9/10
Qwen3.8-Flash 8/10

Created with Grok 4.7 in T3 Code.

When health reports tenant_feature_toggles, the job row follows the socket and skips HTTP polling. Without that capability, the socket plus poll stays.
A rebuild job row stays up when the session dies. The helper work is GRE-1001.
@poitee
poitee merged commit 21f76b6 into main Oct 27, 2026
35 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