Skip to content

Converge DataOps onto one canonical frontend #148

Description

@alexeygrigorev

Converge DataOps onto one canonical frontend

Status: in progress — epic coordination; child implementation is gated below
Tags: bug, migration, portal, frontend, backend, infra, testing, P0
Depends on: None
Blocks: #155 and retirement of the backend fallback SPA
Next owner: Orchestrator — advance #150 first; after #150 is accepted and integrated, advance #151 and #152 independently

Product decision

Top-level frontend/ is the only canonical DataOps UI. The backend SPA is migration debt, not a second supported product, but it must remain intact until every production-visible behavior has an accepted canonical replacement.

This issue is the epic and source of product intent. It is not an implementation unit: no monolithic source candidate may be accepted, committed, merged, or use Closes #148. Each child below must complete the repository lifecycle independently.

Child issue graph

“Accepted and integrated” means Tester PASS, PM ACCEPTED, a Software Engineer commit, orchestrator merge/push to main, and the applicable source CI/On-Call gate. A draft or passing local worktree does not satisfy a dependency.

Cross-cutting acceptance criteria

  • Each child body is self-contained, names its next owner, dependencies, observable acceptance criteria, behavior-level test scenarios, screenshots where UI changes, out-of-scope boundaries, and lifecycle gates.
  • Package the canonical frontend and delete the backend fallback SPA #154 does not delete backend/src/pages/, backend/src/public/, or meaningful legacy tests until Preserve canonical frontend routes and deep links #150–Port runtime template and workflow administration to the canonical frontend #153 are accepted and integrated and replacement behavior coverage is green.
  • The capability/test inventory classifies every legacy surface/action and points to accepted replacement evidence. Hidden or fallback-only behavior is not silently retired.
  • Route, auth, API JSON, role, proof/artifact, workflow/SOP return-context, error, empty, conflict, accessibility, and mobile behavior remain observable in the canonical UI.
  • Source-served and actual SAM-BackendFunction artifact-served evidence use the same deterministic fixture and prove the same shell, routes, behavior, and bytes.
  • Broad information-architecture redesign remains a separate follow-up; parity work may make capabilities reachable but does not authorize a new framework or third frontend.

Current uncommitted prototype disposition

The uncommitted candidate in .tmp/worktrees/issue-148 is a read-only donor, not an acceptable #148 implementation.

Prototype slice Owning child Disposition
Canonical hash/deep-link adapter #150 Reimplement. The prototype does not implement the route contract or browser history/deep-link behavior.
Inbox code in frontend/src/app.js and frontend/src/styles.css plus its screenshots/test fixture #151 Salvage only as a draft. Refactor for the groomed API behavior, progressive mobile UI, deterministic real-backend E2E, and accepted route contract.
Assistant detail/actions in frontend/src/app.js plus its screenshot fixture #152 Salvage only as a draft. Add create/update/submit/dry-run, retry-then-submit, safe clickable artifact access, state/permission behavior, mobile, and real behavior tests.
Runtime-template maintenance and Settings/Admin placement #153 Reimplement the editor. Raw JSON is not the accepted primary operator UI; add structured fields, safe admin authorization, confirmation/conflict behavior, and instantiation proof. Admin placement may be reused only after role checks pass.
Capability matrix draft in PORTAL_ANALYSIS.md #154 Use as research input only. Before deletion, replace/complete it with a per-capability legacy location, canonical location, API/mutation, role/state, old test, replacement test, and accepted-child evidence matrix.
Portal/router/package/SAM-environment changes and artifact verifier #154 Rebase and reimplement after #150–#153 integrate. The current verifier covers backend/dist, not the actual .aws-sam/build/BackendFunction artifact, so it does not satisfy the SAM gate.
Bulk deletion of legacy UI/unit/E2E files #154 Do not carry forward now. Restore/preserve behavior tests and port them in the owning children before deleting only implementation-specific coverage at cutover.
Existing .tmp/screenshots/issue-148/ #151–#154 Reference evidence only; it is not lifecycle acceptance. Each child needs fresh issue-scoped Tester/Designer evidence against its accepted implementation.

Required lifecycle

For every child:

  1. Software Engineer implements in a fresh child worktree without committing.
  2. Required specialist review(s) run; a specialist PASS does not replace Tester or PM.
  3. Tester runs the complete workflow, records commands/counts/exit codes, and captures/reads required screenshots.
  4. Product Manager accepts from the operator perspective.
  5. Software Engineer commits with Closes #<child> only after acceptance.
  6. Orchestrator merges locally and pushes main.
  7. On-Call verifies applicable source CI/CD. Verify the canonical frontend through normal DataOps deployment #155 separately owns normal deployed acceptance.

Test scenarios

Scenario: Dependency-safe cutover

Given: #150–#153 child candidates or only local passing evidence
When: #154 is considered for implementation or deletion
Then: it remains blocked until all four children are accepted and integrated into main

Scenario: Prototype is decomposed

Given: the uncommitted issue-148 donor worktree
When: child implementation starts
Then: only narrow reviewed hunks are reimplemented in the owning fresh child worktree; the monolithic diff and bulk test deletion are never committed as #148

Scenario: Epic completion

Given: #150–#154 are accepted, integrated, and source gates pass
When: normal deployment is available
Then: #155 performs deployed acceptance; #148 closes only after the child graph and final product outcome are complete

