feat(goals): add domain/repo goal tracking and update_workstream MCP tool

- Migration c5d6e7f8a9b0: domain_goals and repo_goals tables, repo_goal_id FK on workstreams
- DomainGoal: one active per domain (partial unique index), status active/archived/superseded
- RepoGoal: integer priority, status active/paused/completed/archived, optional domain_goal_id link
- WorkstreamUpdate schema and router extended with repo_goal_id and repo_goal_id filter
- 6 new MCP goal tools: create_domain_goal, get_domain_goals, activate_domain_goal, create_repo_goal, get_repo_goals, update_repo_goal
- update_workstream MCP tool: patch any subset of workstream fields (title, description, owner, due_date, repo_goal_id, status)
- get_domain_summary extended with goal_guidance (needs_workplan, alignment_warnings) signals
- Dashboard goals.md page and docs/goals.md reference page
- CLAUDE.md template updated to act on goal_guidance signals at session start
- CUST-WP-0010 workplan for this feature

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-09 00:15:29 +01:00
parent 74872e0b6a
commit 35800a9f8f
21 changed files with 1289 additions and 10 deletions

View File

@@ -0,0 +1,77 @@
---
id: CUST-WP-0010
type: workstream
title: Domain and Repository Goals
domain: custodian
status: completed
owner: custodian
topic_slug: the-custodian
state_hub_workstream_id: ""
created: 2026-03-08
updated: 2026-03-08
state_hub_workstream_id: "def8455a-9de4-4891-a15a-5b09ca98ab1e"
---
# Domain and Repository Goals
## Purpose
Capture strategic intent at two levels — domain and repository — as first-class
entities in the State Hub. Domain goals express the high-level direction for a
domain; repository goals refine that into actionable targets for a specific repo.
Workstreams can be linked to a repo goal so the goal hierarchy is visible when
planning and reviewing progress.
## Schema
### `domain_goals`
- One active goal per domain at a time (partial unique index enforced by DB)
- `status`: active | archived | superseded
- Activating a new goal auto-supersedes the previous active one
### `repo_goals`
- Multiple active goals per repo, ordered by `priority` (integer, lower = higher)
- Optional FK to `domain_goal_id` — traces which domain goal drove this repo goal
- `status`: active | paused | completed | archived
### `workstreams.repo_goal_id`
- Nullable FK added so workstreams can be tagged to a specific repo goal
## MCP Tools Added
- `create_domain_goal(domain_slug, title, description)`
- `get_domain_goals(domain_slug, status?)`
- `activate_domain_goal(goal_id)`
- `create_repo_goal(repo_slug, title, description, domain_goal_id?, priority?)`
- `get_repo_goals(repo_slug, status?)`
- `update_repo_goal(goal_id, ...)`
## Seed Data
**railiance domain goal** (active):
> "Improve the railiance repositories so that I can securely set up a three
> phoenix server setup to provide for the coulomb infrastructure with proper
> IT-Security, Backup and Update management in a fully automated way."
**railiance-bootstrap repo goal** (active, priority 10):
> "Bootstrap a new server securely at hosteurope that can function as the
> second kubernetes host for the railiance setup. Focus on security and single
> server; defer automated provisioning (railiance-hosts) for now."
## Tasks
### Implement Goals schema, API, and MCP tools
```task
id: T01
status: done
priority: high
state_hub_task_id: "051fd9e1-d15c-4665-adc9-704c4d2b24ea"
```
### Seed railiance example goals
```task
id: T02
status: done
priority: high
state_hub_task_id: "103b46d9-6241-4ef1-9063-054478900b5c"
```