{"id":"task-1771238094-7dc9","title":"Compact Latest Results KPI section","description":"Remove coachmark/pulse, move instruction text to heading row right area, enforce 1x4 mobile and 4x1 md+ KPI layout, reduce KPI card whitespace in PatientSummaryTile while preserving content/interactions.","status":"closed","priority":1,"blocked_by":[],"loop_id":"primary-20260216-103430","created":"2026-02-16T10:34:54.490955020+00:00","closed":"2026-02-16T10:36:37.836478822+00:00"} {"id":"task-1771238560-5ec5","title":"Validate KPI objective and close loop","description":"Run typecheck/lint/build and confirm Latest Results KPI compaction acceptance criteria remain satisfied before LOOP_COMPLETE event.","status":"closed","priority":1,"blocked_by":[],"loop_id":"primary-20260216-104201","created":"2026-02-16T10:42:40.351948381+00:00","closed":"2026-02-16T10:43:32.976626807+00:00"} {"id":"task-1771239437-05c3","title":"Rename Active Projects language to Significant Interventions","description":"Update Projects tile heading, SubNav label, and search palette section naming per Ralph prompt.","status":"closed","priority":1,"blocked_by":[],"loop_id":"primary-20260216-105626","created":"2026-02-16T10:57:17.787908637+00:00","closed":"2026-02-16T10:58:29.985946409+00:00"} {"id":"task-1771239437-64c3","title":"Add autoplay + reduced-motion behavior for carousel","description":"Install Embla autoplay plugin, pause on interaction, disable autoplay for prefers-reduced-motion users.","status":"closed","priority":2,"blocked_by":["task-placeholder"],"loop_id":"primary-20260216-105626","created":"2026-02-16T10:57:17.812228675+00:00","closed":"2026-02-16T10:57:24.084148333+00:00"} {"id":"task-1771239437-67bc","title":"Responsive polish and full verification for interventions carousel","description":"Tune mobile/desktop viewport behavior and run lint/typecheck/build before closure.","status":"closed","priority":2,"blocked_by":["task-placeholder"],"loop_id":"primary-20260216-105626","created":"2026-02-16T10:57:17.812991662+00:00","closed":"2026-02-16T10:57:24.085921620+00:00"} {"id":"task-1771239437-6f55","title":"Implement Embla carousel in ProjectsTile","description":"Replace list layout with Embla carousel slides, preserve click/keyboard panel opening, add thumbnail placeholder region.","status":"closed","priority":1,"blocked_by":[],"loop_id":"primary-20260216-105626","created":"2026-02-16T10:57:17.814939655+00:00","closed":"2026-02-16T11:00:49.359576691+00:00"} {"id":"task-1771239444-811f","title":"Add autoplay + reduced-motion behavior for carousel","description":"Install Embla autoplay plugin, pause on interaction, disable autoplay for prefers-reduced-motion users.","status":"closed","priority":2,"blocked_by":["task-1771239437-6f55"],"loop_id":"primary-20260216-105626","created":"2026-02-16T10:57:24.098597492+00:00","closed":"2026-02-16T11:02:34.691389297+00:00"} {"id":"task-1771239444-850d","title":"Responsive polish and full verification for interventions carousel","description":"Tune mobile/desktop viewport behavior and run lint/typecheck/build before closure.","status":"closed","priority":2,"blocked_by":["task-1771239437-6f55"],"loop_id":"primary-20260216-105626","created":"2026-02-16T10:57:24.099597797+00:00","closed":"2026-02-16T11:04:10.599296057+00:00"} {"id":"task-1771242437-881e","title":"Implement sidebar-first navigation refactor from plan","description":"Execute .ralph/plan.md: remove TopBar/SubNav flow, move section nav to Sidebar, add mobile collapsed rail/expanded drawer, fix sidebar scroll artifact, preserve smooth section navigation and accessibility, then run lint/typecheck/build.","status":"closed","priority":1,"blocked_by":[],"loop_id":"primary-20260216-114543","created":"2026-02-16T11:47:17.559143490+00:00","closed":"2026-02-16T11:51:48.845671117+00:00"} {"id":"task-1771242783-061d","title":"Resolve build.blocked backpressure checks","description":"Run lint/typecheck/build and emit build.done for sidebar-first refactor loop","status":"closed","priority":1,"blocked_by":[],"loop_id":"primary-20260216-114543","created":"2026-02-16T11:53:03.329247289+00:00","closed":"2026-02-16T11:53:11.190033519+00:00"} {"id":"task-1771242815-5bf7","title":"Backpressure verification for sidebar refactor","description":"Run lint, typecheck, and build; if passing, publish build.done","status":"closed","priority":1,"blocked_by":[],"loop_id":"primary-20260216-114543","created":"2026-02-16T11:53:35.220153099+00:00","closed":"2026-02-16T11:54:04.662510828+00:00"} {"id":"task-1771242892-a940","title":"Route pending backpressure events","description":"Handle build.task.abandoned and build.blocked by delegating with one allowed event based on latest verified state.","status":"closed","priority":1,"blocked_by":[],"loop_id":"primary-20260216-114543","created":"2026-02-16T11:54:52.305473495+00:00","closed":"2026-02-16T11:55:59.668771564+00:00"} {"id":"task-1771242972-6b89","title":"Review sidebar-first navigation refactor","description":"Verify success criteria, run lint/typecheck/build, and publish review event","status":"closed","priority":1,"blocked_by":[],"loop_id":"primary-20260216-114543","created":"2026-02-16T11:56:12.748433048+00:00","closed":"2026-02-16T11:57:36.077138681+00:00"} {"id":"task-1771243071-6dfa","title":"Route review.approved to completion handoff","description":"Handle pending review.approved event by emitting one allowed coordination event and stopping.","status":"closed","priority":1,"blocked_by":[],"loop_id":"primary-20260216-114543","created":"2026-02-16T11:57:51.159227640+00:00","closed":"2026-02-16T11:58:00.760051441+00:00"} {"id":"task-1771243094-8aca","title":"Route pending build.blocked event","description":"Publish one build.done event with required backpressure evidence fields and stop.","status":"closed","priority":2,"blocked_by":[],"loop_id":"primary-20260216-114543","created":"2026-02-16T11:58:14.887500166+00:00","closed":"2026-02-16T12:00:02.293516888+00:00"} {"id":"task-1771244841-616d","title":"Define canonical timeline entity model","description":"Create single source-of-truth dataset for career + education entries (titles, graph labels, date ranges, details, skills) and update shared types/data modules.","status":"closed","priority":1,"blocked_by":[],"loop_id":"primary-20260216-122522","created":"2026-02-16T12:27:21.221550833+00:00","closed":"2026-02-16T12:32:48.674110752+00:00"} {"id":"task-1771244841-cb07","title":"Stabilize pathway graph hover/render lifecycle","description":"Refactor CareerConstellation highlight flow so hover from graph/cards shares one state without re-running force simulation or causing graph jiggle.","status":"closed","priority":1,"blocked_by":[],"loop_id":"primary-20260216-122522","created":"2026-02-16T12:27:21.314120585+00:00","closed":"2026-02-16T12:35:34.744234577+00:00"} {"id":"task-1771244841-2f8e","title":"Unify experience + education card rendering","description":"Replace split WorkExperienceSubsection/EducationSubsection flow with one unified timeline list; add Career Intervention and Education Intervention pills with education cards right-aligned; remove separate education section.","status":"closed","priority":1,"blocked_by":[],"loop_id":"primary-20260216-122522","created":"2026-02-16T12:27:21.405392078+00:00","closed":"2026-02-16T12:40:24.982347920+00:00"} {"id":"task-1771244841-9748","title":"Aggregate sidebar tags from canonical timeline skills and verify","description":"Derive top-frequency skills from canonical timeline entries for Sidebar tags; run lint/typecheck/build.","status":"closed","priority":2,"blocked_by":[],"loop_id":"primary-20260216-122522","created":"2026-02-16T12:27:21.497481729+00:00","closed":"2026-02-16T12:42:03.342005926+00:00"} {"id":"task-1771246519-9ce3","title":"Constellation data parity: career-only role mapping","description":"Add explicit career/education selectors in src/data/timeline.ts and ensure buildConstellationData derives role nodes/links from career entities only.","status":"closed","priority":1,"blocked_by":[],"loop_id":"primary-20260216-125331","created":"2026-02-16T12:55:19.302308391+00:00","closed":"2026-02-16T12:56:35.930542017+00:00"} {"id":"task-1771246519-1e54","title":"Constellation interaction remediation: hover/focus layer","description":"Resolve pointer interception from accessibility overlay in CareerConstellation while preserving keyboard and touch behavior; stabilize hover/pin highlight transitions.","status":"closed","priority":1,"blocked_by":[],"loop_id":"primary-20260216-125331","created":"2026-02-16T12:55:19.400987872+00:00","closed":"2026-02-16T13:01:43.475882935+00:00"} {"id":"task-1771246519-92f0","title":"Timeline parity + token alignment","description":"Align DashboardLayout/TimelineInterventionsSubsection role mapping with canonical timeline semantics and replace invalid mono token usages in constellation/timeline-adjacent components.","status":"closed","priority":2,"blocked_by":[],"loop_id":"primary-20260216-125331","created":"2026-02-16T12:55:19.496369652+00:00","closed":"2026-02-16T13:10:13.908306807+00:00"} {"id":"task-1771246519-fd59","title":"Backpressure and manual review evidence","description":"Run lint/typecheck/build and capture required manual behavioral checks in .ralph/review.md.","status":"closed","priority":1,"blocked_by":[],"loop_id":"primary-20260216-125331","created":"2026-02-16T12:55:19.589153691+00:00","closed":"2026-02-16T13:05:11.472526635+00:00"} {"id":"task-1771247453-c78f","title":"Resolve build.blocked backpressure gate","description":"Coordinate planner/builder pass to satisfy backpressure contract and emit compliant build.done payload fields.","status":"closed","priority":1,"blocked_by":[],"loop_id":"primary-20260216-125331","created":"2026-02-16T13:10:53.575377010+00:00","closed":"2026-02-16T13:13:10.138432665+00:00"} {"id":"task-1771247613-8412","title":"Recover build.blocked gate after abandoned retries","description":"Coordinate recovery for build.task.abandoned/build.blocked by delegating to Constellation Planner for a compliant backpressure closure plan and full build.done field contract.","status":"closed","priority":1,"blocked_by":[],"loop_id":"primary-20260216-125331","created":"2026-02-16T13:13:33.623635920+00:00","closed":"2026-02-16T14:00:46.735863152+00:00"} {"id":"task-1771250865-84b6","title":"Phase 2: Strength-weighted link styling (stroke width, domain color, bezier curves, highlight)","description":"Links: width 0.5+strength*1.5, domain-colored opacity 0.08+strength*0.12, bezier offset by vertical distance, highlight width 1+strength*2","status":"closed","priority":2,"blocked_by":[],"loop_id":"primary-20260216-135722","created":"2026-02-16T14:07:45.033975574+00:00","closed":"2026-02-16T14:16:43.367692378+00:00"} {"id":"task-1771250867-3847","title":"Phase 2: Skill node visual enhancements (stroke, size encoding, glow filter)","description":"Skill nodes: domain-colored stroke at rest (width 1, opacity 0.4), size by connected role count (base+roleCount*0.8), glow filter on highlight (feGaussianBlur 2-3px)","status":"closed","priority":2,"blocked_by":[],"loop_id":"primary-20260216-135722","created":"2026-02-16T14:07:47.014409046+00:00","closed":"2026-02-16T14:16:43.466730457+00:00"} {"id":"task-1771250867-53ab","title":"Phase 2: Role node visual enhancements (gradient fill, highlight styling)","description":"Role nodes: fill gradient left-right orgColor@0.08 to @0.18, highlight fill-opacity 0.25 stroke-width 2 shadow-md filter","status":"closed","priority":2,"blocked_by":[],"loop_id":"primary-20260216-135722","created":"2026-02-16T14:07:47.938924710+00:00","closed":"2026-02-16T14:16:43.560201060+00:00"} {"id":"task-1771250870-ef11","title":"Phase 2: Entry animation (timeline guides, staggered role/skill/link appearance)","description":"Timeline guides fade 200ms, role nodes slide left staggered 80ms/300ms, skill nodes scale from 0 staggered 30ms/250ms, links stroke-dashoffset, skip if prefers-reduced-motion","status":"closed","priority":2,"blocked_by":[],"loop_id":"primary-20260216-135722","created":"2026-02-16T14:07:50.192275123+00:00","closed":"2026-02-16T14:16:43.655688295+00:00"} {"id":"task-1771250871-282f","title":"Phase 2: Legend with domain node counts","description":"Domain node counts in legend: Technical (8) · Clinical (6) · Leadership (7)","status":"closed","priority":3,"blocked_by":[],"loop_id":"primary-20260216-135722","created":"2026-02-16T14:07:51.272435950+00:00","closed":"2026-02-16T14:16:43.750288318+00:00"} {"id":"task-1771251473-edda","title":"Data: Include education entities in buildConstellationData","description":"Modify buildConstellationData() in timeline.ts to include education entities (A-Levels, MPharm). Update types if needed. Timeline order: A-Levels(2009) → MPharm(2011) → Pre-Reg(2015) → Duty Manager(2016) → Pharmacy Manager(2017) → High Cost Drugs(2022) → Deputy Head(2024) → Interim Head(2025)","status":"closed","priority":1,"blocked_by":[],"loop_id":"primary-20260216-135722","created":"2026-02-16T14:17:53.257500198+00:00","closed":"2026-02-16T14:31:18.540275097+00:00"} {"id":"task-1771251475-c04e","title":"Hook: Create useTimelineAnimation for chronological reveal","description":"All nodes hidden initially (opacity:0), reveal chronologically per role/education entity. rAF+timestamp scheduler, state machine in refs (IDLE→PLAYING→PAUSED→HOLDING→RESETTING→PLAYING). Auto-play after sim settles. Loop: hold 3s → fade 400ms → pause 200ms → restart. Skills already visible get reinforcement pulse (1.3x→1.0x 350ms). Year indicator overlay.","status":"closed","priority":1,"blocked_by":[],"loop_id":"primary-20260216-135722","created":"2026-02-16T14:17:55.507983567+00:00","closed":"2026-02-16T14:31:18.642276867+00:00"} {"id":"task-1771251477-81a2","title":"Visual: Entry animation reveal effects","description":"Role nodes scale from 0 with ease-out-back. New skill nodes scale from 0 with ease-out. Links draw on via stroke-dashoffset. Year indicator top-left monospace. Replace Phase 2 entry animation with timeline-driven animation.","status":"closed","priority":2,"blocked_by":[],"loop_id":"primary-20260216-135722","created":"2026-02-16T14:17:57.098724221+00:00","closed":"2026-02-16T14:31:18.740781337+00:00"} {"id":"task-1771251479-1473","title":"Integration: Wire animation to highlight system (Phase 4)","description":"Multiplicative opacity: animation(0/target) × highlight(1.0/0.15). Hover/tap pauses animation. Highlight only on revealed nodes. Resume 800ms after interaction ends. Explicit pause via button stays paused. Play/pause toggle bottom-right. Mobile accordion + keyboard nav + detail panel work during pause. prefers-reduced-motion shows final state.","status":"closed","priority":2,"blocked_by":[],"loop_id":"primary-20260216-135722","created":"2026-02-16T14:17:59.857204916+00:00","closed":"2026-02-16T14:31:18.838001047+00:00"} {"id":"task-1771251482-f0e9","title":"Accessibility: reduced-motion + play/pause button","description":"prefers-reduced-motion skips animation entirely, shows final state. Play/pause button with aria-label, subtle styling, larger touch target on mobile.","status":"closed","priority":2,"blocked_by":[],"loop_id":"primary-20260216-135722","created":"2026-02-16T14:18:02.061675075+00:00","closed":"2026-02-16T14:31:18.930889962+00:00"} {"id":"task-1771284229-34e9","title":"Plan Stage 1 canonical content schema","description":"Planner hat: identify next unchecked stage and update .ralph/plan.md with scoped file-level migration plan","status":"closed","priority":1,"blocked_by":[],"loop_id":"primary-20260216-232330","created":"2026-02-16T23:23:49.734442590+00:00","closed":"2026-02-16T23:29:43.798920375+00:00"} {"id":"task-1771284608-2942","title":"Stage1 Checkpoint A: add canonical profile content schema/module/helpers","description":"Create src/types/profile-content.ts, src/data/profile-content.ts, and src/lib/profile-content.ts with typed, centralized descriptive text and selectors; no consumer migration in this task.","status":"closed","priority":1,"blocked_by":[],"loop_id":"primary-20260216-232330","created":"2026-02-16T23:30:08.665923960+00:00","closed":"2026-02-16T23:32:25.469667619+00:00"}