Out of scope

Activity

  1. added
    bugSomething is broken
    migrationImport or migration work
    portalShared portal shell and UX
    infraDeployment and infrastructure
    P0Must have
    on Aug 11, 2026
  2. changed the title [-]Converge DataOps to one canonical frontend[/-] [+]Converge DataOps onto one canonical frontend[/+] on Aug 11, 2026
  3. alexeygrigorev commented on Aug 11, 2026

    @alexeygrigorev
    MemberAuthor

    PM GROOMING PASS

    Rewrote #148 as an agent-ready P0 convergence spec after reviewing the preserved UI analysis, both frontend implementations, portal/router fallback, SAM packaging, deployment workflow, browser/unit coverage, planning direction, and current #136/#143/#147 tracker state.

    Key decisions:

    • top-level frontend/ is the sole canonical UI;
    • legacy deletion is gated by a complete capability/test matrix and porting, with real Inbox/intake called out as a confirmed gap;
    • local, default E2E, built artifact, and deployed runtime must use the same assets, and missing assets fail explicitly instead of falling back;
    • legacy tests must be retargeted to canonical behavior, with deterministic paired source/artifact screenshots;
    • the broad IA redesign remains out of scope except where parity needs a reachable home;
    • Migrate Sponsor CRM GSIs in a protected stage-only workflow #136 gates only normal deployed verification, not implementation, local gates, review, or merge;
    • rollout and rollback stay on the existing main-push GitHub Actions OIDC path, with no manual deploy or AWS action.

    The issue had no needs grooming label. Existing appropriate labels were preserved unchanged.

    Verdict: PASS — ready for Software Engineer.

  4. alexeygrigorev commented on Aug 11, 2026

    @alexeygrigorev
    MemberAuthor

    User approved the convergence guideline on 2026-08-11:

    • top-level frontend/ is canonical;
    • production-visible Inbox, assistant lifecycle, and runtime-template administration are retained before cutover;
    • the broader information-overload redesign remains separate follow-up work.

    Implementation issue graph:

    Work is being performed directly in the current checkout as requested. Research derivatives remain under gitignored .tmp/.

  5. alexeygrigorev commented on Aug 11, 2026

    @alexeygrigorev
    MemberAuthor

    PM ISSUE-GRAPH RECONCILIATION — BLOCK monolithic source; child graph PASS

    Reconciled #148 and user-authored #150–#154 against the process, current specialist findings, API/route/template/SAM code, and the uncommitted .tmp/worktrees/issue-148 candidate.

    Verdict: BLOCK accepting, committing, merging, or closing from the monolithic #148 worktree. The 48-path candidate (about +554/-22,103) deletes legacy sources and broad behavior coverage before child acceptance, has no canonical hash/deep-link adapter, implements assistant retry without the required retry→submit sequence, renders assistant artifact access as plain URI text, uses raw JSON as runtime-template administration without an adequate server-side admin mutation guard, and verifies backend/dist rather than the actual SAM BackendFunction.

    The issue graph/specification is now PASS:

    Worktree handling: keep .tmp/worktrees/issue-148 untouched as a read-only donor. Do not commit it, merge it, reset it, or use it as the implementation branch for any child. Create a fresh child worktree from clean current main; manually reimplement only the narrow owned slice described in that child. Preserve all deleted tests until replacement behavior coverage is green. After #150–#153 integrate, create a fresh #154 worktree and reimplement/rebase packaging/removal against that integrated state. Remove the donor only after useful patches/evidence have been extracted and accepted.

    No repository, AWS, deployment, workflow-dispatch, commit, or push action was performed by this reconciliation.

  6. alexeygrigorev commented on Aug 11, 2026

    @alexeygrigorev
    MemberAuthor

    Source convergence is complete in e904a5d on main. The canonical frontend/ now owns legacy route compatibility, Inbox, full assistant lifecycle, and runtime-template administration. Production packaging copies only that tree; the retired backend pages/public SPA and its serving paths are deleted. Verification: backend 1,221 passed + 1 skipped, Playwright/API E2E 182 passed, planning-doc tests 7 passed, typecheck/build/SAM validate/full SAM build passed, and the actual BackendFunction artifact contains canonical assets with no fallback tree. #150–#154 are closed. This umbrella stays open only for normal deployed acceptance in #155; no manual deployment or guard bypass was used.

  7. alexeygrigorev commented on Aug 12, 2026

    @alexeygrigorev
    MemberAuthor

    The canonical frontend convergence is complete. Children #150, #151, #152, #153, #154, and #156 are closed and integrated; #155 final normal-deployment acceptance has passed. Live ops.dtcdev.click now serves the single top-level frontend/ artifact, with authenticated desktop/mobile route evidence and exact source/live byte parity recorded on #155. Deferred infrastructure cleanup (Sponsor TTL) remains separately tracked in #163.

  8. alexeygrigorev commented on Aug 12, 2026

    @alexeygrigorev
    MemberAuthor

    Accepted: convergence is complete. All canonical frontend child issues and final deployed acceptance are closed; the live portal serves one canonical frontend. Sponsor TTL restoration remains a separate follow-up in #163.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P0Must havebackendBackend/APIbugSomething is brokenfrontendFrontend UIinfraDeployment and infrastructuremigrationImport or migration workportalShared portal shell and UXtestingTests and QA

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions