---ci---
phase: 3
milestone: v0.1
status: execute
persona: ci-lead-developer
task: T-3.6
requirements:
covered: [REQ-60]
---/ci---
P1-1: dead byTopic Map removed — "No links" now renders per-node when a
node has no incident edges (was: global edges-empty check). P1-2:
batteries↔transport fixture edge corrected to sharedSourceCount 0 —
their linkedSources are disjoint; renders as topical link. React key
collision on duplicate pair-edges also addressed.
---ci---
phase: 3
milestone: v0.1
status: execute
persona: ci-lead-developer
task: T-3.4
requirements:
covered: [REQ-61]
---/ci---
Audited all screens: long-form text carries measure-reading (≤68ch) or
measure-narrow on every body/lead element; heading scale ordered
display → headline → body → caption; caption/label letter-spacing
consistent via tokens; section rhythm via mt-block/spacing-section. No
clipped labels, no truncated text. The P1/P2 token work held; no
changes required — recorded as a pass.
---ci---
phase: 3
milestone: v0.1
status: execute
persona: frontend-engineer
task: T-3.1
requirements:
covered: [REQ-60]
---/ci---
GraphNode/GraphEdge/ProjectGraph/InboxItem types; getProjectGraph +
getTaskInbox added to the ApiClient interface (map to GET /api/graph,
GET /api/tasks in v0.2); fixture data behind the boundary in the mock.