277677f330
Co-authored-by: nova28 <17953305+nova28@users.noreply.github.com> Co-authored-by: Carlos Florencio <carlosmflorencio@gmail.com>
50 lines
2.0 KiB
Markdown
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)
|