feat(RMGR-WP-0008): add workplan and register receiving surfaces
This commit is contained in:
parent
5502afc1fd
commit
859df9aae7
15 changed files with 1501 additions and 11 deletions
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
56
docs/repository-registers_v0.1.md
Normal file
56
docs/repository-registers_v0.1.md
Normal 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.
|
||||
Loading…
Add table
Add a link
Reference in a new issue