Skip to content

Add live phase-checklist progress for snow dcm deploy and plan#3069

Draft
sfc-gh-jsommerfeld wants to merge 4 commits into
feature/dcm-upload-progressfrom
feature/dcm-deploy-live-progress
Draft

Add live phase-checklist progress for snow dcm deploy and plan#3069
sfc-gh-jsommerfeld wants to merge 4 commits into
feature/dcm-upload-progressfrom
feature/dcm-deploy-live-progress

Conversation

@sfc-gh-jsommerfeld

@sfc-gh-jsommerfeld sfc-gh-jsommerfeld commented May 31, 2026

Copy link
Copy Markdown

Deploy and plan now show a live RENDER → COMPILE → PLAN → DEPLOY phase checklist as the server processes the operation, with a pip-style progress bar for the PLAN and DEPLOY phases and a braille spinner for RENDER/COMPILE. (The phase model itself lives in #3068; this PR wires the commands to it.)

  • deploy switches to deploy_async + DeployProgressTracker.run_deploy_poll so the phase display updates in real time while the query runs
  • plan uses tracker.run_loader_phase with simulated RENDER/COMPILE phases followed by the synchronous PLAN call
  • manager: extract _build_deploy_query helper, add deploy_async method that submits the SQL with execute_async and returns the sfqid
  • commands: both deploy and plan wrap sync_local_files and the backend call inside a tracker.session() context for a unified UI

purge

snow dcm purge shows the same live phase checklist. Purge runs PLAN and DEPLOY entirely server-side (it never syncs local files), so it has no UPLOAD phase and polls SYSTEM$GET_DCM_PROJECT_PROGRESS just like deploy; the server-reported DEPLOY phase is displayed as PURGE (the purge operation mode and the display-name override are defined in #3068).

  • manager: extract _build_purge_query helper, add purge_async method that submits the SQL with execute_async and returns the sfqid
  • commands: purge wraps purge_async + run_deploy_poll inside a tracker.session() context (replacing the old static spinner)

Resource cleanup

  • deploy_async / purge_async now run execute_async inside a with self._conn.cursor() block so the cursor is released immediately. Closing the cursor does not cancel the query — it keeps running server-side and its results are still fetched later via the sfqid in run_deploy_poll.

Pre-review checklist

  • If my changes add or modify user-facing interface (commands, flags, output formats), I consulted maintainers and got sign-off beforehand (how).
  • I've confirmed that instructions included in README.md are still correct after my changes in the codebase.
  • I've added or updated unit tests to verify correctness of my new code.
  • I've added or updated integration tests to verify correctness of my new code.
  • Manually tested on macOS
  • Manually tested on Windows
  • I've confirmed my changes are up-to-date with the target branch.
  • I've described my changes in RELEASE-NOTES.md (see when and how).
  • I've updated documentation if behavior changed.

Changes description

...

@sfc-gh-jsommerfeld sfc-gh-jsommerfeld requested a review from a team as a code owner May 31, 2026 20:32
@sfc-gh-jsommerfeld sfc-gh-jsommerfeld marked this pull request as draft May 31, 2026 20:32
sfc-gh-jsommerfeld and others added 3 commits June 8, 2026 21:36
Deploy and plan now show a live RENDER → COMPILE → PLAN → DEPLOY
phase checklist as the server processes the operation, with a pip-style
progress bar for PLAN and DEPLOY phases and a braille spinner for
RENDER/COMPILE.

- deploy switches to deploy_async + DeployProgressTracker.run_deploy_poll
  so the phase display updates in real time while the query runs
- plan uses tracker.run_loader_phase with simulated RENDER/COMPILE phases
  followed by the synchronous PLAN call
- manager: extract _build_deploy_query helper, add deploy_async method
  that submits the SQL with execute_async and returns the sfqid
- commands: both deploy and plan wrap sync_local_files and the backend
  call inside a tracker.session() context for a unified UI

Co-authored-by: Cursor <cursoragent@cursor.com>
Purge now shows the same live phase checklist as deploy. It runs PLAN and
DEPLOY server-side, so the tracker polls SYSTEM$GET_DCM_PROJECT_PROGRESS
and renders pip-style progress bars.

- progress: add "purge" operation mode (RENDER/COMPILE/PLAN/DEPLOY, no
  UPLOAD phase since purge never syncs local files); render the DEPLOY
  phase as "PURGE" via a per-operation display-name override while still
  matching the server-reported DEPLOY phase during polling
- manager: extract _build_purge_query helper, add purge_async method
- commands: purge wraps purge_async + run_deploy_poll in tracker.session()

Co-authored-by: Cursor <cursoragent@cursor.com>
execute_async leaves the cursor open; wrap it in a context manager so it is
released immediately. The async query keeps running server-side and its
results are still fetched later via the sfqid (run_deploy_poll).

Co-authored-by: Cursor <cursoragent@cursor.com>
Collapse the two divergent blues — the periwinkle hex #a0a8fe (refresh
status / unknown rows) and the terminal-default named "blue" (running
phase, progress bar/spinner) — onto one BLUE constant in styles.py, and
route progress.py's hardcoded style="blue" literals through it, so every
blue in DCM output renders the same hue.

Co-authored-by: Cursor <cursoragent@cursor.com>
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