railiance-platform/workplans/RAILIANCE-WP-0016-architecture-cleanup-backlog.md
codex 681b304c41
Some checks failed
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Has been cancelled
Route the cleanup backlog to railiance-master for adoption
T03 done: sent as ac73b172 with the recommendation that master takes the eight
ratification and taxonomy items, and including the correction that our earlier
ArgoCD report to them was wrong.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-12 01:35:04 +02:00

167 lines
7.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
id: RAILIANCE-WP-0016
type: workplan
title: "Architecture cleanup backlog, WSJF-prioritized"
domain: financials
repo: railiance-platform
status: active
owner: codex
topic_slug: railiance
created: "2026-08-12"
updated: "2026-08-12"
related_repos:
- railiance-master
- railiance-infra
- railiance-cluster
- railiance-enablement
- railiance-telemetry
- railiance-forge
state_hub_workstream_id: "8611b555-c681-496d-bfba-667198456837"
---
# RAILIANCE-WP-0016 - Architecture cleanup backlog, WSJF-prioritized
## Goal
Turn the INTENT/SCOPE gap analysis into an ordered backlog, so cleanup happens
highest-value-least-effort first rather than in the order things were noticed.
Source: `history/2026-08-12-intent-scope-gap-analysis.md`.
## Boundary — read before working this
This workplan **coordinates and orders**; it does not execute. Every item below
belongs to another repo, and each carries its owning repo in the table. S3 does
not own fleet architecture cleanup — `railiance-master` does.
This backlog lives here because the analysis was done here. **It should be
adopted by `railiance-master`**, and this workplan closed, once master has a
place for it. Until then it is better recorded than lost. S3 executes only the
items marked `railiance-platform`.
## Scoring method
WSJF = **Cost of Delay ÷ Job Size**, where Cost of Delay = Value + Time
Criticality + Risk Reduction. Each component 110, job size 110.
Two honesty notes. These are **judgments, not measurements** — their value is
the relative ordering and the explicit reasoning, not the arithmetic. And job
sizes for unbuilt things (telemetry, the conformance loop) are the least
reliable numbers here, because nobody has scoped them yet.
## The backlog
| # | Item | Owner | V | TC | RR | Size | **WSJF** |
| --- | --- | --- | --- | --- | --- | --- | --- |
| 1 | Converge the firewall allowlist; prune two stale grants | `railiance-infra` | 6 | 9 | 10 | 1 | **25.0** |
| 2 | Ratify the five pending decisions | `railiance-master` | 8 | 7 | 5 | 1 | **20.0** |
| 3 | Move the S1 goal off `railiance-hosts`, then retire it | `railiance-master` | 5 | 5 | 4 | 1 | **14.0** |
| 4 | Settle ArgoCD: adopt, retire, or relocate | `railiance-master` | 6 | 6 | 6 | 2 | **9.0** |
| 5 | Audit base role for further declared-vs-live drift | `railiance-infra` | 5 | 6 | 9 | 3 | **6.7** |
| 6 | `rapp.yaml` schema + family declaration validator | `railiance-master` | 8 | 5 | 7 | 3 | **6.7** |
| 7 | Reconcile hub capability attribution (C1) | `railiance-master` | 5 | 4 | 6 | 3 | **5.0** |
| 8 | Deployable coverage check: every deployable → one rapp | `railiance-master` | 7 | 4 | 7 | 4 | **4.5** |
| 9 | Telemetry MVP: metrics + alerting for one real expectation | `railiance-telemetry` | 9 | 6 | 8 | 5 | **4.6** |
| 10 | Conformance loop MVP: declared-vs-live firewall check | `railiance-telemetry` / Q7 owner | 8 | 6 | 9 | 5 | **4.6** |
| 11 | Consolidate the bootstrap path; sort inherited S2 content | `railiance-bootstrap` | 5 | 3 | 4 | 4 | **3.0** |
| 12 | Forge migration: `rapp-forgejo` + S4 layer transfer | `railiance-forge` / S4 | 6 | 4 | 4 | 5 | **2.8** |
| 13 | Prove a restore end to end | `railiance-platform` | 9 | 5 | 9 | 8 | **2.9** |
| 14 | Valkey extraction + legacy postgresql-ha retirement | `railiance-platform` | 5 | 4 | 4 | 5 | **2.6** |
| 15 | Sweep remaining Gitea prose (~31 files each) | `railiance-forge`, `railiance-apps` | 3 | 2 | 2 | 3 | **2.3** |
| 16 | Declare the Q6 cost boundary with `resource-control`/`fin-hub` | `railiance-master` | 4 | 3 | 3 | 4 | **2.5** |
| 17 | Version S3 consumer service interfaces | `railiance-platform` | 6 | 3 | 5 | 6 | **2.3** |
| 18 | Resolve the C4 ecosystem-modelling overlap | `railiance-master` / `railiance-fabric` | 4 | 3 | 4 | 5 | **2.2** |
| 19 | S4 build-out: pipeline templates, SDKs, portal | `railiance-enablement` | 7 | 3 | 4 | 9 | **1.6** |
## Reading the order
**Items 13 are nearly free and should happen first.** All three are "decided
but unmoved" — waiting on ratification or a single command, not on effort.
Item 1 in particular is a live security exposure: two standing firewall grants
point at addresses the ISP has since reassigned, and the fix is one convergence
run.
**Item 2 is the highest-leverage thing on the list.** Five pending
ratifications in `railiance-master` block items 6, 7, 8, 12 and parts of 9 and
10. It is a day of decisions that unblocks a quarter of the backlog.
**Items 9 and 10 are the strategic core** despite mid-table WSJF. They are Q2
and Q7 — the two halves of the self-evidencing thread that five layers
independently asked for. Their size scores are guesses. Scoping them into
smaller slices would likely move both up sharply, and **that rescoping is itself
worth doing before committing to the order below them.**
**Item 13 is blocked, not deprioritized.** Proving a restore needs the object
storage decision (`9c21c0e0`), which is escalated and awaiting human approval on
commercial terms. Its WSJF understates it; treat the blocker as the real item.
**Item 19 is last and that is deliberate.** S4 build-out is the widest gap in
the family, but it is large, and item 12 gives S4 a smaller first
responsibility to prove delivery on. Building the portal before the forge
transfer would be starting at the hard end.
## Tasks
```task
id: RAILIANCE-WP-0016-T01
status: done
priority: high
state_hub_task_id: "9fabf938-0479-4282-b1fe-88af0d2fbd36"
```
Produce the INTENT/SCOPE gap analysis across all `railiance-*` repos, comparing
declared aspiration against declared state against verified reality.
Delivered: `history/2026-08-12-intent-scope-gap-analysis.md`. Named the pattern
that organizes the backlog — every gap is *declared but unbuilt*, *built but
undeclared*, or *decided but unmoved*, and the third kind is cheapest to clear
while blocking the most.
```task
id: RAILIANCE-WP-0016-T02
status: done
priority: high
state_hub_task_id: "5b4d5f69-40fd-4af0-be23-325864cea48b"
```
Score and order the backlog by WSJF, recording owner and reasoning per item so
the ordering can be argued with rather than merely followed.
```task
id: RAILIANCE-WP-0016-T03
status: done
priority: high
state_hub_task_id: "9ede2fe5-5b6c-4792-b141-9c8f140c1a28"
```
Route the backlog to `railiance-master` for adoption, with the recommendation
that it takes items 2, 3, 4, 6, 7, 8, 16 and 18 — the ratification and taxonomy
items — and that this workplan closes once adopted.
```task
id: RAILIANCE-WP-0016-T04
status: todo
priority: medium
state_hub_task_id: "aac02de1-6367-4767-b7ee-c980577e778f"
```
Rescope items 9 and 10 (telemetry MVP, conformance loop MVP) into deliverable
slices before committing to their position. Their size scores are the least
reliable on the list, and both are strategically central. A first slice of item
10 could be as small as a Goss check comparing declared UFW state to live state
on one host.
```task
id: RAILIANCE-WP-0016-T05
status: todo
priority: medium
state_hub_task_id: "a40faaf1-77db-43f5-a774-6ab3866d8e1d"
```
Execute the S3-owned items in WSJF order — 13 (blocked on `9c21c0e0`), 14, 17 —
and keep this table current as items complete or their sizes become known.
## Outcome
Pending. T01-T03 delivered; routed to `railiance-master` for adoption
(message `ac73b172`). T04 rescoping and T05 S3-owned execution remain.