Skip to main content

Frontend Remediation Execution Plan

Last updated: 2026-03-06

This plan turns the identified frontend issues into an execution backlog and implementation order.

Delivery Order​

  1. FE-001 Root Drawer Host Consolidation (P0)
  2. FE-002 EntityLink Surface Enable Policy (P0)
  3. FE-003 Drawer Contract Test Pack (P0)
  4. FE-004 Shared Shell i18n Debt Cleanup (P1)
  5. FE-005 Inventory Primitive: Bulk Toolbar Standardization (P1)
  6. FE-006 Inventory Primitive: Freshness and Live Announcements (P1)
  7. FE-007 Questions Usage Dependency View Upgrade (P1)
  8. FE-008 StandardHub Contract Hardening (P2)
  9. FE-009 Mobile Task-Tier Pass for Shell and Inventory (P2)
  10. FE-010 Release Gate Validation and Evidence (P0/P1 closeout)

Execution Status​

  • FE-001: Complete
  • FE-002: Complete
  • FE-003: Complete
  • FE-004: Complete
  • FE-005: Complete
  • FE-006: Complete
  • FE-007: Complete
  • FE-008: Complete
  • FE-009: Complete
  • FE-010: In progress (targeted checks pass; full lint/test currently blocked by pre-existing repo-wide issues)

Backlog Tickets​

FE-001 Root Drawer Host Consolidation (P0)​

  • Estimate: 2 days
  • Depends on: none
  • Scope:
    • Move single drawer host/coordinator ownership to the root layout contract.
    • Keep one URL/state drawer source of truth for all routes.
    • Simplify AppShell to register drawer config instead of hosting its own coordinator.
  • Target files:
    • frontend/src/routes/+layout.svelte
    • frontend/src/lib/components/shared/AppShell.svelte
    • frontend/src/lib/components/shared/patterns/drawer/DrawerCoordinator.svelte
  • Done when:
    • Back/Forward, ESC, focus restore, and deep-link open/close behavior are consistent across routed pages.
  • Estimate: 1.5 days
  • Depends on: FE-001
  • Scope:
    • Enforce explicit surface-level drawer-peek enablement.
    • Keep canonical full-page navigation for non-enabled surfaces.
    • Preserve native Cmd/Ctrl-click and open-in-new-tab behavior.
  • Target files:
    • frontend/src/lib/components/shared/entity-link.ts
    • frontend/src/lib/components/shared/EntityLink.svelte
  • Done when:
    • Normal click interception only occurs where drawer peek is enabled.

FE-003 Drawer Contract Test Pack (P0)​

  • Estimate: 1.5 days
  • Depends on: FE-001, FE-002
  • Scope:
    • Add and update tests for drawer URL contract and interaction semantics.
    • Cover deep-link, replace semantics, focus restore, and browser-modifier click behavior.
  • Done when:
    • Regressions in drawer hydration/open/close behavior are caught by tests.

FE-004 Shared Shell i18n Debt Cleanup (P1)​

  • Estimate: 2 days
  • Depends on: FE-001
  • Scope:
    • Remove hardcoded user-facing strings from shared shell primitives.
    • Ensure ARIA and helper strings are message-backed.
  • Target files:
    • frontend/src/lib/components/shared/GlobalNav.svelte
    • frontend/src/lib/components/shared/bits/DialogSheet.svelte
    • frontend/messages/en.json
  • Done when:
    • Shared shell copy is fully localizable.

FE-005 Inventory Primitive: Bulk Toolbar Standardization (P1)​

  • Estimate: 2 days
  • Depends on: FE-002
  • Scope:
    • Promote preview/apply bulk flow into shared inventory components.
    • Remove page-specific duplication for bulk patterns.
  • Done when:
    • New inventory pages can reuse the same bulk toolbar contract.

FE-006 Inventory Primitive: Freshness and Live Announcements (P1)​

  • Estimate: 1.5 days
  • Depends on: FE-005
  • Scope:
    • Add shared freshness model (updated, stale, manual refresh).
    • Add shared aria-live announcement channel for key list interactions.
  • Done when:
    • Sort/selection/bulk updates are announced and freshness semantics are consistent.

FE-007 Questions Usage Dependency View Upgrade (P1)​

  • Estimate: 2 days
  • Depends on: FE-005
  • Scope:
    • Replace count-only usage signals with dependency-aware context and links.
  • Target files:
    • frontend/src/routes/questions/+page.svelte
  • Done when:
    • Authors can identify and open impacted dependencies from list/drawer context.

FE-008 StandardHub Contract Hardening (P2)​

  • Estimate: 1.5 days
  • Depends on: FE-001
  • Scope:
    • Align StandardHub to documented shell expectations (banner/tab/activity slots where required).
  • Done when:
    • Future hub routes do not reinvent shell interaction patterns.

FE-009 Mobile Task-Tier Pass for Shell and Inventory (P2)​

  • Estimate: 2 days
  • Depends on: FE-004, FE-006
  • Scope:
    • Finalize mobile/iPad-safe behavior for nav, drawers, and inventory controls.
  • Done when:
    • Tier A/B acceptance checks pass without desktop-only dead ends.

FE-010 Release Gate Validation and Evidence (P0/P1 closeout)​

  • Estimate: 1 day
  • Depends on: FE-003 through FE-009
  • Scope:
    • Run and record:
      • npm run lint
      • npm run check
      • npm run test
      • npm run build
  • Done when:
    • CI/local gates are green and evidence is linked in PR notes.

Current blockers observed on 2026-03-06:

  • npm run lint fails with pre-existing repo-wide issues in unrelated files (EntityLink.svelte, drawer primitives, assignments/users/roles routes, and TaxonomyPickerSidebar.svelte).
  • npm run test executes vendored SDK dependency tests under src/lib/sdk/**/node_modules, which fail due missing optional dependencies (recheck, @web-std/file, @seriousme/openapi-schema-validator).
  • Targeted checks for the touched surfaces pass (npm run check, targeted vitest run, npm run build).

Working Notes​

  • Current rollout reality remains explicit: /questions is the only production-wired read-only drawer-peek surface.
  • Other surfaces should remain canonical full-page until they are explicitly wired in this sequence.