Files
kandev/docs/plans/plugin-task-dependency-projection/plan.md
T
2026-09-18 14:55:51 +00:00

50 lines
2.0 KiB
Markdown

---
created: 2026-09-17
status: implemented
requirements:
- REQ-PLUGINS-TASK-DEPS-001
- REQ-PLUGINS-TASK-DEPS-002
- REQ-PLUGINS-TASK-DEPS-003
- REQ-PLUGINS-TASK-DEPS-004
- REQ-PLUGINS-TASK-DEPS-005
- REQ-PLUGINS-TASK-DEPS-006
system_design:
- ../../specs/plugins/system-design/task-dependency-projection.md
- ../../specs/plugins/system-design/task-dependency-refresh.md
- ../../specs/plugins/system-design/task-dependency-edge-ends.md
- ../../specs/plugins/system-design/task-dependency-response-bounds.md
legacy_specs: []
---
# 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/...`
- `golangci-lint run ./...` (backend)
- `gofmt -l` on touched files
## Work orders
- [x] [Task 01: Expose task dependencies in the plugin and canvas data API](task-01-dependency-projection.md)