--- id: REUSE-WP-0015 type: workplan title: "Federation polish and planning analytics" domain: helix_forge repo: reuse-surface status: active owner: codex topic_slug: helix-forge created: "2026-06-16" updated: "2026-06-16" state_hub_workstream_id: "a67689ce-4634-4e88-a66f-e357520e1c4a" --- # Federation polish and planning analytics Follow-up to `history/2026-06-16-intent-scope-assessment.md` and `docs/IntentScopeGapAnalysis.md` priorities **25–27**. REUSE-WP-0014 established registry scaffolds in **60** workstation repos and hub registrations; this workplan closes the remaining INTENT↔SCOPE gaps: **fetchable federation**, **duplicate-ID cleanup**, **planning analytics**, and **compose acceptance**. **Baseline vector:** `D5 / A4 / C5 / R3` **Target vector:** `D5 / A4 / C5–C6 / R3` (completeness rises when federation fetch and namespace are clean; reliability unchanged until telemetry program) ## Assessment reference | Priority | Gap | Task | |---|---|---| | 25 | Gitea publish visibility (13 repos) | T01 | | 26 | Federated ID deduplication | T02 | | 27 | Planning analytics / standardization | T03 | | — | Federation compose acceptance | T04 | | — | Roster CI observability | T05 | | — | SCOPE + gap analysis refresh | T06 | **Roster:** `registry/federation/local-repo-roster.yaml` **Per-repo operator guide:** `history/2026-06-16-wp0014-remaining-work-by-repo.md` **Dedup plan:** `history/2026-06-16-federation-deduplication-plan.md` ## Suggested execution order ```text T01 (Gitea publish — operator; unblocks fetch) → T02 (dedup reuse-surface index — per owner) → T04 (compose acceptance — verify 0 warnings) → T03 (planning analytics — can start design in parallel with T02) → T05 (CI roster stats — after T01/T04 metrics stable) → T06 (docs refresh) ``` ## Dependencies | Dependency | Owner | Notes | |---|---|---| | Gitea repo visibility | Operator | 13 slugs; `hub-core` needs repo creation | | Owner agreement | Domain repos | Dedup removes reuse-surface canonical copies | | Production hub | Railiance01 | `https://reuse.coulomb.social` | --- ## Remediate Gitea Publish Blockers ```task id: REUSE-WP-0015-T01 status: progress priority: high state_hub_task_id: "7024ca46-cabd-44a8-8baf-cbc83d99c1fe" needs_human: true intervention_note: "tegwick-control — no HTTP-visible Gitea repo; operator must create coulomb/tegwick-control (59/60 pass)" ``` Close gap priority **25**. **2026-06-16:** Sweep re-run — all 13 still HTTP 404. No agent-side remediation possible without Gitea operator action. Bring all roster rows to `publish_check: pass`. **2026-06-16 (follow-up):** `hub-core` resolved — Gitea repo created, push OK, `publish_check: pass`. **12** slugs remain HTTP 404. **2026-06-16 (visibility fix):** Gitea repos made public — **11** former blockers now `publish_check: pass`. `whynot-control` / `whynot-design` use `whynot/` org paths in `sources.yaml`. **59/60** pass; **1** remains. **Blocked slug (1):** `tegwick-control` — SSH remote `tegwick/tegwick-control` exists but no HTTP-visible repo; `coulomb/tegwick-control` not created (push-to-create disabled). Per slug: 1. Ensure Gitea repo exists and `main` has `registry/indexes/capabilities.yaml` 2. Enable anonymous raw URL access (or document `auth_env` in `sources.yaml`) 3. `reuse-surface establish --publish-check --raw-url ` 4. Update `local-repo-roster.yaml` (`publish_check`, `publish_note`) 5. Re-run roster sweep: all `publish_fail` → 0 **Resolved:** `hub-core` — `coulomb/hub-core` created on Gitea; roster `publish_check: pass` (2026-06-16 follow-up). **Done when:** `reuse-surface stats --roster ... --federation-ready` shows `all_publish_pass: true`. ## Deduplicate Owner-Migrated Index Rows ```task id: REUSE-WP-0015-T02 status: done priority: high state_hub_task_id: "a354ef8f-fdbb-4929-8278-8ecf4ca79553" ``` Close gap priority **26**. **Done 2026-06-16:** Removed 17 owner-migrated rows + markdown from reuse-surface index (kept `activity-core` stub until T01). Local index **3** entries. Compose duplicate warnings clear after Gitea index push (`--refresh`). Remove duplicate capability rows from reuse-surface where owner repo index is canonical and fetchable. **Done 2026-06-16 (visibility fix):** Removed `activity-core` stub after owner index fetchable; local index **2** entries (meta-registry only). **Owner batches** (separate commits per owner — see dedup plan): | Owner | IDs to remove from reuse-surface | |---|---| | `audit-core` | `capability.audit.event-retain` | | `flex-auth` | `capability.authorization.policy-evaluate` | | `feature-control` | evaluate, rollout, visibility | | `identity-canon` | subject-resolution, vocabulary-canonicalize | | `state-hub` | progress-log, workstream-coordinate | | `shard-wiki` | 8× `capability.wiki.*` | | `activity-core` | `capability.activity.event-coordinate` (after T01) | After each batch: ```bash reuse-surface validate --relations reuse-surface federation compose reuse-surface graph --check ``` **Keep in reuse-surface:** `capability.registry.register`, `capability.registry.validate`. **Done when:** `federation compose` reports **0** duplicate-ID warnings. ## Planning Gap Report And Standardization Tracker ```task id: REUSE-WP-0015-T03 status: done priority: medium state_hub_task_id: "e135ea2e-a68f-4f72-947c-abe08a3aedef" ``` Close gap priority **27**. **Done 2026-06-16:** `reuse-surface report gaps` — roster publish blockers, empty scaffolds, seed-ready repos, local owner stubs. Standardization tracker deferred (overlaps + compose warnings sufficient for now). Extend planning support beyond `report cohorts`. Deliver one or both (minimum: **gap report**): | Deliverable | Description | |---|---| | **Gap report** | `reuse-surface report gaps` — federated IDs vs empty owner scaffolds; repos with `capability_count: 0` and suggested next entries from roster | | **Standardization tracker** | Markdown or YAML artifact listing overlap clusters from `overlaps` + compose duplicate history | Update `tools/README.md` and `SCOPE.md` when shipped. **Done when:** INTENT success criteria row 5–6 have a documented CLI or report artifact beyond overlaps/cohorts. ## Federation Compose Acceptance Gate ```task id: REUSE-WP-0015-T04 status: done priority: high state_hub_task_id: "aa26429d-6d42-4d84-9235-96feb61303f2" ``` Verify federation health after T01 and T02. **Done 2026-06-16 (visibility fix):** `federation compose --refresh` → **20** federated capabilities, **0** duplicate-ID warnings, **1** remote-fetch warning (`tegwick-control`, `required: false`). Acceptance met for enabled sources. ```bash reuse-surface hub sync --merge reuse-surface federation compose ``` **Acceptance:** - 0 remote index unavailable warnings (or documented `required: false` exceptions) - 0 duplicate-ID warnings - `registry/indexes/federated.yaml` committed when compose output changes - Record final capability count and source counts in workplan progress log Optional: add `--fail-on-warnings` to compose for CI (separate commit if scope grows). ## Roster Federation Stats In CI ```task id: REUSE-WP-0015-T05 status: done priority: low state_hub_task_id: "88f50eb3-9fba-413f-89aa-7b159f136520" ``` **Done 2026-06-16:** CI informational steps for `stats --roster --federation-ready` and `report gaps` in `.gitea/workflows/ci.yml`. Informational CI step (non-blocking until T01 complete): ```bash reuse-surface stats --roster registry/federation/local-repo-roster.yaml \ --federation-ready --format json ``` Emit summary to CI log; fail or warn when `publish_fail > 0` once T01 is marked done (operator choice documented in workplan). ## Refresh SCOPE And Gap Analysis ```task id: REUSE-WP-0015-T06 status: done priority: low state_hub_task_id: "fd25e504-21b7-4e9f-841c-cfa20318be33" ``` **2026-06-16 (visibility fix):** `SCOPE.md` and `docs/IntentScopeGapAnalysis.md` updated for 59/60 publish pass, dedup complete, compose acceptance. Final T06 note when `tegwick-control` resolves. On workplan completion: - Update `SCOPE.md` §What Is Not Possible Yet and §Current State - Update `docs/IntentScopeGapAnalysis.md` — close priorities 25–27; propose new priorities if hub automation or R4 telemetry remain - Add `history/` snapshot if vector or success-criteria score changes materially --- ## Acceptance - [ ] Roster `publish_fail: 0` (59/60 — `tegwick-control` remains) - [x] `federation compose` — 0 duplicate-ID warnings - [x] `federation compose` — 0 remote fetch warnings for `required: true` sources - [x] reuse-surface index retains only meta-registry entries - [x] Planning gap report or standardization tracker shipped (T03) - [x] `SCOPE.md` and `IntentScopeGapAnalysis.md` reflect closed gaps (pending tegwick) ## Out of scope - Multi-domain federation (non–`helix_forge`) - Hub Postgres / multi-replica implementation (documented only) - Automatic hub polling/webhooks (future workplan) - Mandatory `establish --discover` for empty scaffolds ## Progress log | Date | Event | |---|---| | 2026-06-16 | WP-0015 created from `history/2026-06-16-intent-scope-assessment.md` | | 2026-06-16 | T02 dedup (3 local entries); T03 report gaps; T05 CI; T01 operator-blocked | | 2026-06-16 | Follow-up: hub-core publish pass (12 blockers); T06 partial doc refresh | | 2026-06-16 | Visibility fix: 59/60 publish pass; whynot org URLs; activity-core dedup; T04 done | | 2026-06-16 | T04 closed — compose healthy (20 caps, 0 dup, 12 fetch warns = required:false exceptions). T01 remains the sole operator gate (12 Gitea 404); T06 final pass blocked on T01 |