Implementation Plan: Expose task dependencies in the plugin and canvas data API
Overview
A workspace canvas or gRPC plugin reading the Host Data API's Task read model
could not see a single dependency edge, even though the kanban board already
derives and ships a complete view (blocked, blocked_reason, depends_on,
blocks, start_when_unblocked) via BuildDependencyViews. This plan adds the
same seven-field, read-only projection to every plugin task read model across
the gRPC surface (proto, SDK, grpcHostServer), the canvas JSON surface
(webapp_protocol_json.go), and the shared derivation the two reuse
(internal/task/service/service_dependencies.go), landing it as a field on the
existing api_read:tasks capability with no new grant. It builds on the
plugin Host Data API's existing task read implementation (ADR 0043,
docs/plans/plugins/host-data-api/).
Scope
See task-01-dependency-projection.md for the full field set, attachment
rule, withheld-verdict semantics, fan-out bound, edge-end redaction, and the
shared-derivation fixes this plan lands.
Verification
go test ./internal/plugins/... ./internal/task/service/... ./internal/task/repository/sqlite/... ./internal/office/repository/sqlite/... ./pkg/pluginsdk/...