Skip to content

feat(ui): hide orchestrator/staging from the operator GUI - #19

Merged
Xander-git merged 2 commits into
feature/gui-imrprovement-v2from
feature/hide-orchestrator-staging
May 30, 2026
Merged

Xander-git merged 2 commits into
feature/gui-imrprovement-v2from
feature/hide-orchestrator-staging

Conversation

@Xander-git

Copy link
Copy Markdown
Collaborator

Summary

Hide (not remove) the per-equipment stage sync mode and the staging-PC relay (orchestrator). Every equipment now syncs directly to the NAS (sync_mode="nas"); the staging backend stays dormant and tested for reversibility. No config schema change, no feature flag. The app is not deployed, so there's no migration burden.

Spec: docs/superpowers/specs/2026-05-29-hide-orchestrator-staging-design.md

UI surfaces gated

  • Add-Equipment wizard — drop the sync-mode step (identity → paths → review); the dormant _render_sync_mode_step is kept as the reversibility hook.
  • Settings — rename "Orchestrator Mode" → "Workstation" (section id kept, so the setup gate / routing are untouched); remove the staging-root input.
  • mount.py — remove the /staging route + footer clear-verified wiring and the helpers it orphaned (_build_staging_state, _bulk_clear_verified, _render_unavailable); keep the per-run tree context-menu actions (they serve nas runs) and reword their toasts off "staging".
  • main.py — remove the footer "Staging" segment + "Clear verified runs" button.

Left intact & dormant (reversibility)

orchestrator/ (incl. the quiescence poller — the auto-sync engine for both nas and stage runs), api/routers/staging.py, ui/pages/staging.py, SyncMode.STAGE, and the orchestrator.staging_* config fields. Re-enabling = restoring the four UI surfaces (spec §3.6).

A new root CLAUDE.md documents the hidden-but-present state so future work doesn't "fix" the missing UI or delete the shared poller.

Tests

  • Skip the staging-driven UI flows with reversible markers citing the spec (test_flow_09/18/21/23, test_staging_page) + individual skips for the sync-mode wizard step and the footer-callback test.
  • Update wizard / settings / footer / persist tests; drop mount glue-fn tests for the removed helpers; add a 3-step wizard + nas-default assertion and a "Workstation section hides staging-root" check.
  • Backend staging tests stay green unchanged, proving dormancy.

Verification

  • ruff check src tests: clean
  • unit: 2201 passed, 19 skipped
  • integration: 131 passed, 3 skipped (incl. test_orchestrator_lifecycle)
  • e2e (touched files): 25 passed, 2 skipped, deterministic
  • grep gate: no operator-facing staging/orchestrator leak

Note: the full e2e suite has a pre-existing test-isolation flake (test_flow_06, validator overrides) confirmed present on the base too — unrelated to this change.

🤖 Generated with Claude Code

Xander-git and others added 2 commits May 29, 2026 22:32
Hide (not remove) the per-equipment `stage` sync mode and the staging-PC
relay. Every equipment now syncs directly to the NAS (sync_mode="nas");
the staging backend stays dormant and tested for reversibility. No config
schema change, no feature flag.

UI surfaces gated:
- Add-Equipment wizard: drop the sync-mode step (identity -> paths ->
  review); dormant _render_sync_mode_step kept as the reversibility hook.
- Settings: rename "Orchestrator Mode" -> "Workstation" (section id kept,
  so the setup gate / routing are untouched); remove the staging-root input.
- mount.py: remove the /staging route + footer clear-verified wiring and
  the helpers it orphaned (_build_staging_state, _bulk_clear_verified,
  _render_unavailable); keep the per-run tree context-menu actions (they
  serve nas runs) and reword their toasts off "staging".
- main.py: remove the footer "Staging" segment + "Clear verified runs".

Backend left intact and dormant: orchestrator/ (incl. the quiescence
poller, the auto-sync engine for BOTH nas and stage runs),
api/routers/staging.py, SyncMode.STAGE, orchestrator.staging_* fields.

Tests: skip the staging-driven UI flows with reversible markers citing the
spec; update wizard/settings/footer/persist tests; drop mount glue-fn tests
for the removed helpers. Backend staging tests stay green, proving dormancy.

Add a root CLAUDE.md documenting the hidden-but-present state so future
work does not "fix" the missing UI or delete the shared poller.

Spec: docs/superpowers/specs/2026-05-29-hide-orchestrator-staging-design.md

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Removing the @ui.page("/staging") block left a single blank line before
the "Helpers" divider; ruff format wants two. No behavioural change.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@Xander-git
Xander-git merged commit 26fc6af into feature/gui-imrprovement-v2 May 30, 2026
3 checks passed
@Xander-git
Xander-git deleted the feature/hide-orchestrator-staging branch May 30, 2026 07:15
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