From 2d74fed039358b2cd6100298b10964c24a327904 Mon Sep 17 00:00:00 2001 From: zenchantlive Date: Thu, 12 Feb 2026 23:46:39 -0800 Subject: [PATCH 1/3] test(graph): add directional hint contract in graph legend --- src/components/graph/graph-section.tsx | 4 ++++ tests/guards/graph-responsive-contract.test.mjs | 3 +++ 2 files changed, 7 insertions(+) diff --git a/src/components/graph/graph-section.tsx b/src/components/graph/graph-section.tsx index cfca05c..68559c0 100644 --- a/src/components/graph/graph-section.tsx +++ b/src/components/graph/graph-section.tsx @@ -78,6 +78,10 @@ export function GraphSection({ In progress blockers: {blockerAnalysis.inProgressBlockerCount}

) : null} +

+ Read left to right:{' '} + Left = blockers, middle = selected task, Right = work this task unblocks. +

{/* ReactFlow graph viewport */} diff --git a/tests/guards/graph-responsive-contract.test.mjs b/tests/guards/graph-responsive-contract.test.mjs index de571b9..8698535 100644 --- a/tests/guards/graph-responsive-contract.test.mjs +++ b/tests/guards/graph-responsive-contract.test.mjs @@ -58,6 +58,9 @@ test('extracted graph section has viewport and legend', async () => { assert.match(graphSection, /blockerAnalysis/, 'should show blocker stats'); assert.match(graphSection, /hideClosed/, 'should support hideClosed state in legend'); assert.match(graphSection, /!hideClosed/, 'done legend should be hidden when closed items are hidden'); + assert.match(graphSection, /Read left to right/, 'legend should include plain directional hint'); + assert.match(graphSection, /Left = blockers/, 'legend should include left/right dependency meaning'); + assert.match(graphSection, /Right = work this task unblocks/, 'legend should include downstream meaning'); }); test('graph node card supports tooltips and actionable glow', async () => { From c0d61354ed3647505c0f7802e7204a59f0e1e037 Mon Sep 17 00:00:00 2001 From: zenchantlive <103866469+zenchantlive@users.noreply.github.com> Date: Thu, 12 Feb 2026 23:49:16 -0800 Subject: [PATCH 2/3] Update src/components/graph/graph-section.tsx Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- src/components/graph/graph-section.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/graph/graph-section.tsx b/src/components/graph/graph-section.tsx index 68559c0..6819501 100644 --- a/src/components/graph/graph-section.tsx +++ b/src/components/graph/graph-section.tsx @@ -80,7 +80,7 @@ export function GraphSection({ ) : null}

Read left to right:{' '} - Left = blockers, middle = selected task, Right = work this task unblocks. + Left = blockers, middle = selected task, Right = work unblocked by this task.

From 3795cf199106a7dd41e2f89ed3e5d700c46d5b15 Mon Sep 17 00:00:00 2001 From: zenchantlive <103866469+zenchantlive@users.noreply.github.com> Date: Thu, 12 Feb 2026 23:49:24 -0800 Subject: [PATCH 3/3] Update tests/guards/graph-responsive-contract.test.mjs Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- tests/guards/graph-responsive-contract.test.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/guards/graph-responsive-contract.test.mjs b/tests/guards/graph-responsive-contract.test.mjs index 8698535..9d05313 100644 --- a/tests/guards/graph-responsive-contract.test.mjs +++ b/tests/guards/graph-responsive-contract.test.mjs @@ -60,7 +60,7 @@ test('extracted graph section has viewport and legend', async () => { assert.match(graphSection, /!hideClosed/, 'done legend should be hidden when closed items are hidden'); assert.match(graphSection, /Read left to right/, 'legend should include plain directional hint'); assert.match(graphSection, /Left = blockers/, 'legend should include left/right dependency meaning'); - assert.match(graphSection, /Right = work this task unblocks/, 'legend should include downstream meaning'); + assert.match(graphSection, /Right = work unblocked by this task/, 'legend should include downstream meaning'); }); test('graph node card supports tooltips and actionable glow', async () => {