Finish CUST-WP-0072: coverage evidence, templates, intake join.
Record the flavor backfill cohort, residual-intake join, and agent convention that default views omit residuals.
This commit is contained in:
parent
1bba535d1f
commit
f820ced5c9
9 changed files with 3003 additions and 7 deletions
|
|
@ -40,7 +40,10 @@ curl -s -X PATCH "http://127.0.0.1:8000/messages/<id>/read" \
|
|||
ls workplans/
|
||||
```
|
||||
For each file with `status: ready`, `active`, or `blocked`, note pending
|
||||
`wait`/`todo`/`progress` tasks.
|
||||
`wait`/`todo`/`progress` tasks. Default hub open views omit
|
||||
`flavor: residual` (STATE-WP-0092). Do not implement residuals unless
|
||||
demand or risk has promoted the flavor. Cross-repo waits belong to
|
||||
`COORDINATION-WP-0005`, not a stranded `wait` note.
|
||||
|
||||
**Step 4 — Present brief**
|
||||
|
||||
|
|
|
|||
|
|
@ -92,7 +92,7 @@ curl -s -X PATCH "http://127.0.0.1:8000/tasks/<task_id>" \
|
|||
**Start:**
|
||||
1. `cat .custodian-brief.md` — domain goal and open workplans (offline-safe)
|
||||
2. Check inbox: `GET /messages/?to_agent=the-custodian&unread_only=true`; mark read
|
||||
3. Scan workplans: `ls workplans/` — note `status: ready`, `active`, or `blocked` files and open tasks
|
||||
3. Scan workplans: `ls workplans/` — note `status: ready`, `active`, or `blocked` files and open tasks. Default hub views omit `flavor: residual`; do not implement residuals unless promoted (STATE-WP-0092).
|
||||
4. Check human-needed tasks: `GET /tasks/?needs_human=true`
|
||||
|
||||
**During work:**
|
||||
|
|
|
|||
67
docs/evidence/2026-09-14-flavor-backfill/README.md
Normal file
67
docs/evidence/2026-09-14-flavor-backfill/README.md
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
# CUST-WP-0072 flavor and depends_on backfill
|
||||
|
||||
Date: 2026-09-14. Gate: STATE-WP-0092 is `finished` in files and on the hub
|
||||
(`2a2d8bcd`). Live primary schema is still `b5e6f7a8c9d0` (flavor column not
|
||||
applied), so default views do not yet drop residuals. Founder instructed
|
||||
file backfill to proceed. Hub views follow after alembic `c6f7a8b9d0e1` is
|
||||
deployed.
|
||||
|
||||
## Classification rules (no auto-promote)
|
||||
|
||||
| Flavor | When |
|
||||
| --- | --- |
|
||||
| `residual` | `origin: residual\|handoff`, or title/body already names a residual handoff |
|
||||
| `planning` | already set, or `status: proposed` without implement/deploy verbs, or planning keywords |
|
||||
| `refactoring` | title keyword refactor/rename/terminology/cleanup/strangler |
|
||||
| `extension` | title keyword adapt/extension/follow-on (and not implement) |
|
||||
| `implementation` | default for ready/active/blocked functional work |
|
||||
|
||||
Unset was treated as relevant, then filled. Existing valid `flavor:` was kept
|
||||
(`CUST-WP-0072`, `INFD-WP-0002`, `COORDINATION-WP-0005`, `RAIL-FAB-WP-0030`).
|
||||
`depends_on` was copied from existing `depends_on` / `depends_on_workplans` /
|
||||
`blocked_on` workplan ids only — no edges invented from `related:`.
|
||||
|
||||
WHITEHAT-WP-0008 was corrected from `implementation` to `residual` (title
|
||||
“live ASM residuals after WHITEHAT-WP-0007”).
|
||||
|
||||
## Open-workplan cohort (116)
|
||||
|
||||
| Flavor | Count |
|
||||
| --- | ---: |
|
||||
| implementation | 81 |
|
||||
| planning | 21 |
|
||||
| residual | 11 |
|
||||
| extension | 2 |
|
||||
| refactoring | 1 |
|
||||
|
||||
Residual open workplans:
|
||||
|
||||
| Repo | Id | origin_ref |
|
||||
| --- | --- | --- |
|
||||
| railiance-fabric | RAIL-FAB-WP-0028 | STATE-WP-0079 |
|
||||
| railiance-infra | RAIL-HO-WP-0013 | RCLK-WP-0005 |
|
||||
| ops-warden | WARDEN-WP-0039 | HFACT-WP-0001 |
|
||||
| approval-engine | APPROVAL-WP-0002 | APPROVAL-WP-0001 |
|
||||
| tenant-engine | TEN-WP-0012 | TEN-WP-0011 |
|
||||
| reuse-surface | REUSE-WP-0021 | IDENTITY-WP-0004 |
|
||||
| hub-core | HUB-WP-0011 | HUB-WP-0010 |
|
||||
| hub-core | HUB-WP-0009 | OPS-WP-0003 |
|
||||
| whitehat-security | WHITEHAT-WP-0006 | WHITEHAT-WP-0001 |
|
||||
| whitehat-security | WHITEHAT-WP-0008 | WHITEHAT-WP-0007 |
|
||||
| fin-hub | FIN-WP-0006 | RESOURCE-WP-0005 |
|
||||
|
||||
Machine table: `coverage.csv` / `coverage.json`.
|
||||
|
||||
## T04 — residual intakes vs workplans
|
||||
|
||||
42 intakes with `origin: residual`. Join by `origin_ref`:
|
||||
|
||||
- 38 → finished/archived parent workplan (intake is the live leftover; not a
|
||||
second implementation backlog)
|
||||
- 4 → non-workplan refs (task/decision/legacy id); not open workplans
|
||||
|
||||
Zero open workplans were both `flavor: implementation` and the target of a
|
||||
residual intake. Provenance stays on the intake; flavor is the live
|
||||
classification on the workplan.
|
||||
|
||||
See `intake-join.json`.
|
||||
|
|
@ -0,0 +1,348 @@
|
|||
#!/usr/bin/env python3
|
||||
"""One-shot CUST-WP-0072-T02 helper: classify open workplans and patch files.
|
||||
|
||||
Does not invent depends_on edges. Does not promote residuals.
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
import re
|
||||
import urllib.request
|
||||
from collections import Counter, defaultdict
|
||||
from pathlib import Path
|
||||
|
||||
import yaml
|
||||
|
||||
API = "http://127.0.0.1:8000"
|
||||
OPEN = {"proposed", "ready", "active", "blocked", "backlog"}
|
||||
FLAVORS = {"planning", "implementation", "refactoring", "extension", "residual"}
|
||||
WP_ID = re.compile(
|
||||
r"\b([A-Z][A-Z0-9]*(?:-[A-Z][A-Z0-9]*)*-WP-(?:ADHOC-)?[0-9]{4}(?:[a-z])?)\b"
|
||||
)
|
||||
ORIGIN_LINE = re.compile(
|
||||
r"Origin:\s*residual\s+from\s+`?([A-Z][A-Z0-9]*(?:-[A-Z][A-Z0-9]*)*-WP-(?:ADHOC-)?[0-9]{4})",
|
||||
re.I,
|
||||
)
|
||||
PLAN_KW = re.compile(
|
||||
r"\b(spec|design|canon|policy|review|declare|founding|charter|"
|
||||
r"convention|assessment|plan-derived|establish intent)\b",
|
||||
re.I,
|
||||
)
|
||||
IMPL_KW = re.compile(
|
||||
r"\b(implement|deploy|admit|migrate|build|provision|activate|"
|
||||
r"cut over|restore|bind)\b",
|
||||
re.I,
|
||||
)
|
||||
REF_KW = re.compile(r"\b(refactor|rename|terminology|cleanup|strangler)\b", re.I)
|
||||
EXT_KW = re.compile(r"\b(adapt(?:ation)?|extension|follow-on)\b", re.I)
|
||||
TITLE_RESIDUAL = re.compile(
|
||||
r"(authorized live residuals|residual from|residual of|residual handoff|"
|
||||
r"^residual\b)",
|
||||
re.I,
|
||||
)
|
||||
|
||||
|
||||
def get(path: str):
|
||||
with urllib.request.urlopen(API + path, timeout=30) as response:
|
||||
return json.load(response)
|
||||
|
||||
|
||||
def parse_fm(text: str) -> tuple[dict, str, str]:
|
||||
if not text.startswith("---"):
|
||||
return {}, text, ""
|
||||
rest = text[3:]
|
||||
end = rest.find("\n---")
|
||||
if end < 0:
|
||||
return {}, text, ""
|
||||
raw = rest[:end].lstrip("\n")
|
||||
body = rest[end + 4 :]
|
||||
loaded = yaml.safe_load(raw) or {}
|
||||
if not isinstance(loaded, dict):
|
||||
loaded = {}
|
||||
return loaded, body, raw
|
||||
|
||||
|
||||
def classify(meta: dict, title: str, body: str, status: str) -> tuple[str, str]:
|
||||
existing = str(meta.get("flavor") or "").strip().lower()
|
||||
if existing in FLAVORS:
|
||||
return existing, "already-set"
|
||||
origin = str(meta.get("origin") or "").strip().lower()
|
||||
if origin in {"residual", "handoff"}:
|
||||
return "residual", "origin"
|
||||
if TITLE_RESIDUAL.search(title or "") or ORIGIN_LINE.search(body[:1500] or ""):
|
||||
return "residual", "prose"
|
||||
if REF_KW.search(title or ""):
|
||||
return "refactoring", "keyword"
|
||||
if EXT_KW.search(title or "") and not IMPL_KW.search(title or ""):
|
||||
return "extension", "keyword"
|
||||
if status == "proposed":
|
||||
if IMPL_KW.search(title or ""):
|
||||
return "implementation", "proposed-implement"
|
||||
return "planning", "proposed"
|
||||
if PLAN_KW.search(title or "") and not IMPL_KW.search(title or ""):
|
||||
return "planning", "keyword"
|
||||
return "implementation", "default"
|
||||
|
||||
|
||||
def existing_depends(meta: dict, self_id: str) -> list[str]:
|
||||
ids: list[str] = []
|
||||
for key in ("depends_on", "depends_on_workplans"):
|
||||
val = meta.get(key)
|
||||
if isinstance(val, str):
|
||||
ids.extend(WP_ID.findall(val))
|
||||
elif isinstance(val, list):
|
||||
for item in val:
|
||||
ids.extend(WP_ID.findall(str(item)))
|
||||
ids.extend(WP_ID.findall(str(meta.get("blocked_on") or "")))
|
||||
out: list[str] = []
|
||||
seen: set[str] = set()
|
||||
for item in ids:
|
||||
if item == self_id or item in seen:
|
||||
continue
|
||||
seen.add(item)
|
||||
out.append(item)
|
||||
return out
|
||||
|
||||
|
||||
def index_workplan_files(repo_path: Path) -> dict[str, Path]:
|
||||
found: dict[str, Path] = {}
|
||||
for directory in (repo_path / "workplans", repo_path / "workplans" / "archived"):
|
||||
if not directory.is_dir():
|
||||
continue
|
||||
for path in directory.glob("*.md"):
|
||||
try:
|
||||
text = path.read_text(encoding="utf-8")
|
||||
except OSError:
|
||||
continue
|
||||
meta, _, _ = parse_fm(text)
|
||||
wid = str(meta.get("id") or "").strip()
|
||||
if wid:
|
||||
found.setdefault(wid, path)
|
||||
return found
|
||||
|
||||
|
||||
def insert_after_status(raw: str, flavor: str) -> str:
|
||||
if re.search(r"^flavor:\s*", raw, re.M):
|
||||
return raw
|
||||
lines = raw.splitlines()
|
||||
out = []
|
||||
inserted = False
|
||||
for line in lines:
|
||||
out.append(line)
|
||||
if not inserted and re.match(r"^status:\s*", line):
|
||||
out.append(f"flavor: {flavor}")
|
||||
inserted = True
|
||||
if not inserted:
|
||||
out.append(f"flavor: {flavor}")
|
||||
return "\n".join(out)
|
||||
|
||||
|
||||
def insert_depends_on(raw: str, deps: list[str]) -> str:
|
||||
if re.search(r"^depends_on:\s*", raw, re.M):
|
||||
return raw
|
||||
block = "depends_on:\n" + "\n".join(f" - {item}" for item in deps)
|
||||
lines = raw.splitlines()
|
||||
out = []
|
||||
inserted = False
|
||||
for line in lines:
|
||||
out.append(line)
|
||||
if not inserted and re.match(r"^flavor:\s*", line):
|
||||
out.extend(block.splitlines())
|
||||
inserted = True
|
||||
if not inserted:
|
||||
out.extend(block.splitlines())
|
||||
return "\n".join(out)
|
||||
|
||||
|
||||
def insert_origin(raw: str, origin: str, origin_ref: str | None) -> str:
|
||||
lines = raw.splitlines()
|
||||
have_origin = any(re.match(r"^origin:\s*", line) for line in lines)
|
||||
have_ref = any(re.match(r"^origin_ref:\s*", line) for line in lines)
|
||||
extra = []
|
||||
if not have_origin:
|
||||
extra.append(f"origin: {origin}")
|
||||
if origin_ref and not have_ref:
|
||||
extra.append(f"origin_ref: {origin_ref}")
|
||||
if not extra:
|
||||
return raw
|
||||
out = []
|
||||
inserted = False
|
||||
for line in lines:
|
||||
out.append(line)
|
||||
if not inserted and re.match(r"^flavor:\s*", line):
|
||||
out.extend(extra)
|
||||
inserted = True
|
||||
if not inserted:
|
||||
out.extend(extra)
|
||||
return "\n".join(out)
|
||||
|
||||
|
||||
def patch_residual_tasks(body: str) -> tuple[str, int]:
|
||||
count = 0
|
||||
|
||||
def repl(match: re.Match[str]) -> str:
|
||||
nonlocal count
|
||||
block = match.group(0)
|
||||
inner = match.group(1)
|
||||
if re.search(r"^flavor:\s*", inner, re.M):
|
||||
return block
|
||||
inner_lines = inner.splitlines()
|
||||
new_inner = []
|
||||
inserted = False
|
||||
for line in inner_lines:
|
||||
new_inner.append(line)
|
||||
if not inserted and re.match(r"^status:\s*", line):
|
||||
new_inner.append("flavor: residual")
|
||||
inserted = True
|
||||
count += 1
|
||||
if not inserted:
|
||||
new_inner.append("flavor: residual")
|
||||
count += 1
|
||||
return "```task\n" + "\n".join(new_inner) + "\n```"
|
||||
|
||||
patched = re.sub(r"```task\n(.*?)```", repl, body, flags=re.S)
|
||||
return patched, count
|
||||
|
||||
|
||||
def rebuild(raw: str, body: str) -> str:
|
||||
if not raw.endswith("\n"):
|
||||
raw += "\n"
|
||||
if body.startswith("\n"):
|
||||
return f"---\n{raw}---{body}"
|
||||
return f"---\n{raw}---\n{body}"
|
||||
|
||||
|
||||
def main() -> None:
|
||||
repos = {row["id"]: row for row in get("/repos/")}
|
||||
open_wps = [
|
||||
row
|
||||
for row in get("/workplans/")
|
||||
if (row.get("status") or "").lower() in OPEN
|
||||
and "@retired" not in (row.get("slug") or "")
|
||||
]
|
||||
coverage = []
|
||||
changed_by_repo: dict[str, list[str]] = defaultdict(list)
|
||||
stats = Counter()
|
||||
|
||||
for wp in open_wps:
|
||||
repo = repos.get(wp.get("repo_id") or "") or {}
|
||||
repo_slug = repo.get("slug") or ""
|
||||
local = repo.get("local_path")
|
||||
record = {
|
||||
"repo": repo_slug,
|
||||
"hub_slug": wp.get("slug"),
|
||||
"hub_status": wp.get("status"),
|
||||
"title": wp.get("title"),
|
||||
"file": "",
|
||||
"id": "",
|
||||
"flavor": "",
|
||||
"flavor_reason": "",
|
||||
"depends_on": "",
|
||||
"origin": "",
|
||||
"origin_ref": "",
|
||||
"changed": "no",
|
||||
"note": "",
|
||||
}
|
||||
if not local or not Path(local).is_dir():
|
||||
record["note"] = "no-local-path"
|
||||
stats["skip_no_path"] += 1
|
||||
coverage.append(record)
|
||||
continue
|
||||
files = index_workplan_files(Path(local))
|
||||
# Prefer backing path when it exists
|
||||
file_path = None
|
||||
rel = wp.get("backing_relative_path")
|
||||
fname = wp.get("backing_filename")
|
||||
if rel and (Path(local) / rel).is_file():
|
||||
file_path = Path(local) / rel
|
||||
elif fname and (Path(local) / "workplans" / fname).is_file():
|
||||
file_path = Path(local) / "workplans" / fname
|
||||
text = ""
|
||||
meta: dict = {}
|
||||
if file_path:
|
||||
text = file_path.read_text(encoding="utf-8")
|
||||
meta, _, _ = parse_fm(text)
|
||||
wid = str(meta.get("id") or "").strip()
|
||||
if not wid:
|
||||
# match by scanning index using hub slug upper
|
||||
guess = (wp.get("slug") or "").upper().replace("_", "-")
|
||||
file_path = files.get(guess)
|
||||
if file_path:
|
||||
text = file_path.read_text(encoding="utf-8")
|
||||
meta, _, _ = parse_fm(text)
|
||||
wid = str(meta.get("id") or "").strip()
|
||||
if not file_path or not wid:
|
||||
record["note"] = "no-file"
|
||||
stats["skip_no_file"] += 1
|
||||
coverage.append(record)
|
||||
continue
|
||||
|
||||
body_holder = parse_fm(text)
|
||||
meta, body, raw = body_holder
|
||||
title = str(meta.get("title") or wp.get("title") or "")
|
||||
status = str(meta.get("status") or wp.get("status") or "").lower()
|
||||
flavor, reason = classify(meta, title, body, status)
|
||||
deps = existing_depends(meta, wid)
|
||||
origin = str(meta.get("origin") or "").strip()
|
||||
origin_ref = str(meta.get("origin_ref") or "").strip()
|
||||
origin_match = ORIGIN_LINE.search(body[:2000])
|
||||
new_raw = raw
|
||||
new_body = body
|
||||
changed = False
|
||||
task_patches = 0
|
||||
|
||||
if str(meta.get("flavor") or "").strip().lower() not in FLAVORS:
|
||||
new_raw = insert_after_status(new_raw, flavor)
|
||||
changed = True
|
||||
if deps and not meta.get("depends_on"):
|
||||
new_raw = insert_depends_on(new_raw, deps)
|
||||
changed = True
|
||||
if flavor == "residual":
|
||||
if not origin and origin_match:
|
||||
origin = "residual"
|
||||
if not origin_ref and origin_match:
|
||||
origin_ref = origin_match.group(1)
|
||||
if origin == "residual" or origin_ref:
|
||||
before = new_raw
|
||||
new_raw = insert_origin(new_raw, origin or "residual", origin_ref or None)
|
||||
if new_raw != before:
|
||||
changed = True
|
||||
new_body, task_patches = patch_residual_tasks(new_body)
|
||||
if task_patches:
|
||||
changed = True
|
||||
|
||||
record.update(
|
||||
{
|
||||
"file": str(file_path),
|
||||
"id": wid,
|
||||
"flavor": flavor,
|
||||
"flavor_reason": reason,
|
||||
"depends_on": ",".join(deps) if deps else "none",
|
||||
"origin": origin,
|
||||
"origin_ref": origin_ref,
|
||||
}
|
||||
)
|
||||
if changed:
|
||||
file_path.write_text(rebuild(new_raw, new_body), encoding="utf-8")
|
||||
record["changed"] = "yes"
|
||||
if task_patches:
|
||||
record["note"] = f"task_flavor={task_patches}"
|
||||
changed_by_repo[repo_slug].append(str(file_path))
|
||||
stats["changed"] += 1
|
||||
else:
|
||||
stats["unchanged"] += 1
|
||||
coverage.append(record)
|
||||
|
||||
out_dir = Path(__file__).resolve().parent
|
||||
(out_dir / "coverage.json").write_text(
|
||||
json.dumps({"stats": dict(stats), "rows": coverage}, indent=2) + "\n",
|
||||
encoding="utf-8",
|
||||
)
|
||||
(out_dir / "changed-by-repo.json").write_text(
|
||||
json.dumps(changed_by_repo, indent=2) + "\n", encoding="utf-8"
|
||||
)
|
||||
print(json.dumps({"stats": dict(stats), "repos_changed": len(changed_by_repo)}, indent=2))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
226
docs/evidence/2026-09-14-flavor-backfill/changed-by-repo.json
Normal file
226
docs/evidence/2026-09-14-flavor-backfill/changed-by-repo.json
Normal file
|
|
@ -0,0 +1,226 @@
|
|||
{
|
||||
"net-kingdom": [
|
||||
"/home/worsch/net-kingdom/workplans/NK-WP-0033-keycape-secret-exposure-rotation.md",
|
||||
"/home/worsch/net-kingdom/workplans/NK-WP-0035-emission-cadence-security-profile.md",
|
||||
"/home/worsch/net-kingdom/workplans/NK-WP-0027-reef-placement-reconciliation.md",
|
||||
"/home/worsch/net-kingdom/workplans/NK-WP-0031-deterministic-posture-feedback.md",
|
||||
"/home/worsch/net-kingdom/workplans/NK-WP-0009-netkingdom-security-pattern-tutorials.md",
|
||||
"/home/worsch/net-kingdom/workplans/NK-WP-0032-openbao-operator-loopback-callback.md",
|
||||
"/home/worsch/net-kingdom/workplans/NK-WP-0037-vergabe-company-welcome.md",
|
||||
"/home/worsch/net-kingdom/workplans/NK-WP-0022-railiance01-identity-cutover-and-coulombcore-retirement.md",
|
||||
"/home/worsch/net-kingdom/workplans/NK-WP-0011-enterprise-federation-saml.md",
|
||||
"/home/worsch/net-kingdom/workplans/NK-WP-0034-verification-that-verifies.md",
|
||||
"/home/worsch/net-kingdom/workplans/NK-WP-0036-restore-user-portal-client-registration.md"
|
||||
],
|
||||
"flex-auth": [
|
||||
"/home/worsch/flex-auth/workplans/FLEX-WP-0022-tenant-scope-coverage.md",
|
||||
"/home/worsch/flex-auth/workplans/FLEX-WP-0027-t03-human-review.md",
|
||||
"/home/worsch/flex-auth/workplans/FLEX-WP-0020-repository-identity-migration.md"
|
||||
],
|
||||
"ops-warden": [
|
||||
"/home/worsch/ops-warden/workplans/WARDEN-WP-0040-unknown-zone-fail-closed-adoption.md",
|
||||
"/home/worsch/ops-warden/workplans/WARDEN-WP-0034-layer-model-v07-conformance.md",
|
||||
"/home/worsch/ops-warden/workplans/WARDEN-WP-0027-credential-governance-lockdown.md",
|
||||
"/home/worsch/ops-warden/workplans/WARDEN-WP-0037-whynot-design-forgejo-npm-lane.md",
|
||||
"/home/worsch/ops-warden/workplans/WARDEN-WP-0039-explicit-policy-refusal.md"
|
||||
],
|
||||
"fluid-telegram": [
|
||||
"/home/worsch/fluid-telegram/workplans/FT-WP-0001-telegram-identity-and-hall-channel.md",
|
||||
"/home/worsch/fluid-telegram/workplans/FT-WP-0002-declared-presence-provisioning.md"
|
||||
],
|
||||
"fluid-core": [
|
||||
"/home/worsch/fluid-core/workplans/FLUID-WP-0008-fluid-telegram-handover.md",
|
||||
"/home/worsch/fluid-core/workplans/FLUID-WP-0009-campaign-repos-and-example-separation.md"
|
||||
],
|
||||
"intelligence-radar": [
|
||||
"/home/worsch/intelligence-radar/workplans/IR-WP-0004-evidence-coverage-and-field-calibration.md"
|
||||
],
|
||||
"state-hub": [
|
||||
"/home/worsch/state-hub/workplans/STATE-WP-0079-retirement-strangler.md",
|
||||
"/home/worsch/state-hub/workplans/CUST-WP-0038-state-hub-threephoenix-ha.md"
|
||||
],
|
||||
"the-custodian": [
|
||||
"/home/worsch/the-custodian/workplans/CUST-WP-0071-measured-workload-sizing-and-weekly-review.md"
|
||||
],
|
||||
"railiance-clock": [
|
||||
"/home/worsch/railiance-clock/workplans/RCLK-WP-0003-reference-implementation.md",
|
||||
"/home/worsch/railiance-clock/workplans/RCLK-WP-0002-contract-review.md",
|
||||
"/home/worsch/railiance-clock/workplans/RCLK-WP-0005-infrastructure-as-code.md",
|
||||
"/home/worsch/railiance-clock/workplans/RCLK-WP-0004-deployment-adoption.md"
|
||||
],
|
||||
"informed-decision": [
|
||||
"/home/worsch/informed-decision/workplans/INFD-WP-0001-founding-specs-and-approver-ui-ownership.md"
|
||||
],
|
||||
"coordination-engine": [
|
||||
"/home/worsch/coordination-engine/workplans/COORDINATION-WP-0004-orwell-canon-review.md"
|
||||
],
|
||||
"railiance-fabric": [
|
||||
"/home/worsch/railiance-fabric/workplans/RAIL-FAB-WP-0028-hosted-financial-fabric-authority.md",
|
||||
"/home/worsch/railiance-fabric/workplans/RAIL-FAB-WP-0029-coordination-graph-perspective.md"
|
||||
],
|
||||
"railiance-infra": [
|
||||
"/home/worsch/railiance-infra/workplans/RAIL-HO-WP-0013-host-utc-timesyncd.md",
|
||||
"/home/worsch/railiance-infra/workplans/RAIL-HO-WP-0011-reproducible-s1-declaration-and-handoff.md",
|
||||
"/home/worsch/railiance-infra/workplans/RAIL-HO-WP-0012-s1-backup-recovery-loop.md"
|
||||
],
|
||||
"hall-of-helix": [
|
||||
"/home/worsch/hall-of-helix/workplans/HOH-WP-0002-published-hall-and-renderers.md"
|
||||
],
|
||||
"ops-mason": [
|
||||
"/home/worsch/ops-mason/workplans/MASON-WP-0004-credential-inventory-descriptions.md",
|
||||
"/home/worsch/ops-mason/workplans/MASON-WP-0005-fluid-telegram-operator-credential-lane.md"
|
||||
],
|
||||
"railiance-platform": [
|
||||
"/home/worsch/railiance-platform/workplans/RPF-WP-0035-credential-lane-implementation.md",
|
||||
"/home/worsch/railiance-platform/workplans/RPF-WP-0025-openbao-operator-only-access.md",
|
||||
"/home/worsch/railiance-platform/workplans/RPF-WP-0027-keycape-live-secret-exposure-recovery.md",
|
||||
"/home/worsch/railiance-platform/workplans/RPF-WP-0036-platform-service-assurance.md",
|
||||
"/home/worsch/railiance-platform/workplans/RPF-WP-0015-audit-core-custody-and-recovery-coordination.md",
|
||||
"/home/worsch/railiance-platform/workplans/RPF-WP-0038-forgejo-scaleway-primary-coverage.md",
|
||||
"/home/worsch/railiance-platform/workplans/RPF-WP-0029-backup-credential-default-removal.md"
|
||||
],
|
||||
"railiance-cluster": [
|
||||
"/home/worsch/railiance-cluster/workplans/RCLUSTER-WP-0007-threephoenix-ha-cluster.md"
|
||||
],
|
||||
"rein-aharness": [
|
||||
"/home/worsch/rein-aharness/workplans/REINAH-WP-0003-governed-runtime-integrity.md"
|
||||
],
|
||||
"secrets-engine": [
|
||||
"/home/worsch/secrets-engine/workplans/SECRETS-WP-0010-openrouter-native-access.md",
|
||||
"/home/worsch/secrets-engine/workplans/SECRETS-WP-0006-catalog-lane-adoption.md",
|
||||
"/home/worsch/secrets-engine/workplans/SECRETS-WP-0008-layer-model-lifecycle-conformance.md",
|
||||
"/home/worsch/secrets-engine/workplans/SECRETS-WP-0007-production-lifecycle-hardening.md",
|
||||
"/home/worsch/secrets-engine/workplans/SECRETS-WP-0009-glas-claude-native-delivery.md"
|
||||
],
|
||||
"approval-engine": [
|
||||
"/home/worsch/approval-engine/workplans/APPROVAL-WP-0002-production-readiness-and-consumer-adoption.md"
|
||||
],
|
||||
"freedom-intelligence": [
|
||||
"/home/worsch/freedom-intelligence/workplans/FI-WP-0004-operational-loop-and-scaleway-reserve.md"
|
||||
],
|
||||
"activity-core": [
|
||||
"/home/worsch/activity-core/workplans/ACTIVITY-WP-0035-intent-boundary-guardrails.md",
|
||||
"/home/worsch/activity-core/workplans/ACTIVITY-WP-0036-queue-identity-and-lease-integrity.md",
|
||||
"/home/worsch/activity-core/workplans/ACTIVITY-WP-0032-glas-profile-execution-contract.md"
|
||||
],
|
||||
"user-engine": [
|
||||
"/home/worsch/user-engine/workplans/USER-WP-0026-account-recovery.md",
|
||||
"/home/worsch/user-engine/workplans/USER-WP-0025-operator-navigation-and-logout.md",
|
||||
"/home/worsch/user-engine/workplans/USER-WP-0027-account-journey-clarity.md",
|
||||
"/home/worsch/user-engine/workplans/USER-WP-0028-user-journey-acceptance.md"
|
||||
],
|
||||
"key-cape": [
|
||||
"/home/worsch/key-cape/workplans/KEY-WP-0013-approval-engine-resource-audience.md",
|
||||
"/home/worsch/key-cape/workplans/KEY-WP-0033-vergabe-fresh-login.md",
|
||||
"/home/worsch/key-cape/workplans/KEY-WP-0034-account-recovery.md"
|
||||
],
|
||||
"rapp-user-engine": [
|
||||
"/home/worsch/rapp-user-engine/workplans/RAPP-USER-ENGINE-WP-0002-canonical-users-hostname.md"
|
||||
],
|
||||
"vergabe-teilnahme": [
|
||||
"/home/worsch/vergabe-teilnahme/workplans/VERGABE-WP-0018-customer-factory-delivery.md",
|
||||
"/home/worsch/vergabe-teilnahme/workplans/VERGABE-WP-0019-invited-company-pilot.md"
|
||||
],
|
||||
"railiance-apps": [
|
||||
"/home/worsch/railiance-apps/workplans/RAPPS-WP-0014-vergabe-invited-pilot.md"
|
||||
],
|
||||
"prj-helixforge-factory": [
|
||||
"/home/worsch/prj-helixforge-factory/workplans/HFACT-WP-0001-establish-internal-factory.md"
|
||||
],
|
||||
"audit-core": [
|
||||
"/home/worsch/audit-core/workplans/AUDIT-WP-0010-tenant-engine-sender-admission.md",
|
||||
"/home/worsch/audit-core/workplans/AUDIT-WP-0008-tenancy-posture-alignment.md",
|
||||
"/home/worsch/audit-core/workplans/AUDIT-WP-0009-evidence-role-conformance.md"
|
||||
],
|
||||
"tenant-engine": [
|
||||
"/home/worsch/tenant-engine/workplans/TEN-WP-0012-external-conformance-waits.md"
|
||||
],
|
||||
"sand-boxer": [
|
||||
"/home/worsch/sand-boxer/workplans/SAND-WP-0015-bwrap-runtime-and-private-state.md",
|
||||
"/home/worsch/sand-boxer/workplans/SAND-WP-0014-owner-mediated-execution.md"
|
||||
],
|
||||
"info-tech-canon": [
|
||||
"/home/worsch/info-tech-canon/workplans/INFO-WP-0019-conformance-and-maintenance.md"
|
||||
],
|
||||
"llm-connect": [
|
||||
"/home/worsch/llm-connect/workplans/LLM-WP-0009-owner-metered-messages-transport.md"
|
||||
],
|
||||
"glas-harness": [
|
||||
"/home/worsch/glas-harness/workplans/GLAS-WP-0012-first-local-profile-production-proof.md",
|
||||
"/home/worsch/glas-harness/workplans/GLAS-WP-0015-production-dependency-coordination.md"
|
||||
],
|
||||
"rapp-postgres": [
|
||||
"/home/worsch/rapp-postgres/workplans/RAPP-POSTGRES-WP-0006-canned-prompts-admission.md"
|
||||
],
|
||||
"rapp-telemetry": [
|
||||
"/home/worsch/rapp-telemetry/workplans/RAPP-TELEMETRY-WP-0001-foundation.md"
|
||||
],
|
||||
"railiance-telemetry": [
|
||||
"/home/worsch/railiance-telemetry/workplans/RTEL-WP-0002-signal-contract.md"
|
||||
],
|
||||
"reuse-surface": [
|
||||
"/home/worsch/reuse-surface/workplans/REUSE-WP-0021-commerce-canon-source-rename.md"
|
||||
],
|
||||
"pqrst-practice": [
|
||||
"/home/worsch/pqrst-practice/workplans/PQRST-WP-0002-validate-v01-against-real-sessions.md"
|
||||
],
|
||||
"rapp-core-hub": [
|
||||
"/home/worsch/rapp-core-hub/workplans/RAPPCOREHUB-WP-0003-forgejo-repository-publisher.md",
|
||||
"/home/worsch/rapp-core-hub/workplans/RAPPCOREHUB-WP-0002-hub-core-candidate-and-cutover.md"
|
||||
],
|
||||
"hub-core": [
|
||||
"/home/worsch/hub-core/workplans/HUB-WP-0011-statehub-inbox-freshness-and-cutover.md",
|
||||
"/home/worsch/hub-core/workplans/HUB-WP-0009-extension-conformance-gaps.md",
|
||||
"/home/worsch/hub-core/workplans/HUB-WP-0006-repository-classification-navigation.md"
|
||||
],
|
||||
"rapp-qonto": [
|
||||
"/home/worsch/rapp-qonto/workplans/RAPP-QONTO-WP-0002-resource-usage-and-cost-evidence.md"
|
||||
],
|
||||
"whitehat-security": [
|
||||
"/home/worsch/whitehat-security/workplans/WHITEHAT-WP-0006-authorized-live-residuals.md",
|
||||
"/home/worsch/whitehat-security/workplans/WHITEHAT-WP-0008-live-asm-residuals.md"
|
||||
],
|
||||
"fin-hub": [
|
||||
"/home/worsch/fin-hub/workplans/FIN-WP-0005-datev-accounting-adapter-operations.md",
|
||||
"/home/worsch/fin-hub/workplans/FIN-WP-0006-internal-transfer-settlement.md",
|
||||
"/home/worsch/fin-hub/workplans/FIN-WP-0004-resource-cost-evidence-contract.md"
|
||||
],
|
||||
"soul-frame": [
|
||||
"/home/worsch/soul-frame/workplans/SOUL-WP-0008-phase-vii-paper.md"
|
||||
],
|
||||
"railiance-master": [
|
||||
"/home/worsch/railiance-master/workplans/RMASTER-WP-0020-openbao-migration-to-reef-railiance.md"
|
||||
],
|
||||
"prj-unattended-progress-company": [
|
||||
"/home/worsch/prj-unattended-progress-company/workplans/UPC-WP-0004-first-offer-and-revenue.md",
|
||||
"/home/worsch/prj-unattended-progress-company/workplans/UPC-WP-0003-unattended-and-load.md",
|
||||
"/home/worsch/prj-unattended-progress-company/workplans/UPC-WP-0002-company-vessel-closeout.md"
|
||||
],
|
||||
"prj-forgejo-org-refactor": [
|
||||
"/home/worsch/prj-forgejo-org-refactor/workplans/ORGREF-WP-0001-foundation-and-entry-gate.md"
|
||||
],
|
||||
"reef-railiance": [
|
||||
"/home/worsch/reef-railiance/workplans/REEF-RAILIANCE-WP-0003-rapp-qonto-production-gates.md"
|
||||
],
|
||||
"rapp-openbao": [
|
||||
"/home/worsch/rapp-openbao/workplans/RAPP-OPENBAO-WP-0002-operator-only-ui-exposure.md"
|
||||
],
|
||||
"core-hub": [
|
||||
"/home/worsch/core-hub/workplans/CORE-WP-0010-runtime-absorption-and-archive.md"
|
||||
],
|
||||
"adaptive-pricing": [
|
||||
"/home/worsch/adaptive-pricing/workplans/ADAPTIVE-WP-0010-plan-derived-guardrail-ceilings.md"
|
||||
],
|
||||
"rapp-tenant-engine": [
|
||||
"/home/worsch/rapp-tenant-engine/workplans/RAPP-TENANT-ENGINE-WP-0001-bootstrap.md"
|
||||
],
|
||||
"test-driver": [
|
||||
"/home/worsch/test-driver/workplans/TD-WP-0003-generalise-and-settle.md"
|
||||
],
|
||||
"reef-storage": [
|
||||
"/home/worsch/reef-storage/workplans/REEF-STORAGE-WP-0002-fill-after-purchase.md"
|
||||
],
|
||||
"markitect-main": [
|
||||
"/home/worsch/markitect-main/workplans/MARKITECT-WP-0002-testdrive-jsui-publication.md"
|
||||
]
|
||||
}
|
||||
117
docs/evidence/2026-09-14-flavor-backfill/coverage.csv
Normal file
117
docs/evidence/2026-09-14-flavor-backfill/coverage.csv
Normal file
|
|
@ -0,0 +1,117 @@
|
|||
repo,id,hub_status,flavor,flavor_reason,depends_on,origin,origin_ref,changed
|
||||
net-kingdom,NK-WP-0033,active,implementation,default,none,routed,State Hub message 8cc44a39-683c-4fab-80dd-b2275d0728e0,yes
|
||||
flex-auth,FLEX-WP-0022,proposed,planning,proposed,FLEX-WP-0021,,,yes
|
||||
ops-warden,WARDEN-WP-0040,proposed,planning,proposed,"WARDEN-WP-0032,WARDEN-WP-0034",,,yes
|
||||
ops-warden,WARDEN-WP-0034,active,implementation,default,WARDEN-WP-0030,,,yes
|
||||
net-kingdom,NK-WP-0035,blocked,implementation,default,none,,,yes
|
||||
net-kingdom,NK-WP-0027,blocked,planning,keyword,none,,,yes
|
||||
net-kingdom,NK-WP-0031,blocked,implementation,default,none,,,yes
|
||||
fluid-telegram,FT-WP-0001,active,implementation,default,FLUID-WP-0008,,,yes
|
||||
fluid-core,FLUID-WP-0008,active,implementation,default,FLUID-WP-0007,,,yes
|
||||
net-kingdom,NK-WP-0009,backlog,implementation,default,NK-WP-0008,,,yes
|
||||
fluid-core,FLUID-WP-0009,active,implementation,default,FLUID-WP-0008,,,yes
|
||||
ops-warden,WARDEN-WP-0027,active,implementation,default,none,,,yes
|
||||
intelligence-radar,IR-WP-0004,active,implementation,default,none,,,yes
|
||||
state-hub,STATE-WP-0079,blocked,refactoring,keyword,none,,,yes
|
||||
state-hub,CUST-WP-0038,backlog,implementation,default,CUST-WP-0011,,,yes
|
||||
the-custodian,CUST-WP-0072,proposed,planning,already-set,STATE-WP-0092,residual-policy,the-custodian/history/20260914-open-workplan-chokepoints.md,no
|
||||
the-custodian,CUST-WP-0071,active,planning,keyword,none,,,yes
|
||||
railiance-clock,RCLK-WP-0003,proposed,implementation,proposed-implement,RCLK-WP-0002,,,yes
|
||||
railiance-clock,RCLK-WP-0002,active,planning,keyword,RCLK-WP-0001,,,yes
|
||||
railiance-clock,RCLK-WP-0005,active,implementation,default,none,,,yes
|
||||
railiance-clock,RCLK-WP-0004,proposed,implementation,proposed-implement,"RCLK-WP-0003,RCLK-WP-0005",,,yes
|
||||
informed-decision,INFD-WP-0002,proposed,planning,already-set,INFD-WP-0001,demand,the-custodian/history/20260914-open-workplan-chokepoints.md,no
|
||||
informed-decision,INFD-WP-0001,active,planning,keyword,none,founding,history/20260909-initial-exploration/InitialExploration.md,yes
|
||||
coordination-engine,COORDINATION-WP-0005,proposed,extension,already-set,none,residual-policy,the-custodian/history/20260914-open-workplan-chokepoints.md,no
|
||||
coordination-engine,COORDINATION-WP-0004,active,planning,keyword,none,,,yes
|
||||
railiance-fabric,RAIL-FAB-WP-0030,proposed,extension,already-set,"STATE-WP-0092,RAIL-FAB-WP-0029",residual-policy,the-custodian/history/20260914-open-workplan-chokepoints.md,no
|
||||
railiance-fabric,RAIL-FAB-WP-0028,proposed,residual,prose,none,residual,STATE-WP-0079,yes
|
||||
railiance-fabric,RAIL-FAB-WP-0029,proposed,planning,proposed,none,,,yes
|
||||
railiance-infra,RAIL-HO-WP-0013,proposed,residual,origin,none,residual,RCLK-WP-0005,yes
|
||||
railiance-infra,RAIL-HO-WP-0011,active,implementation,default,none,,,yes
|
||||
railiance-infra,RAIL-HO-WP-0012,active,implementation,default,none,,,yes
|
||||
hall-of-helix,HOH-WP-0002,active,implementation,default,none,,,yes
|
||||
ops-mason,MASON-WP-0004,proposed,planning,proposed,none,,,yes
|
||||
ops-mason,MASON-WP-0005,proposed,planning,proposed,none,,,yes
|
||||
railiance-platform,RPF-WP-0035,blocked,implementation,default,none,,,yes
|
||||
railiance-platform,RPF-WP-0025,blocked,implementation,default,none,,,yes
|
||||
railiance-platform,RPF-WP-0027,blocked,implementation,default,none,routed,"State Hub messages e88abb61-e393-4a82-817c-5ac378a2ee3d, acf98be3-ff6b-4270-bd21-0193bebd806b, aeb216b5-9f1b-404b-a483-fb08a00a49b1, and 71b1008a-7fd7-4500-85c6-e8893a6d80d4",yes
|
||||
railiance-platform,RPF-WP-0036,blocked,implementation,default,none,,,yes
|
||||
railiance-platform,RPF-WP-0015,blocked,implementation,default,none,routed,State Hub messages 10f80080-4c83-42ba-8590-f23c582d9f05 and a93fa88f-a9c5-4539-93ae-0c8f8490f53d,yes
|
||||
railiance-platform,RPF-WP-0038,active,implementation,default,none,,,yes
|
||||
railiance-platform,RPF-WP-0029,blocked,implementation,default,none,,,yes
|
||||
railiance-cluster,RCLUSTER-WP-0007,blocked,implementation,default,none,,,yes
|
||||
flex-auth,FLEX-WP-0027,active,implementation,default,none,,,yes
|
||||
flex-auth,FLEX-WP-0020,proposed,planning,proposed,none,,,yes
|
||||
ops-warden,WARDEN-WP-0037,active,planning,keyword,none,,,yes
|
||||
ops-warden,WARDEN-WP-0039,blocked,residual,origin,none,residual,HFACT-WP-0001,yes
|
||||
net-kingdom,NK-WP-0032,blocked,implementation,default,none,routed,State Hub message 5e56b413-d8ec-4718-b432-2debc40498ca,yes
|
||||
net-kingdom,NK-WP-0037,active,implementation,default,none,,,yes
|
||||
net-kingdom,NK-WP-0022,blocked,implementation,default,"USER-WP-0020,NK-WP-0023,KEY-WP-0004",,,yes
|
||||
net-kingdom,NK-WP-0011,backlog,implementation,default,"NK-WP-0003,NK-WP-0004,NK-WP-0006",,,yes
|
||||
net-kingdom,NK-WP-0034,blocked,implementation,default,none,,,yes
|
||||
net-kingdom,NK-WP-0036,active,implementation,default,none,,,yes
|
||||
rein-aharness,REINAH-WP-0003,active,implementation,default,none,,,yes
|
||||
secrets-engine,SECRETS-WP-0010,active,implementation,default,none,,,yes
|
||||
secrets-engine,SECRETS-WP-0006,active,implementation,default,none,,,yes
|
||||
secrets-engine,SECRETS-WP-0008,active,implementation,default,none,,,yes
|
||||
secrets-engine,SECRETS-WP-0007,active,implementation,default,none,,,yes
|
||||
secrets-engine,SECRETS-WP-0009,blocked,implementation,default,none,,,yes
|
||||
fluid-telegram,FT-WP-0002,active,implementation,default,FT-WP-0001,,,yes
|
||||
approval-engine,APPROVAL-WP-0002,active,residual,origin,none,residual,APPROVAL-WP-0001,yes
|
||||
freedom-intelligence,FI-WP-0004,active,implementation,default,"FI-WP-0001,FI-WP-0002,FI-WP-0003",,,yes
|
||||
activity-core,ACTIVITY-WP-0035,active,planning,keyword,none,,,yes
|
||||
activity-core,ACTIVITY-WP-0036,active,implementation,default,none,,,yes
|
||||
activity-core,ACTIVITY-WP-0032,active,implementation,default,none,,,yes
|
||||
user-engine,USER-WP-0026,active,implementation,default,none,,,yes
|
||||
user-engine,USER-WP-0025,active,implementation,default,none,,,yes
|
||||
user-engine,USER-WP-0027,active,implementation,default,none,,,yes
|
||||
user-engine,USER-WP-0028,active,implementation,default,none,,,yes
|
||||
key-cape,KEY-WP-0013,blocked,implementation,default,none,,,yes
|
||||
key-cape,KEY-WP-0033,active,implementation,default,none,,,yes
|
||||
key-cape,KEY-WP-0034,active,implementation,default,none,,,yes
|
||||
rapp-user-engine,RAPP-USER-ENGINE-WP-0002,active,implementation,default,none,,,yes
|
||||
vergabe-teilnahme,VERGABE-WP-0018,blocked,implementation,default,none,,,yes
|
||||
vergabe-teilnahme,VERGABE-WP-0019,active,implementation,default,none,,,yes
|
||||
railiance-apps,RAPPS-WP-0014,active,implementation,default,none,,,yes
|
||||
prj-helixforge-factory,HFACT-WP-0001,active,implementation,default,none,,,yes
|
||||
audit-core,AUDIT-WP-0010,active,implementation,default,AUDIT-WP-0005,,,yes
|
||||
audit-core,AUDIT-WP-0008,active,implementation,default,AUDIT-WP-0007,,,yes
|
||||
audit-core,AUDIT-WP-0009,active,implementation,default,AUDIT-WP-0007,,,yes
|
||||
tenant-engine,TEN-WP-0012,blocked,residual,origin,TEN-WP-0011,residual,TEN-WP-0011,yes
|
||||
sand-boxer,SAND-WP-0015,blocked,implementation,default,none,,,yes
|
||||
sand-boxer,SAND-WP-0014,active,implementation,default,none,,,yes
|
||||
info-tech-canon,INFO-WP-0019,blocked,implementation,default,none,,,yes
|
||||
llm-connect,LLM-WP-0009,active,implementation,default,none,,,yes
|
||||
glas-harness,GLAS-WP-0012,blocked,implementation,default,none,,,yes
|
||||
glas-harness,GLAS-WP-0015,active,implementation,default,none,,,yes
|
||||
rapp-postgres,RAPP-POSTGRES-WP-0006,active,implementation,default,none,,,yes
|
||||
rapp-telemetry,RAPP-TELEMETRY-WP-0001,active,implementation,default,none,,,yes
|
||||
railiance-telemetry,RTEL-WP-0002,active,implementation,default,none,,,yes
|
||||
reuse-surface,REUSE-WP-0021,active,residual,origin,none,residual,IDENTITY-WP-0004,yes
|
||||
pqrst-practice,PQRST-WP-0002,proposed,planning,proposed,none,,,yes
|
||||
rapp-core-hub,RAPPCOREHUB-WP-0003,active,implementation,default,none,,,yes
|
||||
rapp-core-hub,RAPPCOREHUB-WP-0002,active,implementation,default,none,,,yes
|
||||
hub-core,HUB-WP-0011,proposed,residual,origin,none,residual,HUB-WP-0010,yes
|
||||
hub-core,HUB-WP-0009,proposed,residual,origin,none,residual,OPS-WP-0003,yes
|
||||
hub-core,HUB-WP-0006,active,implementation,default,none,,,yes
|
||||
rapp-qonto,RAPP-QONTO-WP-0002,ready,implementation,default,none,,,yes
|
||||
whitehat-security,WHITEHAT-WP-0006,blocked,residual,prose,none,residual,WHITEHAT-WP-0001,yes
|
||||
whitehat-security,WHITEHAT-WP-0008,blocked,residual,prose,none,residual,WHITEHAT-WP-0007,yes
|
||||
fin-hub,FIN-WP-0005,active,implementation,default,none,,,yes
|
||||
fin-hub,FIN-WP-0006,proposed,residual,origin,none,residual,RESOURCE-WP-0005,yes
|
||||
fin-hub,FIN-WP-0004,active,implementation,default,none,,,yes
|
||||
soul-frame,SOUL-WP-0008,ready,implementation,default,SOUL-WP-0007,,,yes
|
||||
railiance-master,RMASTER-WP-0020,blocked,implementation,default,NK-WP-0022,,,yes
|
||||
prj-unattended-progress-company,UPC-WP-0004,proposed,planning,proposed,none,,,yes
|
||||
prj-unattended-progress-company,UPC-WP-0003,proposed,planning,proposed,none,,,yes
|
||||
prj-unattended-progress-company,UPC-WP-0002,active,implementation,default,none,,,yes
|
||||
prj-forgejo-org-refactor,ORGREF-WP-0001,backlog,implementation,default,none,,,yes
|
||||
reef-railiance,REEF-RAILIANCE-WP-0003,blocked,implementation,default,none,,,yes
|
||||
rapp-openbao,RAPP-OPENBAO-WP-0002,blocked,implementation,default,none,,,yes
|
||||
core-hub,CORE-WP-0010,active,implementation,default,none,,,yes
|
||||
adaptive-pricing,ADAPTIVE-WP-0010,proposed,planning,proposed,none,,,yes
|
||||
rapp-tenant-engine,RAPP-TENANT-ENGINE-WP-0001,proposed,planning,proposed,none,,,yes
|
||||
test-driver,TD-WP-0003,proposed,planning,proposed,none,,,yes
|
||||
reef-storage,REEF-STORAGE-WP-0002,active,implementation,default,none,,,yes
|
||||
markitect-main,MARKITECT-WP-0002,backlog,implementation,default,none,,,yes
|
||||
|
1755
docs/evidence/2026-09-14-flavor-backfill/coverage.json
Normal file
1755
docs/evidence/2026-09-14-flavor-backfill/coverage.json
Normal file
File diff suppressed because it is too large
Load diff
464
docs/evidence/2026-09-14-flavor-backfill/intake-join.json
Normal file
464
docs/evidence/2026-09-14-flavor-backfill/intake-join.json
Normal file
|
|
@ -0,0 +1,464 @@
|
|||
[
|
||||
{
|
||||
"intake_id": "01a028d1-c4af-7a06-adb5-c90399721872",
|
||||
"intake_canonical": null,
|
||||
"intake_title": "Grandfather the legacy MASON-0001 identifier scheme",
|
||||
"intake_status": "open",
|
||||
"origin_ref": "MASON-WP-0002",
|
||||
"wp_hub_status": "finished",
|
||||
"wp_hub_slug": "mason-wp-0002",
|
||||
"wp_open_flavor": null,
|
||||
"role": "intake-only-parent-closed"
|
||||
},
|
||||
{
|
||||
"intake_id": "019f8a9d-008b-7086-8f84-d72bd0d0a2a5",
|
||||
"intake_canonical": null,
|
||||
"intake_title": "agent-harness brief-weekly via llm-connect (Friday review prep)",
|
||||
"intake_status": "open",
|
||||
"origin_ref": "BINKY-WP-0006",
|
||||
"wp_hub_status": "finished",
|
||||
"wp_hub_slug": "binky-wp-0006",
|
||||
"wp_open_flavor": null,
|
||||
"role": "intake-only-parent-closed"
|
||||
},
|
||||
{
|
||||
"intake_id": "019f8a9d-074e-7b27-a7c0-8a13153bcc7a",
|
||||
"intake_canonical": null,
|
||||
"intake_title": "Optional: retarget railiance llm-connect rhythm to open-weights model",
|
||||
"intake_status": "open",
|
||||
"origin_ref": "BINKY-WP-0006",
|
||||
"wp_hub_status": "finished",
|
||||
"wp_hub_slug": "binky-wp-0006",
|
||||
"wp_open_flavor": null,
|
||||
"role": "intake-only-parent-closed"
|
||||
},
|
||||
{
|
||||
"intake_id": "01a007c6-c11e-7bb6-bffa-62f0a54a3bb5",
|
||||
"intake_canonical": null,
|
||||
"intake_title": "Clarify IP ownership boundary: which repos/assets belong to the GmbH vs Bernd privately",
|
||||
"intake_status": "open",
|
||||
"origin_ref": "UPC-WP-0002-T04",
|
||||
"wp_hub_status": null,
|
||||
"wp_hub_slug": null,
|
||||
"wp_open_flavor": null,
|
||||
"role": "unresolved-ref"
|
||||
},
|
||||
{
|
||||
"intake_id": "019ffade-2802-788f-96ed-288bb9474d96",
|
||||
"intake_canonical": null,
|
||||
"intake_title": "Enable production Barman on platform-pg after RESOURCE-WP-0002 handoff",
|
||||
"intake_status": "open",
|
||||
"origin_ref": "RAPP-POSTGRES-WP-0002",
|
||||
"wp_hub_status": "finished",
|
||||
"wp_hub_slug": "rapp-postgres-wp-0002",
|
||||
"wp_open_flavor": null,
|
||||
"role": "intake-only-parent-closed"
|
||||
},
|
||||
{
|
||||
"intake_id": "019ffade-2b7a-7c34-af30-0b228173a4f0",
|
||||
"intake_canonical": null,
|
||||
"intake_title": "Prove platform-pg data survives a coordinated railiance01 reboot",
|
||||
"intake_status": "open",
|
||||
"origin_ref": "RAPP-POSTGRES-WP-0002",
|
||||
"wp_hub_status": "finished",
|
||||
"wp_hub_slug": "rapp-postgres-wp-0002",
|
||||
"wp_open_flavor": null,
|
||||
"role": "intake-only-parent-closed"
|
||||
},
|
||||
{
|
||||
"intake_id": "019ffade-2e08-765d-aca7-cba28a0b1faa",
|
||||
"intake_canonical": null,
|
||||
"intake_title": "Provide ClusterSecretStore and OpenBao database role path for audit-core",
|
||||
"intake_status": "open",
|
||||
"origin_ref": "RAPP-POSTGRES-WP-0002",
|
||||
"wp_hub_status": "finished",
|
||||
"wp_hub_slug": "rapp-postgres-wp-0002",
|
||||
"wp_open_flavor": null,
|
||||
"role": "intake-only-parent-closed"
|
||||
},
|
||||
{
|
||||
"intake_id": "01a0215f-24eb-7602-ae4d-196e0a3f8e80",
|
||||
"intake_canonical": null,
|
||||
"intake_title": "Retire tenant-engine's stopped-write SQLite rollback artifact after soak",
|
||||
"intake_status": "open",
|
||||
"origin_ref": "RAPP-POSTGRES-WP-0003",
|
||||
"wp_hub_status": "finished",
|
||||
"wp_hub_slug": "rapp-postgres-wp-0003",
|
||||
"wp_open_flavor": null,
|
||||
"role": "intake-only-parent-closed"
|
||||
},
|
||||
{
|
||||
"intake_id": "01a02176-8ca7-725d-b2c2-4353eb4fd3f5",
|
||||
"intake_canonical": null,
|
||||
"intake_title": "Externalize tenant-engine audit evidence to audit-core",
|
||||
"intake_status": "open",
|
||||
"origin_ref": "TEN-WP-0009",
|
||||
"wp_hub_status": "finished",
|
||||
"wp_hub_slug": "ten-wp-0009",
|
||||
"wp_open_flavor": null,
|
||||
"role": "intake-only-parent-closed"
|
||||
},
|
||||
{
|
||||
"intake_id": "019ff532-3694-7868-a3a7-f4b4f28a647a",
|
||||
"intake_canonical": null,
|
||||
"intake_title": "Enable Create account and Case B registration smoke on app.coulomb.social",
|
||||
"intake_status": "open",
|
||||
"origin_ref": "CSOC-WP-0003",
|
||||
"wp_hub_status": "finished",
|
||||
"wp_hub_slug": "csoc-wp-0003",
|
||||
"wp_open_flavor": null,
|
||||
"role": "intake-only-parent-closed"
|
||||
},
|
||||
{
|
||||
"intake_id": "019ff532-3ade-7d75-acb7-2bbfa264fcb8",
|
||||
"intake_canonical": null,
|
||||
"intake_title": "Add callback replay and email-only takeover regressions",
|
||||
"intake_status": "open",
|
||||
"origin_ref": "CSOC-WP-0003",
|
||||
"wp_hub_status": "finished",
|
||||
"wp_hub_slug": "csoc-wp-0003",
|
||||
"wp_open_flavor": null,
|
||||
"role": "intake-only-parent-closed"
|
||||
},
|
||||
{
|
||||
"intake_id": "019ffac3-f894-707a-9fdb-75c8ea14497d",
|
||||
"intake_canonical": null,
|
||||
"intake_title": "Bulk-import Bubble corpus trees; map members to NetKingdom",
|
||||
"intake_status": "open",
|
||||
"origin_ref": "CSOC-WP-0001",
|
||||
"wp_hub_status": "finished",
|
||||
"wp_hub_slug": "csoc-wp-0001",
|
||||
"wp_open_flavor": null,
|
||||
"role": "intake-only-parent-closed"
|
||||
},
|
||||
{
|
||||
"intake_id": "019ffac3-fc7d-7850-93b6-b0d289881ec7",
|
||||
"intake_canonical": null,
|
||||
"intake_title": "Deploy PageOps CONTENT_ROOT + space visual migration to app host",
|
||||
"intake_status": "open",
|
||||
"origin_ref": "CSOC-WP-0006",
|
||||
"wp_hub_status": "finished",
|
||||
"wp_hub_slug": "csoc-wp-0006",
|
||||
"wp_open_flavor": null,
|
||||
"role": "intake-only-parent-closed"
|
||||
},
|
||||
{
|
||||
"intake_id": "01a02b76-e138-788c-9809-1e970c752d5d",
|
||||
"intake_canonical": null,
|
||||
"intake_title": "Restore the rein-openweights OpenRouter lane and close the dual-profile live proof",
|
||||
"intake_status": "open",
|
||||
"origin_ref": "GLAS-WP-0004",
|
||||
"wp_hub_status": "finished",
|
||||
"wp_hub_slug": "glas-wp-0004",
|
||||
"wp_open_flavor": null,
|
||||
"role": "intake-only-parent-closed"
|
||||
},
|
||||
{
|
||||
"intake_id": "01a02b76-f020-7d60-a3ce-12a34c13ebce",
|
||||
"intake_canonical": null,
|
||||
"intake_title": "Make bwrap reachability executable for governed Glas reins",
|
||||
"intake_status": "open",
|
||||
"origin_ref": "GLAS-WP-0005",
|
||||
"wp_hub_status": "finished",
|
||||
"wp_hub_slug": "glas-wp-0005",
|
||||
"wp_open_flavor": null,
|
||||
"role": "intake-only-parent-closed"
|
||||
},
|
||||
{
|
||||
"intake_id": "01a02b78-adff-70b5-8088-594784edff23",
|
||||
"intake_canonical": null,
|
||||
"intake_title": "Grandfather the legacy GLAS-0001 bootstrap identifiers",
|
||||
"intake_status": "open",
|
||||
"origin_ref": "GLAS-0001",
|
||||
"wp_hub_status": null,
|
||||
"wp_hub_slug": null,
|
||||
"wp_open_flavor": null,
|
||||
"role": "unresolved-ref"
|
||||
},
|
||||
{
|
||||
"intake_id": "01a02bde-7d1e-7af3-9eba-aecc8f50365c",
|
||||
"intake_canonical": null,
|
||||
"intake_title": "Make ADHOC workplans valid under the fleet identifier canon",
|
||||
"intake_status": "open",
|
||||
"origin_ref": "GLAS-WP-0006",
|
||||
"wp_hub_status": "finished",
|
||||
"wp_hub_slug": "glas-wp-0006",
|
||||
"wp_open_flavor": null,
|
||||
"role": "intake-only-parent-closed"
|
||||
},
|
||||
{
|
||||
"intake_id": "01a02dce-b761-75e6-861a-8abf8b8e0072",
|
||||
"intake_canonical": null,
|
||||
"intake_title": "Separate profile selection enablement from runtime readiness",
|
||||
"intake_status": "open",
|
||||
"origin_ref": "GLAS-WP-0007",
|
||||
"wp_hub_status": "finished",
|
||||
"wp_hub_slug": "glas-wp-0007",
|
||||
"wp_open_flavor": null,
|
||||
"role": "intake-only-parent-closed"
|
||||
},
|
||||
{
|
||||
"intake_id": "01a049a5-4599-740c-a148-e40e5695c7b5",
|
||||
"intake_canonical": null,
|
||||
"intake_title": "Restore source-ref projection on later SBOM catch-up batches",
|
||||
"intake_status": "open",
|
||||
"origin_ref": "CUST-WP-0064",
|
||||
"wp_hub_status": "finished",
|
||||
"wp_hub_slug": "cust-wp-0064",
|
||||
"wp_open_flavor": null,
|
||||
"role": "intake-only-parent-closed"
|
||||
},
|
||||
{
|
||||
"intake_id": "01a049ea-3a04-74b9-a9b1-e2630f8d5628",
|
||||
"intake_canonical": null,
|
||||
"intake_title": "Sweep \"control plane\" and layer vocabulary through NetKingdomImmuneArchitecture.md",
|
||||
"intake_status": "open",
|
||||
"origin_ref": "KG-DEC-2026-001",
|
||||
"wp_hub_status": null,
|
||||
"wp_hub_slug": null,
|
||||
"wp_open_flavor": null,
|
||||
"role": "unresolved-ref"
|
||||
},
|
||||
{
|
||||
"intake_id": "01a04d91-1308-7399-8942-d23f10cef388",
|
||||
"intake_canonical": null,
|
||||
"intake_title": "Provision a consumer-install npm-read lane for @whynot/design",
|
||||
"intake_status": "open",
|
||||
"origin_ref": "WHYNOT-WP-0003",
|
||||
"wp_hub_status": "finished",
|
||||
"wp_hub_slug": "whynot-wp-0003",
|
||||
"wp_open_flavor": null,
|
||||
"role": "intake-only-parent-closed"
|
||||
},
|
||||
{
|
||||
"intake_id": "4f1d9836-e0a6-56ea-bf19-2587c153f338",
|
||||
"intake_canonical": null,
|
||||
"intake_title": "Scope normal sync identity validation to actionable records",
|
||||
"intake_status": "open",
|
||||
"origin_ref": "RMGR-WP-0005",
|
||||
"wp_hub_status": "finished",
|
||||
"wp_hub_slug": "rmgr-wp-0005",
|
||||
"wp_open_flavor": null,
|
||||
"role": "intake-only-parent-closed"
|
||||
},
|
||||
{
|
||||
"intake_id": "01a05ef0-a034-7ef8-bae1-45840392f40e",
|
||||
"intake_canonical": null,
|
||||
"intake_title": "Publish the shared Taxonomy request-claim schema",
|
||||
"intake_status": "open",
|
||||
"origin_ref": "APPROVAL-WP-0001",
|
||||
"wp_hub_status": "finished",
|
||||
"wp_hub_slug": "approval-wp-0001",
|
||||
"wp_open_flavor": null,
|
||||
"role": "intake-only-parent-closed"
|
||||
},
|
||||
{
|
||||
"intake_id": "01a06e07-658e-73fa-9164-0b522504c0ee",
|
||||
"intake_canonical": null,
|
||||
"intake_title": "Absorb or replace the State Hub dashboard projection UI",
|
||||
"intake_status": "routed",
|
||||
"origin_ref": "STATE-WP-0081",
|
||||
"wp_hub_status": "finished",
|
||||
"wp_hub_slug": "state-wp-0081",
|
||||
"wp_open_flavor": null,
|
||||
"role": "intake-only-parent-closed"
|
||||
},
|
||||
{
|
||||
"intake_id": "01a06e07-7ca4-70de-a011-f9aad8655a50",
|
||||
"intake_canonical": null,
|
||||
"intake_title": "Refresh Core Hub scope after railiance01 relocation",
|
||||
"intake_status": "routed",
|
||||
"origin_ref": "SHR-WP-0002",
|
||||
"wp_hub_status": "finished",
|
||||
"wp_hub_slug": "shr-wp-0002",
|
||||
"wp_open_flavor": null,
|
||||
"role": "intake-only-parent-closed"
|
||||
},
|
||||
{
|
||||
"intake_id": "01a06e07-ab16-734e-89b2-4b59796d5073",
|
||||
"intake_canonical": null,
|
||||
"intake_title": "Refresh Ops Hub framework ownership language",
|
||||
"intake_status": "routed",
|
||||
"origin_ref": "SHR-WP-0002",
|
||||
"wp_hub_status": "finished",
|
||||
"wp_hub_slug": "shr-wp-0002",
|
||||
"wp_open_flavor": null,
|
||||
"role": "intake-only-parent-closed"
|
||||
},
|
||||
{
|
||||
"intake_id": "01a06e07-cdc3-763d-a746-eaaa289baad6",
|
||||
"intake_canonical": null,
|
||||
"intake_title": "Refresh Ops Bridge State Hub topology language",
|
||||
"intake_status": "routed",
|
||||
"origin_ref": "SHR-WP-0002",
|
||||
"wp_hub_status": "finished",
|
||||
"wp_hub_slug": "shr-wp-0002",
|
||||
"wp_open_flavor": null,
|
||||
"role": "intake-only-parent-closed"
|
||||
},
|
||||
{
|
||||
"intake_id": "01a06e07-f2f9-7586-9745-b359eb0025b6",
|
||||
"intake_canonical": null,
|
||||
"intake_title": "Retire or repoint legacy Inter-Hub and Gitea registry lanes",
|
||||
"intake_status": "routed",
|
||||
"origin_ref": "SHR-WP-0002",
|
||||
"wp_hub_status": "finished",
|
||||
"wp_hub_slug": "shr-wp-0002",
|
||||
"wp_open_flavor": null,
|
||||
"role": "intake-only-parent-closed"
|
||||
},
|
||||
{
|
||||
"intake_id": "01a06e08-243c-7552-8933-ae2fc4d69ffb",
|
||||
"intake_canonical": null,
|
||||
"intake_title": "Publish @whynot/design through the Forgejo npm registry",
|
||||
"intake_status": "open",
|
||||
"origin_ref": "SHR-WP-0002",
|
||||
"wp_hub_status": "finished",
|
||||
"wp_hub_slug": "shr-wp-0002",
|
||||
"wp_open_flavor": null,
|
||||
"role": "intake-only-parent-closed"
|
||||
},
|
||||
{
|
||||
"intake_id": "01a06e08-3bdd-77c8-828b-b07d0c77eb98",
|
||||
"intake_canonical": null,
|
||||
"intake_title": "Remove the legacy Gitea PyPI publication target",
|
||||
"intake_status": "open",
|
||||
"origin_ref": "SHR-WP-0002",
|
||||
"wp_hub_status": "finished",
|
||||
"wp_hub_slug": "shr-wp-0002",
|
||||
"wp_open_flavor": null,
|
||||
"role": "intake-only-parent-closed"
|
||||
},
|
||||
{
|
||||
"intake_id": "01a06e08-58fa-78d0-a7e8-06ab4fc85375",
|
||||
"intake_canonical": null,
|
||||
"intake_title": "Remove the legacy Gitea ArgoCD source allow-list",
|
||||
"intake_status": "open",
|
||||
"origin_ref": "SHR-WP-0002",
|
||||
"wp_hub_status": "finished",
|
||||
"wp_hub_slug": "shr-wp-0002",
|
||||
"wp_open_flavor": null,
|
||||
"role": "intake-only-parent-closed"
|
||||
},
|
||||
{
|
||||
"intake_id": "01a06e08-6936-7762-a347-f832182b7705",
|
||||
"intake_canonical": null,
|
||||
"intake_title": "Publish @whynot/design through the Forgejo npm registry",
|
||||
"intake_status": "closed",
|
||||
"origin_ref": "SHR-WP-0002",
|
||||
"wp_hub_status": "finished",
|
||||
"wp_hub_slug": "shr-wp-0002",
|
||||
"wp_open_flavor": null,
|
||||
"role": "intake-only-parent-closed"
|
||||
},
|
||||
{
|
||||
"intake_id": "01a06e08-7a37-7a86-b456-67a40fdc3fef",
|
||||
"intake_canonical": null,
|
||||
"intake_title": "Remove the legacy Gitea PyPI publication target",
|
||||
"intake_status": "routed",
|
||||
"origin_ref": "SHR-WP-0002",
|
||||
"wp_hub_status": "finished",
|
||||
"wp_hub_slug": "shr-wp-0002",
|
||||
"wp_open_flavor": null,
|
||||
"role": "intake-only-parent-closed"
|
||||
},
|
||||
{
|
||||
"intake_id": "01a06e08-9718-786e-b753-b56aa5f4c005",
|
||||
"intake_canonical": null,
|
||||
"intake_title": "Remove the legacy Gitea ArgoCD source allow-list",
|
||||
"intake_status": "routed",
|
||||
"origin_ref": "SHR-WP-0002",
|
||||
"wp_hub_status": "finished",
|
||||
"wp_hub_slug": "shr-wp-0002",
|
||||
"wp_open_flavor": null,
|
||||
"role": "intake-only-parent-closed"
|
||||
},
|
||||
{
|
||||
"intake_id": "01a06e0c-3feb-7920-a6f2-961b03dc170d",
|
||||
"intake_canonical": null,
|
||||
"intake_title": "Bound or optimize the repository collection projection",
|
||||
"intake_status": "routed",
|
||||
"origin_ref": "STATE-WP-0081",
|
||||
"wp_hub_status": "finished",
|
||||
"wp_hub_slug": "state-wp-0081",
|
||||
"wp_open_flavor": null,
|
||||
"role": "intake-only-parent-closed"
|
||||
},
|
||||
{
|
||||
"intake_id": "01a07331-68e8-739f-b7c3-9cca28feb5e5",
|
||||
"intake_canonical": null,
|
||||
"intake_title": "Complete deferred ADR metadata and conflict rulings",
|
||||
"intake_status": "open",
|
||||
"origin_ref": "PNEX-WP-0003",
|
||||
"wp_hub_status": "finished",
|
||||
"wp_hub_slug": "pnex-wp-0003",
|
||||
"wp_open_flavor": null,
|
||||
"role": "intake-only-parent-closed"
|
||||
},
|
||||
{
|
||||
"intake_id": "01a073cf-51ca-7fa7-a432-658ba3718382",
|
||||
"intake_canonical": null,
|
||||
"intake_title": "Review Custodian historical bindings and agent workplan-prefix conflict",
|
||||
"intake_status": "open",
|
||||
"origin_ref": "THE-WP-0001",
|
||||
"wp_hub_status": "finished",
|
||||
"wp_hub_slug": "the-wp-0001",
|
||||
"wp_open_flavor": null,
|
||||
"role": "intake-only-parent-closed"
|
||||
},
|
||||
{
|
||||
"intake_id": "01a07553-3d88-7a72-88b8-0028d55e442f",
|
||||
"intake_canonical": null,
|
||||
"intake_title": "Family model demand review",
|
||||
"intake_status": "open",
|
||||
"origin_ref": "CFED-WP-0001",
|
||||
"wp_hub_status": "finished",
|
||||
"wp_hub_slug": "cfed-wp-0001",
|
||||
"wp_open_flavor": null,
|
||||
"role": "intake-only-parent-closed"
|
||||
},
|
||||
{
|
||||
"intake_id": "01a07554-1005-78d9-a5e4-ac0c0551cec9",
|
||||
"intake_canonical": null,
|
||||
"intake_title": "Commerce service surface demand review",
|
||||
"intake_status": "open",
|
||||
"origin_ref": "CFED-WP-0001",
|
||||
"wp_hub_status": "finished",
|
||||
"wp_hub_slug": "cfed-wp-0001",
|
||||
"wp_open_flavor": null,
|
||||
"role": "intake-only-parent-closed"
|
||||
},
|
||||
{
|
||||
"intake_id": "01a07554-17ac-7d95-8df0-9b219ec2fc5f",
|
||||
"intake_canonical": null,
|
||||
"intake_title": "Federated canon consumer adoption review",
|
||||
"intake_status": "open",
|
||||
"origin_ref": "CFED-WP-0001",
|
||||
"wp_hub_status": "finished",
|
||||
"wp_hub_slug": "cfed-wp-0001",
|
||||
"wp_open_flavor": null,
|
||||
"role": "intake-only-parent-closed"
|
||||
},
|
||||
{
|
||||
"intake_id": "01a0880b-4421-747b-9e7f-6e9bff9d2ea3",
|
||||
"intake_canonical": null,
|
||||
"intake_title": "The independent evidence path \u2014 what travels to audit-core",
|
||||
"intake_status": "open",
|
||||
"origin_ref": "INFD-WP-0001-T05",
|
||||
"wp_hub_status": null,
|
||||
"wp_hub_slug": null,
|
||||
"wp_open_flavor": null,
|
||||
"role": "unresolved-ref"
|
||||
},
|
||||
{
|
||||
"intake_id": "01a08ecc-c6f6-7162-a154-0ab51a2ff61d",
|
||||
"intake_canonical": null,
|
||||
"intake_title": "Repair SQLite import into chained PostgreSQL custody",
|
||||
"intake_status": "open",
|
||||
"origin_ref": "AUDIT-WP-0005",
|
||||
"wp_hub_status": "finished",
|
||||
"wp_hub_slug": "audit-wp-0005",
|
||||
"wp_open_flavor": null,
|
||||
"role": "intake-only-parent-closed"
|
||||
}
|
||||
]
|
||||
|
|
@ -4,7 +4,7 @@ type: workplan
|
|||
title: "Backfill workplan flavor and depends_on across the fleet"
|
||||
domain: infotech
|
||||
repo: the-custodian
|
||||
status: proposed
|
||||
status: finished
|
||||
owner: grok
|
||||
topic_slug: custodian
|
||||
flavor: planning
|
||||
|
|
@ -36,7 +36,7 @@ residuals into implementation just to shrink a count.
|
|||
|
||||
```task
|
||||
id: CUST-WP-0072-T01
|
||||
status: wait
|
||||
status: done
|
||||
priority: high
|
||||
depends_on: [STATE-WP-0092]
|
||||
state_hub_task_id: "cfd17138-0ae2-573d-9709-0fc87af2baf1"
|
||||
|
|
@ -47,11 +47,17 @@ indexed and default views omitting residuals. Until then this task stays
|
|||
`wait`. Record the hub revision / workplan statuses that satisfy the
|
||||
gate.
|
||||
|
||||
2026-09-14: STATE-WP-0092 is `finished` (`2a2d8bcd`). File/API work is in
|
||||
`state-hub` main. Live primary schema is still `b5e6f7a8c9d0`, so residual
|
||||
exclusion is not yet visible on production views. Founder instructed this
|
||||
backfill to proceed on files. Hub views follow after alembic `c6f7a8b9d0e1`
|
||||
is deployed.
|
||||
|
||||
## Classify open workplans (and their open tasks)
|
||||
|
||||
```task
|
||||
id: CUST-WP-0072-T02
|
||||
status: wait
|
||||
status: done
|
||||
priority: high
|
||||
depends_on: [CUST-WP-0072-T01]
|
||||
state_hub_task_id: "e87ee326-10a8-5dce-a59a-5b9dc3236ba9"
|
||||
|
|
@ -74,11 +80,16 @@ Done when a coverage table (repo, workplan id, flavor, depends_on
|
|||
filled or none) is committed under `the-custodian/docs/evidence/` and
|
||||
default hub open views drop the residual cohort.
|
||||
|
||||
2026-09-14: 116 open workplans classified (81 implementation, 21 planning,
|
||||
11 residual, 2 extension, 1 refactoring). Coverage:
|
||||
`docs/evidence/2026-09-14-flavor-backfill/`. Residuals were not promoted.
|
||||
Live summary exclusion waits on STATE-WP-0092 deploy.
|
||||
|
||||
## Update conventions and templates
|
||||
|
||||
```task
|
||||
id: CUST-WP-0072-T03
|
||||
status: wait
|
||||
status: done
|
||||
priority: medium
|
||||
depends_on: [CUST-WP-0072-T01]
|
||||
state_hub_task_id: "00b28231-b4e1-5ab4-9474-d771d378b35b"
|
||||
|
|
@ -98,7 +109,7 @@ convention text matches canon.
|
|||
|
||||
```task
|
||||
id: CUST-WP-0072-T04
|
||||
status: wait
|
||||
status: done
|
||||
priority: medium
|
||||
depends_on: [CUST-WP-0072-T02]
|
||||
state_hub_task_id: "81c5a43b-4369-53f0-b666-a4f409162521"
|
||||
|
|
@ -112,3 +123,8 @@ parallel residuals queue.
|
|||
Done when the residual intake list and residual workplan list can be
|
||||
joined by `origin_ref` without double-counting them as two implementation
|
||||
backlogs.
|
||||
|
||||
2026-09-14: 42 `origin: residual` intakes. 38 point at finished parents
|
||||
(intake is the live leftover). 4 point at non-workplan ids. Zero open
|
||||
implementation workplans are also residual-intake targets.
|
||||
`docs/evidence/2026-09-14-flavor-backfill/intake-join.json`.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue