feat(RMGR-WP-0008): add workplan and register receiving surfaces

This commit is contained in:
tegwick 2026-08-21 17:15:21 +02:00
parent 5502afc1fd
commit 859df9aae7
15 changed files with 1501 additions and 11 deletions

View file

@ -262,7 +262,17 @@ command:
| --- | --- | --- | --- |
| `repo.work.update_task_status` | task_id, status, blocking_reason? | **yes** | `repo:command:work_status` |
| `repo.work.update_workplan_status` | workplan_id, status | **yes** | `repo:command:work_status` |
| `repo.work.create_workplan` | workplan_id, title, goal, status?, owner?, domain?, topic_slug? | **yes** | `repo:command:workplan` |
| `repo.work.update_workplan` | workplan_id, title?, status?, owner?, domain?, topic_slug? | **yes** | `repo:command:workplan` |
| `repo.work.archive_workplan` | workplan_id, confirm_archive | **yes** | `repo:command:workplan` |
| `repo.work.writeback_ids` | record_ref, uuid fields | **yes** | `repo:command:writeback_ids` |
| `repo.register.upsert_entry` | kind, entry_id, title?, status?, data? | **yes** | `repo:command:register` |
| `repo.register.defer_entry` | kind, entry_id, status? | **yes** | `repo:command:register` |
| `repo.register.add_note` | kind, entry_id, note, author? | **yes** | `repo:command:register` |
`repo.work.archive_workplan` is the recoverable delete operation: it sets the
canonical status to `archived` and moves the file under the dated
`workplans/archived/` convention. It does not erase repository history.
#### Agents

View file

@ -115,9 +115,33 @@ commands:
scope: repo:command:work_status
mutates_git: true
params: [workplan_id, status]
- type: repo.work.create_workplan
scope: repo:command:workplan
mutates_git: true
params: [workplan_id, title, goal, status, owner, domain, topic_slug]
- type: repo.work.update_workplan
scope: repo:command:workplan
mutates_git: true
params: [workplan_id, title, status, owner, domain, topic_slug]
- type: repo.work.archive_workplan
scope: repo:command:workplan
mutates_git: true
params: [workplan_id, confirm_archive]
- type: repo.work.writeback_ids
scope: repo:command:writeback_ids
mutates_git: true
- type: repo.register.upsert_entry
scope: repo:command:register
mutates_git: true
params: [kind, entry_id, title, status, data]
- type: repo.register.defer_entry
scope: repo:command:register
mutates_git: true
params: [kind, entry_id, status]
- type: repo.register.add_note
scope: repo:command:register
mutates_git: true
params: [kind, entry_id, note, author]
- type: repo.agents.assign
scope: repo:command:agent_assign
mutates_git: preferred

View file

@ -0,0 +1,56 @@
# Repository registers v0.1
Repository registers are ordinary, versioned YAML files under `registers/`.
They are authoritative in the repository; Repo Manager's index is a replaceable
projection.
## Shared envelope
Each register uses one file named `registers/<kind>.yaml`:
```yaml
schema: repo-manager.register.v0
kind: technical-debt
entries:
- id: TD-001
title: Coupled persistence
status: open
severity: high
created: "2026-08-21T10:00:00+00:00"
updated: "2026-08-21T10:00:00+00:00"
notes: []
```
Entry ids are stable within their register. `created` is immutable; mutations
advance `updated`. Deletion-compatible routes map to `defer`, preserving the
entry and Git history. Notes are append-only objects with `content`, `author`,
and `created`.
## Kinds and compatibility fields
| Kind | Required create data | State Hub compatibility |
| --- | --- | --- |
| `sbom-inventory` | `package_name`, `ecosystem` | package/version/licence entries; snapshots and reports are derived |
| `repo-goals` | `description` | repository goal records |
| `upstream-contributions` | `type` | contribution type and target metadata |
| `technical-debt` | none beyond id/title | severity, debt type, location, notes |
| `extension-points` | none beyond id/title | priority, extension type, location |
| `register-entries` | `register_kind` | generic extension register entries |
Additional kind-specific fields are retained as YAML scalars, lists, or
mappings. The envelope fields `id`, `title`, `status`, `notes`, `created`, and
`updated` may only be changed through their governed command parameters.
## Commands
```bash
rmgr register put --kind technical-debt --entry-id TD-001 \
--title "Coupled persistence" --data-json '{"severity":"high"}'
rmgr register list --kind technical-debt
rmgr register note --kind technical-debt --entry-id TD-001 --note "Owner assigned."
rmgr register defer --kind technical-debt --entry-id TD-001
```
Mutations use the same expected-HEAD, idempotency, Git commit, optional
push-seal, normalized-event, reindex, and dual-run-meter mechanism as workplan
and task mutations.