Simplify migration workflow with collapsible stages and re-run analysis #25
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
The deployed pilot migration page is still too busy. Completed upload controls, analysis controls/results, preview controls/results, import controls and email options compete in a long wall of information. Some options remain visible when the corresponding operation cannot even be started. A successfully completed analysis also has no usable way to run again against the retained ZIPs.
The preparation/onboarding flow already guides users through a sequence. Apply the same clarity to Upload → Analyze → Preview → Import, while keeping the stages and their saved information on one page. This should be a coordinated UI pass, not a collection of unrelated layout changes.
Requested changes
1. Add “Re-Run analysis”
2. Show notification choices only when relevant
3. Rebalance and collapse the upload section
4. Separate the workflow into collapsible sections
Analysis, preview and import should not be one oversized container. Give setup/kickoff controls, saved results and the active operation clear boundaries and independently collapsible sections. For example:
The exact visual treatment can be refined together, but each stage must be independently understandable and reopenable. Keep the data on the same page rather than moving it behind separate screens.
5. Progressively collapse completed or previous stages
Acceptance criteria
Scope
Create a single coherent migration-workflow UI improvement. Keep the unmerged malware/security infrastructure work separate. This issue records the requested changes; it does not authorize changes to the live pilot's data or start any analysis, preview, import or deployment.
Starting #25 after reading #14 and all its comments, and the full #25 scope (no existing comments). Working directly on main in a fresh checkout; the #12/PR #19 WIP branch and checkout remain untouched. Scope: independently collapsible upload/analysis/preview/import stages, stage-aware notification choices, preserved settings/state, desktop 35/65 upload layout, and an explicit protected backend analysis re-run using retained ZIPs. Validation will use disposable fixtures and desktop/mobile browser coverage plus focused backend checks. No pilot data, real analysis/import, deployment, restart or active-task interruption is planned.
Implementation checkpoint on main: the existing completed-job route silently returned the old analysis, and the report query cache used only the collection ID. The new explicit re-run request checks the prior operation identity, creates fresh operation/timing state, clears old report/verification data, snapshots earlier notification outcomes, and reuses retained ZIPs. Admission shares the preview/import lock and the existing retention guard; concurrent duplicate re-runs, active preview/write conflicts, deletion admission, missing inputs and queue failures have regressions. No import is started by re-analysis. Independent sections keep mounted file/draft state; active progress/Stop stays visible, and terminal notification panels have no opt-in checkbox. Desktop 35/65 initially exposed narrow-rail clipping with expanded help; a scrollable rail and reserved list space fixed it, with the complete mobile/touch/keyboard suite passing. Backend/vet/race and workflow/activity/email/advanced browser checks pass locally; final disposable stack verification and handoff are in progress. Existing lockfile audit findings remain separate; no dependency or release-gate changes. No pilot data/service or #12/PR #19 source was touched.
Implemented and published directly on main at
7663404f7a, based on main0a47f4f. The owner requested the next build label 0.1.1-pilot.1, explicitly a prerelease pilot, not 1.0. No #12/PR #19 source, branch, checkout, scanner image or scan was modified or used.Changes:
Checks actually passed locally:
Limits and next handoff:
Owner-requested publication update: pilot 0.1.1-pilot.1 is now published for Linux ARM64 from main
7663404f7a, with unchanged importer 0.32.0-bridge.4. The native pipeline passed backend/race, runner-race, browser-upload-client and actual-importer targets, built/published app + runner + processor, verified runtime/license material, and published matching Bridge/importer source with checksums. Independent registry inspection confirms the exact version, source SHA and ARM64 architecture on all three images; reported and registry digests agree. Companion deployment image pins are updated and configuration validation passed, with every other encrypted setting preserved. This supersedes the earlier image-publication-pending status only. No live deployment, service restart, real import or #12/PR #19 modification occurred. This remains a prerelease pilot; full dual-architecture/image release gates and installed-provider/library checks remain separate.Owner explicitly authorized deployment after the latest companion infrastructure validation completed. That exact validation passed, and the deployment of pilot 0.1.1-pilot.1 to the authorized pilot target has now succeeded using the three reviewed immutable image pins. Independent post-deployment public HTTPS checks return 200 Ready, and the served application bundle contains Re-Run analysis, Analysis setup and Preview results from main
7663404f7a. The registered mount-guarded lifecycle completed without failed/unreachable tasks. No owner analysis, preview or import was started for verification, and no #12/PR #19 work was touched. This supersedes the earlier deployment-pending status only. Native ARM64 pilot publication/deployment is complete; full dual-architecture/image release gates, dependency audit follow-up and authenticated real-provider/relay/library walkthroughs remain separate. No 1.0 release or full-library success is claimed.Issues found from the latest build:
2. This may be because the SSO connection is not registering an email address? I have no way to see what the actual username and email address is inside the admin console. We need to verify if this is blocked by UI or blocked by no email. If it's because of no email, 2 changes need made:
3. Expose the SSO provided information through the admin UI, not just the ability to make a user an admin or disable the account. Without being able to see the information, there's no way to validate if the information came through correctly.
4. Enable the ability for the SSO connection to update the username/email of a user after it has been created. The test user was created before updates were made so it's still listed as "SSO user"
10. Collections
11. Upload
12. Analysis
13. Import Preview
14. Import
Starting the owner-approved follow-up to comment 611. Scope: diagnose disabled task-email consent; expose bounded SSO profile/verification/refresh information in administration and correct existing-account refresh; introduce centrally controlled Collections → Upload → Analysis → Import Preview → Import groups with explicit Next Step progression/backward collapse; preserve active Stop/status and saved state; normalize spacing/headings and simplify preliminary metadata language. Active-task background guidance will use the owner-provided exact text. Validation will cover legacy SSO users, notification denial reasons, historical links/re-analysis, backward navigation, refresh/reconnect and desktop/mobile fixtures. Working from main, keeping #12/PR #19 separate. No live analysis/import or deployment is started by this implementation.
Implemented and published the owner-approved follow-up to comment 611 on main: cc91065266214916b9b11b46c7ae17010278d6c0. Issue #12 and WIP PR #19 remain separate and untouched.
Changes:
Read-only deployed diagnosis confirmed the affected SSO profile had no eligible verified notification email and retained the fallback display name; the SMTP host was configured. This establishes an account-data eligibility blocker, not an inbox-delivery result or proof that the provider never sends email. A real fresh provider sign-in after a future rollout is still required to verify the provider's current claims. The diagnostic session was revoked; no live task/settings were changed.
Validation passed locally on Linux AMD64 Docker/desktop browser tooling: complete backend tests and Go vet with the real pinned importer; focused API/auth/configuration/notification/runner race checks; UI lint/build; SSO profile, activity, email, advanced-options and mobile-file-list browser suites; guided-flow regression at 1280/390/320px; complete disposable container/browser walkthrough with real queue/SQLite, container-replacement upload recovery/SHA-256, full-set analysis, history/results, administration, logout and encrypted-settings restart; nine policy/contract tests and source/document checks; redacted staged/full-history secret scans. The smoke walkthrough was updated to use collapsed-group navigation and disambiguate the additional notification status region. Disposable stack containers/networks/volumes were removed.
Security/release limits: refreshed gosec policy passes with 29 existing findings and no new findings or baseline expansion. govulncheck is blocked by new module-only GO-2026-6860 and GO-2026-6866 advisories against unchanged x/net v0.61.0 pins (fixed in v0.62.0); it reports no affected package/function trace for them. The retained npm audit reports 13 advisories (12 moderate, one high) in the unchanged lockfile. Existing release gates/baselines have not been waived or weakened. Local checks do not establish native ARM64 release clearance, physical-device behavior, real-provider email/inbox delivery or large-library performance.
Other current running-state text, retained for owner wording review:
State: source published; this follow-up has NOT been image-published or deployed. The existing 0.1.1-pilot.1 installation/digests remain unchanged and must not be relabeled with different contents. Next: resolve dependency release blockers and choose a new pilot build identity, then coordinate any requested build/rollout and verify fresh real SSO sign-in plus owner email consent. #25 stays open for the remaining release/deployed verification.
Starting the owner-requested dependency-advisory remediation before the next pilot build. Scope: refresh advisory data, update affected Go/npm dependencies with the smallest compatible changes, verify actual importer/runtime dependency exposure, and run dependency/security plus relevant backend/browser checks. Existing gates remain in force; no baseline expansion, #12/WIP integration, release-image publication or live deployment is part of this remediation.
Dependency remediation is published on main in a279a1bd77c0f600f705856077b6a6312457b87b, following the guided-workflow commit
cc91065. The owner has now requested a native 0.1.2-pilot.1 build, digest-pinned SOPS/Compose update and APP-02 rollout after validation.Fixed pins: x/net v0.62.0, go-jose/v4 v4.1.6, Echo/v4 v4.16.3, follow-redirects 1.16.2 and minimatch 11.0.1. Fresh npm audit reports zero advisories. The minimatch override is development tooling only; TS/TSX lint selection, actual rule errors and generated-asset exclusions were checked. A loopback cross-realm redirect test confirms synthetic credentials are stripped. Go JOSE's upstream 4096-bit JWK RSA bound is retained.
The fresh image database additionally identified the JOSE/Echo advisories that were absent from govulncheck, plus unfixed Debian CVE-2026-84243. All three images explicitly default to the C locale and empty LANGUAGE; actual Docker isolation checks confirm processor defaults even with hostile controller locale values. The Debian tracker has no fixed package. Two exact libc-bin/libc6 2.41-12+deb13u4 records are therefore reviewed as OPEN, not patched, with rationale/limits in the committed Debian triage record. This is a scoped change from the initial no-baseline-expansion approach because the refreshed image inventory revealed a new unfixed distribution advisory. No source/Go-advisory exception was added or policy logic relaxed; a newly available fix or unknown package version still blocks policy. Existing unused OpenPGP module-only exception remains unchanged.
Final local validation: full backend/vet and focused API/auth/configuration/notification/runner races pass; actual Docker isolation/locale inspection passes; UI clean install/lint/build and focused browser checks pass; guided workflow passes at 1280/390/320px; complete disposable container/browser walkthrough and production-mode HTTPS/proxy/origin/cookie/upload/readiness/recovery checks pass. One backend attempt exceeded its existing 120-second package limit under concurrent load; the unchanged-limit retry and final test build pass. The terminal-email browser fixture was corrected to use a real terminal delivery state and now checks OFF panels disappear. Nine source contracts/policy tests and staged/full-history secret scans pass. Fresh gosec retains 29 reviewed findings across 43 production files without new findings; source/importer vulnerability policies and all three runtime image policies pass, preserving raw findings and reviewed open items.
The infrastructure native build is being updated to enforce the selected source's pinned source/importer/final-image advisory policies before publication and to retain exact checked image identities. Deployment is also getting a read-only saved-task idle check immediately before restart. No release image or rollout is claimed yet; source remains separate from build/deployment. #12/PR #19 are untouched. Further build/digest/deployment evidence will follow here after the authorized workflow completes.
0.1.2-pilot.1 is published and deployed to APP-02 at the owner's explicit request.
cc91065guided-workflow/SSO follow-up and dependency remediation described in comment 632. Importer remains 0.32.0-bridge.4; #12/PR #19 are untouched.Published immutable image digests:
Post-rollout checks: public HTTPS readiness is 200 Ready; the served bundle is index-qmyTMtxO.js and contains the new stepper/background guidance. Both local recovery and SSO availability are confirmed. Recovery-admin sign-in, retained SSO accounts, new provider-diagnostic DTO fields and applied saved settings were verified read-only, then the diagnostic session was revoked. The configured provider's public RSA keys fit the patched JOSE bound (2048 bits). These are not a fresh owner SSO callback or inbox-delivery test.
Next owner check: sign out and sign in THROUGH SSO to refresh the legacy account's provider claims, then inspect username/email/verification and last refresh in administration and choose per-task email consent if available. Existing sessions intentionally do not fetch new provider claims. Physical-device behavior, actual relay/inbox outcomes, representative library/performance acceptance and full dual-architecture release gates remain separate. Reviewed unfixed distribution findings, including the new scoped glibc disposition, remain open; no claim of zero scanner findings, blanket waiver or true 1.0 readiness is made. The already published 0.1.1-pilot.1 and 0.1.2-pilot.1 versions must not be reused. #25 stays open for the remaining owner verification and wording review.
Owner verification after the 0.1.2-pilot.1 rollout: signing out and back in through SSO now displays the expected name, and the analysis email checkbox is interactive. This confirms the fresh-login profile-refresh and notification-eligibility checkpoints from comment 641. The owner is waiting for the current analysis to finish to check the notification. Completion-email sending/relay acceptance/inbox delivery are not yet verified; #25 remains open for that outcome and the remaining owner review. No additional task, test email or deployment was started.
Owner validation is complete on deployed 0.1.2-pilot.1: all requested behavior worked as planned, including the new layout and the analysis-completion email. Earlier owner feedback separately confirmed fresh SSO name/profile refresh and interactive notification consent. The owner explicitly authorized closure. Implementation, dependency/security review, native build, immutable image pins, deployment and checks are recorded in comments 624, 632, 641 and 646. Closing #25 as accepted and verified for this pilot. Broader full-release/performance/security work remains tracked separately; #12/PR #19 are unchanged.