Skip to content

EPIC-06 Refinement: Non-Blocking Review Observations #257

@steilerDev

Description

@steilerDev

Context

This issue collects all non-blocking review observations from EPIC-06 stories (6.1-6.9) that were noted during PR reviews but not required for merge. Per the project workflow, these refinements are addressed before UAT validation.

Observations

From PR #248 (Story 6.2 - Scheduling Engine) - Security Engineer

  1. anchorWorkItemId schema lacks minLength: 1 - Empty string handled by handler logic, but adding minLength: 1 to the Fastify JSON schema provides defense-in-depth consistency. File: server/src/routes/schedule.ts

From PR #253 (Story 6.6 - Gantt Interactive Features) - Product Architect

  1. Date parsing duplication in useGanttDrag.ts - The YYYY-MM-DD string-to-Date parsing pattern appears 4 times. Extract a parseDateString() helper to reduce repetition. File: client/src/hooks/useGanttDrag.ts

From PR #255 (Story 6.8 - Calendar View) - Product Architect

  1. Dead code: getShortMonthName() exported but unused - Remove from calendarUtils.ts or use it. File: client/src/components/calendar/calendarUtils.ts

From PR #255 (Story 6.8 - Calendar View) - UX Designer

  1. Focus ring uses raw box-shadow instead of --shadow-focus token in CalendarItem.module.css - should use var(--shadow-focus) for consistency with rest of app
  2. Hardcoded pixel values where spacing tokens exist - margin-bottom: 2px to var(--spacing-0-5), gap: 1px to var(--spacing-px), padding: 1px to var(--spacing-px) in calendar CSS files
  3. ISO date string in aria-label for day cells - human-readable format would improve screen reader experience (e.g., Monday, February 24 instead of 2026-02-24)
  4. Week view no minimum column width on mobile - repeat(7, 1fr) compresses to unreadable widths on narrow viewports. Add min-width: 480px to trigger horizontal scroll.

From PR #256 (Story 6.9 - Responsive and Accessibility) - UX Designer

  1. Sidebar row height 40px < 44px touch target on mobile - Add min-height: 44px CSS override on .sidebarRow at mobile breakpoint in GanttSidebar.module.css
  2. closeButton and milestoneActionButton are 40x40px, not 44x44px on mobile - Increase to min-width: 44px; min-height: 44px in MilestonePanel.module.css
  3. Redundant @media (max-width: 767px) block in GanttSidebar.module.css - Duplicates the tablet (max-width: 1279px) rules. Clean up.

Implementation Plan

  • Item 1: Backend developer (schema validation fix)
  • Items 2-10: Frontend developer (CSS tokens, dead code, accessibility, responsive)

Acceptance Criteria

  • All 10 observations addressed
  • Pre-commit hook passes (lint, format, typecheck, build)
  • No regressions in existing tests

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions