fix(workplans): move work-record identifiers onto the repository prefix
Identifiers predating the PREFIX-WP-NNNN convention were rejected by the canon registry, so none of this repository's work records could be registered. One prefix per repository (ADR-007). Existing conforming identifiers keep their numbers where possible; the pre-convention records take the next free numbers rather than renumbering work that was already correct. Projection UUIDs are re-derived from the new canonical ids (ADR-007 decision 2). Nothing was registered on central under the old identifiers, so no hub record is orphaned by this. Refs CUST-WP-0068-T03 Assistant: claude-code Assistant-Model: opus Assistant-Process: 2583210@bnt-lap001 Assistant-Session: f2bff2d5-e9b2-4338-92ca-10282a927006
This commit is contained in:
parent
678ed0bb56
commit
7c8f7e6a9e
7 changed files with 87 additions and 87 deletions
|
|
@ -1,183 +0,0 @@
|
|||
---
|
||||
id: REIN-A-0002
|
||||
type: workplan
|
||||
title: "Ops run claim loop and approach selection"
|
||||
domain: agents
|
||||
repo: rein-aharness
|
||||
status: finished
|
||||
owner: grok
|
||||
topic_slug: rein-aharness
|
||||
priority: high
|
||||
created: "2026-08-03"
|
||||
updated: "2026-08-08"
|
||||
depends_on:
|
||||
- ACTIVITY-WP-0026
|
||||
related:
|
||||
- ACT-ADR-005
|
||||
- HARNESS-WP-0001
|
||||
state_hub_workstream_id: "3eb24fcc-cc44-5012-8d67-f95847c69ba7"
|
||||
---
|
||||
|
||||
# REIN-A-0002 — Ops run claim loop and approach selection
|
||||
|
||||
## Origin
|
||||
|
||||
ACT-ADR-005. Closes the dual-clock residual: host systemd timers currently
|
||||
execute Binky/FI while activity-core schedules separately. rein-aharness already
|
||||
polls **issue-core** (`docs/task-intake.md`); that path is wrong for internal
|
||||
ops under WP-0022 and issue-core INTENT.
|
||||
|
||||
## Goal
|
||||
|
||||
1. Claim **`ops_run`** from activity-core (not issue-core / not Forgejo).
|
||||
2. Select an **efficient approach** (adapter table) and execute.
|
||||
3. Complete/fail the ops_run + domain completion events.
|
||||
4. Cut over FI and Binky off dual wall-clock timers once proven.
|
||||
|
||||
## Tasks
|
||||
|
||||
### T01 — activity-core ops_run client
|
||||
|
||||
```task
|
||||
id: REIN-A-0002-T01
|
||||
status: done
|
||||
priority: high
|
||||
state_hub_task_id: "b2aa7a67-bab9-55fc-b295-d6735f5cca8d"
|
||||
```
|
||||
|
||||
Client module (env: `ACTIVITY_CORE_URL`, worker credential):
|
||||
|
||||
- `claim(worker_id, labels=…)`
|
||||
- `heartbeat` / `complete` / `fail`
|
||||
|
||||
Map ops_run → existing `TaskSpec` (or thin OpsRunSpec). Tests with httpx mock.
|
||||
|
||||
**Blocked on:** ACTIVITY-WP-0026-T01 API shape (can stub against openapi draft).
|
||||
|
||||
**Done when:** unit tests green; CLI `poll --source=ops-run` prototype optional.
|
||||
|
||||
---
|
||||
|
||||
### T02 — Approach registry (v1 static)
|
||||
|
||||
```task
|
||||
id: REIN-A-0002-T02
|
||||
status: done
|
||||
priority: high
|
||||
state_hub_task_id: "3822d655-cb85-583f-9be9-e1711e302a4b"
|
||||
```
|
||||
|
||||
Central table/config (code registry, not per-repo cron):
|
||||
|
||||
| Match (labels / definition id contains) | Approach command |
|
||||
| --------------------------------------- | ---------------- |
|
||||
| `research-brief` or `fi-daily` | `fi-research-brief` |
|
||||
| `rhythm` + binky / `binky-daily` | `brief-daily` |
|
||||
| `mail-intake` | `mail-scan` then optional `mail-triage` |
|
||||
| `agent-session` | `run` with persona/profile |
|
||||
| unmatched | fail ops_run with clear reason |
|
||||
|
||||
Document how to add rows. Prefer **cheapest correct** path (deterministic before
|
||||
agent session; structured llm-connect before open-ended coding agent).
|
||||
|
||||
**Done when:** pure function tests for match → approach.
|
||||
|
||||
---
|
||||
|
||||
### T03 — Continuous claim worker
|
||||
|
||||
```task
|
||||
id: REIN-A-0002-T03
|
||||
status: done
|
||||
priority: high
|
||||
state_hub_task_id: "3029e2b6-4190-5f65-a8ae-1d4e7ddaa1b7"
|
||||
```
|
||||
|
||||
- `rein-aharness claim-loop` (or systemd/service unit): poll interval, lease
|
||||
heartbeat, concurrency 1 default.
|
||||
- On success: domain completion already done by approach; close ops_run.
|
||||
- On failure: fail ops_run; do not silent drop.
|
||||
- Metrics/log for SLA.
|
||||
|
||||
**Done when:** can run against railiance actcore-api with a test ops_run.
|
||||
|
||||
---
|
||||
|
||||
### T04 — Map FI + Binky definitions
|
||||
|
||||
```task
|
||||
id: REIN-A-0002-T04
|
||||
status: done
|
||||
priority: high
|
||||
state_hub_task_id: "5be30f7a-f710-5339-b583-93dd3be3ae5e"
|
||||
```
|
||||
|
||||
- FI labels already include `research-brief` + `automated`.
|
||||
- `AGENT_HARNESS_REPO_MAP` documented in claim-loop.env.example + ops-run-claim-loop.md.
|
||||
- Install: `deploy/scripts/install-claim-loop-user.sh`.
|
||||
|
||||
**Prod e2e 2026-08-03:** FI trigger → ops_run claimed by
|
||||
`rein-aharness@railiance01` → approach `fi-research-brief` → **succeeded**
|
||||
(skipped existing brief). User unit `rein-aharness-claim-loop.service` active.
|
||||
Proof window for timer cutover (T05) starts here.
|
||||
|
||||
---
|
||||
|
||||
### T05 — Cutover: timers become break-glass
|
||||
|
||||
```task
|
||||
id: REIN-A-0002-T05
|
||||
status: done
|
||||
priority: medium
|
||||
state_hub_task_id: "7d67dae7-997b-5cf1-bcad-0a51a563c0dd"
|
||||
```
|
||||
|
||||
**Procedure landed:** `deploy/docs/timer-cutover.md` + FI `docs/recurrence-ops.md`
|
||||
updated for claim-loop primary / timer break-glass.
|
||||
|
||||
Completed on railiance (verified 2026-08-08):
|
||||
|
||||
1. Five-cycle proof table filled from production claim-loop journal (eight clean
|
||||
FI/Binky cycles observed in total).
|
||||
2. FI host timer is disabled/inactive; Binky host timer is not installed and
|
||||
inactive.
|
||||
3. Install scripts and manual service starts remain documented for break-glass.
|
||||
|
||||
**Done when:** docs + railiance state match; dual-clock residual closed for FI/Binky.
|
||||
|
||||
---
|
||||
|
||||
### T06 — Deprecate issue-core as ops intake for automation
|
||||
|
||||
```task
|
||||
id: REIN-A-0002-T06
|
||||
status: done
|
||||
priority: medium
|
||||
state_hub_task_id: "34a3fb45-7305-5a51-a13b-2feacbc29a1b"
|
||||
```
|
||||
|
||||
- `docs/task-intake.md`: issue-core poll = **legacy / external ticket path only**.
|
||||
- ops_run = **primary** for activity-core automation labels.
|
||||
- No Gitea references; Forgejo only if mentioning self-hosted forge projection.
|
||||
|
||||
**Done when:** docs and CLI help text consistent with ACT-ADR-005.
|
||||
|
||||
## Acceptance
|
||||
|
||||
- [x] Claim loop does not require Forgejo or issue-core for FI/Binky ops
|
||||
- [x] Approach table selects fi-research-brief / brief-daily without host “schedule”
|
||||
- [x] Timers demoted after proof window (**T05**)
|
||||
- [x] ACT-ADR-005 / ACTIVITY-WP-0026 contracts implemented
|
||||
|
||||
**Shipped:** `ops_run_client`, `approaches`, `claim_loop`, CLI `claim-loop` /
|
||||
`run --from-ops-run` / `poll --source=ops-run`, unit tests, install + cutover docs.
|
||||
|
||||
**Residual handoff:** `REIN-A-0003` captures the separately observed unmatched
|
||||
Binky weekly-review ops run; it does not reopen the completed FI/Binky daily
|
||||
cutover scope.
|
||||
|
||||
## Out of scope
|
||||
|
||||
- Implementing ops_run schema (ACTIVITY-WP-0026)
|
||||
- issue-core Forgejo backend fixes
|
||||
- Full glas-harness multi-rein routing
|
||||
Loading…
Add table
Add a link
Reference in a new issue