## Why The `GetBoard` API response includes `cardLabels`, `labels`, and `cardMemberships` in its `included` data, but `pcli` only parses `lists` and `cards` — silently discarding the rest. This means there is no way to determine which labels are attached to which cards without making per-card API calls. The kanban sync workflow needs to identify agent-labelled cards from a board listing, and currently must fall back to name-matching because label data is unavailable. ## What Changes - Expand the `Board` struct in `model/types.go` to include `Labels`, `CardLabels`, and `CardMemberships` fields - Update `GetBoard` in `client/boards.go` to parse these additional `included` fields from the API response - Update `ListCardsByBoard` to enrich card output with label names (via `cardLabels` join table + `labels`) ## Capabilities ### New Capabilities _None — this enhances existing capabilities._ ### Modified Capabilities - `api-client`: `GetBoard` SHALL parse `labels`, `cardLabels`, and `cardMemberships` from the board response `included` data - `card-operations`: `ListCardsByBoard` (card list --board) SHALL include label names on each card ## Impact - **Code**: `model/types.go` (Board struct), `client/boards.go` (GetBoard parsing), `client/cards.go` (ListCardsByBoard enrichment) - **API**: No new API calls — parsing data already returned by `GET /api/boards/:id` - **Breaking changes**: None — new fields are additive; JSON output gains new fields but existing fields unchanged