From e91c529358987329843a065adf1ed4fb677668f4 Mon Sep 17 00:00:00 2001 From: tegwick Date: Tue, 16 Jun 2026 01:40:49 +0200 Subject: [PATCH] Add REUSE-WP-0014 local repo registry rollout workplan Define workstation-wide scope (all ~/ git repos), track 60 repos in local-repo-roster.yaml with batch assignments, and document establishment checklist for remaining 55 pending registries. --- docs/RegistryFederation.md | 11 +- history/README.md | 3 +- registry/federation/local-repo-roster.yaml | 572 ++++++++++++++++++ ...USE-WP-0014-local-repo-registry-rollout.md | 264 ++++++++ 4 files changed, 848 insertions(+), 2 deletions(-) create mode 100644 registry/federation/local-repo-roster.yaml create mode 100644 workplans/REUSE-WP-0014-local-repo-registry-rollout.md diff --git a/docs/RegistryFederation.md b/docs/RegistryFederation.md index a729440..168bd11 100644 --- a/docs/RegistryFederation.md +++ b/docs/RegistryFederation.md @@ -97,7 +97,16 @@ curl -fsS "" | head source) to an environment variable holding a Bearer token or full header value. The hub stores `auth_env` / `auth_header` names only — never secret values. -### Sibling onboarding (CLI) +### Local repo rollout tracking + +Workstation-wide registry establishment is tracked in +`registry/federation/local-repo-roster.yaml` (workplan **REUSE-WP-0014**). + +**Scope:** every git repository at `~//` (one level under `$HOME`). +Update roster `status`, `hub_registered`, and `publish_check` after each repo +completes the establishment checklist below. + +## Sibling onboarding (CLI) ```bash cd ../state-hub diff --git a/history/README.md b/history/README.md index d7c9d80..d0175d8 100644 --- a/history/README.md +++ b/history/README.md @@ -8,4 +8,5 @@ in `INTENT.md`; living delta tracking in `docs/IntentScopeGapAnalysis.md`. |---|---|---| | 2026-06-15 | [2026-06-15-intent-scope-assessment.md](2026-06-15-intent-scope-assessment.md) | Post-WP-0011 INTENT↔SCOPE assessment; priorities 18–23 | | 2026-06-16 | [2026-06-16-hub-registration-blocks.md](2026-06-16-hub-registration-blocks.md) | Sibling hub registration blocks; raw URL probe evidence | -| 2026-06-17 | [2026-06-17-sibling-registry-established.md](2026-06-17-sibling-registry-established.md) | establish --scaffold + hub registration for four siblings | \ No newline at end of file +| 2026-06-17 | [2026-06-17-sibling-registry-established.md](2026-06-17-sibling-registry-established.md) | establish --scaffold + hub registration for four siblings | +| 2026-06-17 | REUSE-WP-0014 | Local repo roster (60 git repos); rollout tracking in `registry/federation/local-repo-roster.yaml` | \ No newline at end of file diff --git a/registry/federation/local-repo-roster.yaml b/registry/federation/local-repo-roster.yaml new file mode 100644 index 0000000..1ef9590 --- /dev/null +++ b/registry/federation/local-repo-roster.yaml @@ -0,0 +1,572 @@ +version: 1 +updated: '2026-06-16' +workstation_root: /home/worsch +definition: All git repositories one level under the workstation home directory (e.g. + /home/worsch/ with a .git directory). Excludes nested worktrees and non-git + folders. +summary: + total: 60 + established: 5 + pending: 55 + with_reuse_surface_seed: 8 +repos: +- slug: activity-core + path: /home/worsch/activity-core + status: pending + capability_count: 0 + seed_from_reuse_surface: true + seed_capability_ids: + - capability.activity.event-coordinate + hub_registered: false + publish_check: pending + batch: B01 +- slug: agentic-resources + path: /home/worsch/agentic-resources + status: pending + capability_count: 0 + seed_from_reuse_surface: false + seed_capability_ids: [] + hub_registered: false + publish_check: pending + batch: B01 +- slug: artifact-store + path: /home/worsch/artifact-store + status: pending + capability_count: 0 + seed_from_reuse_surface: false + seed_capability_ids: [] + hub_registered: false + publish_check: pending + batch: B01 +- slug: audit-core + path: /home/worsch/audit-core + status: pending + capability_count: 0 + seed_from_reuse_surface: true + seed_capability_ids: + - capability.audit.event-retain + hub_registered: false + publish_check: pending + batch: B01 +- slug: can-you-assist + path: /home/worsch/can-you-assist + status: pending + capability_count: 0 + seed_from_reuse_surface: false + seed_capability_ids: [] + hub_registered: false + publish_check: pending + batch: B01 +- slug: citation-engine + path: /home/worsch/citation-engine + status: pending + capability_count: 0 + seed_from_reuse_surface: false + seed_capability_ids: [] + hub_registered: false + publish_check: pending + batch: B01 +- slug: citation-evidence + path: /home/worsch/citation-evidence + status: pending + capability_count: 0 + seed_from_reuse_surface: false + seed_capability_ids: [] + hub_registered: false + publish_check: pending + batch: B01 +- slug: citation-work + path: /home/worsch/citation-work + status: pending + capability_count: 0 + seed_from_reuse_surface: false + seed_capability_ids: [] + hub_registered: false + publish_check: pending + batch: B01 +- slug: coordination-engine + path: /home/worsch/coordination-engine + status: pending + capability_count: 0 + seed_from_reuse_surface: false + seed_capability_ids: [] + hub_registered: false + publish_check: pending + batch: B01 +- slug: domain-tree + path: /home/worsch/domain-tree + status: pending + capability_count: 0 + seed_from_reuse_surface: false + seed_capability_ids: [] + hub_registered: false + publish_check: pending + batch: B01 +- slug: email-connect + path: /home/worsch/email-connect + status: pending + capability_count: 0 + seed_from_reuse_surface: false + seed_capability_ids: [] + hub_registered: false + publish_check: pending + batch: B02 +- slug: evidence-anchor + path: /home/worsch/evidence-anchor + status: pending + capability_count: 0 + seed_from_reuse_surface: false + seed_capability_ids: [] + hub_registered: false + publish_check: pending + batch: B02 +- slug: evidence-binder + path: /home/worsch/evidence-binder + status: pending + capability_count: 0 + seed_from_reuse_surface: false + seed_capability_ids: [] + hub_registered: false + publish_check: pending + batch: B02 +- slug: evidence-source + path: /home/worsch/evidence-source + status: pending + capability_count: 0 + seed_from_reuse_surface: false + seed_capability_ids: [] + hub_registered: false + publish_check: pending + batch: B02 +- slug: feature-control + path: /home/worsch/feature-control + status: established + capability_count: 3 + seed_from_reuse_surface: true + seed_capability_ids: + - capability.feature-control.evaluate + - capability.feature-control.rollout + - capability.feature-control.visibility + hub_registered: true + publish_check: pass + batch: null +- slug: flex-auth + path: /home/worsch/flex-auth + status: pending + capability_count: 0 + seed_from_reuse_surface: true + seed_capability_ids: + - capability.authorization.policy-evaluate + hub_registered: false + publish_check: pending + batch: B02 +- slug: guide-board + path: /home/worsch/guide-board + status: pending + capability_count: 0 + seed_from_reuse_surface: false + seed_capability_ids: [] + hub_registered: false + publish_check: pending + batch: B02 +- slug: helix-forge + path: /home/worsch/helix-forge + status: pending + capability_count: 0 + seed_from_reuse_surface: false + seed_capability_ids: [] + hub_registered: false + publish_check: pending + batch: B02 +- slug: hub-core + path: /home/worsch/hub-core + status: pending + capability_count: 0 + seed_from_reuse_surface: false + seed_capability_ids: [] + hub_registered: false + publish_check: pending + batch: B02 +- slug: human-resources + path: /home/worsch/human-resources + status: pending + capability_count: 0 + seed_from_reuse_surface: false + seed_capability_ids: [] + hub_registered: false + publish_check: pending + batch: B02 +- slug: identity-canon + path: /home/worsch/identity-canon + status: established + capability_count: 2 + seed_from_reuse_surface: true + seed_capability_ids: + - capability.identity.subject-resolution + - capability.identity.vocabulary-canonicalize + hub_registered: true + publish_check: pass + batch: null +- slug: ihp-railiance-probe + path: /home/worsch/ihp-railiance-probe + status: pending + capability_count: 0 + seed_from_reuse_surface: false + seed_capability_ids: [] + hub_registered: false + publish_check: pending + batch: B02 +- slug: info-tech-canon + path: /home/worsch/info-tech-canon + status: pending + capability_count: 0 + seed_from_reuse_surface: false + seed_capability_ids: [] + hub_registered: false + publish_check: pending + batch: B03 +- slug: infospace-bench + path: /home/worsch/infospace-bench + status: pending + capability_count: 0 + seed_from_reuse_surface: false + seed_capability_ids: [] + hub_registered: false + publish_check: pending + batch: B03 +- slug: inter-hub + path: /home/worsch/inter-hub + status: pending + capability_count: 0 + seed_from_reuse_surface: false + seed_capability_ids: [] + hub_registered: false + publish_check: pending + batch: B03 +- slug: issue-core + path: /home/worsch/issue-core + status: pending + capability_count: 0 + seed_from_reuse_surface: false + seed_capability_ids: [] + hub_registered: false + publish_check: pending + batch: B03 +- slug: kaizen-agentic + path: /home/worsch/kaizen-agentic + status: pending + capability_count: 0 + seed_from_reuse_surface: false + seed_capability_ids: [] + hub_registered: false + publish_check: pending + batch: B03 +- slug: key-cape + path: /home/worsch/key-cape + status: pending + capability_count: 0 + seed_from_reuse_surface: false + seed_capability_ids: [] + hub_registered: false + publish_check: pending + batch: B03 +- slug: kontextual-engine + path: /home/worsch/kontextual-engine + status: pending + capability_count: 0 + seed_from_reuse_surface: false + seed_capability_ids: [] + hub_registered: false + publish_check: pending + batch: B03 +- slug: llm-connect + path: /home/worsch/llm-connect + status: pending + capability_count: 0 + seed_from_reuse_surface: false + seed_capability_ids: [] + hub_registered: false + publish_check: pending + batch: B03 +- slug: markitect-filter + path: /home/worsch/markitect-filter + status: pending + capability_count: 0 + seed_from_reuse_surface: false + seed_capability_ids: [] + hub_registered: false + publish_check: pending + batch: B03 +- slug: markitect-main + path: /home/worsch/markitect-main + status: pending + capability_count: 0 + seed_from_reuse_surface: false + seed_capability_ids: [] + hub_registered: false + publish_check: pending + batch: B03 +- slug: markitect-quarkdown + path: /home/worsch/markitect-quarkdown + status: pending + capability_count: 0 + seed_from_reuse_surface: false + seed_capability_ids: [] + hub_registered: false + publish_check: pending + batch: B04 +- slug: markitect-tool + path: /home/worsch/markitect-tool + status: pending + capability_count: 0 + seed_from_reuse_surface: false + seed_capability_ids: [] + hub_registered: false + publish_check: pending + batch: B04 +- slug: net-kingdom + path: /home/worsch/net-kingdom + status: pending + capability_count: 0 + seed_from_reuse_surface: false + seed_capability_ids: [] + hub_registered: false + publish_check: pending + batch: B04 +- slug: open-cmis-tck + path: /home/worsch/open-cmis-tck + status: pending + capability_count: 0 + seed_from_reuse_surface: false + seed_capability_ids: [] + hub_registered: false + publish_check: pending + batch: B04 +- slug: open-reuse + path: /home/worsch/open-reuse + status: pending + capability_count: 0 + seed_from_reuse_surface: false + seed_capability_ids: [] + hub_registered: false + publish_check: pending + batch: B04 +- slug: ops-bridge + path: /home/worsch/ops-bridge + status: pending + capability_count: 0 + seed_from_reuse_surface: false + seed_capability_ids: [] + hub_registered: false + publish_check: pending + batch: B04 +- slug: ops-hub + path: /home/worsch/ops-hub + status: pending + capability_count: 0 + seed_from_reuse_surface: false + seed_capability_ids: [] + hub_registered: false + publish_check: pending + batch: B04 +- slug: ops-warden + path: /home/worsch/ops-warden + status: pending + capability_count: 0 + seed_from_reuse_surface: false + seed_capability_ids: [] + hub_registered: false + publish_check: pending + batch: B04 +- slug: phase-memory + path: /home/worsch/phase-memory + status: pending + capability_count: 0 + seed_from_reuse_surface: false + seed_capability_ids: [] + hub_registered: false + publish_check: pending + batch: B04 +- slug: railiance-apps + path: /home/worsch/railiance-apps + status: pending + capability_count: 0 + seed_from_reuse_surface: false + seed_capability_ids: [] + hub_registered: false + publish_check: pending + batch: B04 +- slug: railiance-cluster + path: /home/worsch/railiance-cluster + status: pending + capability_count: 0 + seed_from_reuse_surface: false + seed_capability_ids: [] + hub_registered: false + publish_check: pending + batch: B05 +- slug: railiance-enablement + path: /home/worsch/railiance-enablement + status: pending + capability_count: 0 + seed_from_reuse_surface: false + seed_capability_ids: [] + hub_registered: false + publish_check: pending + batch: B05 +- slug: railiance-fabric + path: /home/worsch/railiance-fabric + status: pending + capability_count: 0 + seed_from_reuse_surface: false + seed_capability_ids: [] + hub_registered: false + publish_check: pending + batch: B05 +- slug: railiance-forge + path: /home/worsch/railiance-forge + status: pending + capability_count: 0 + seed_from_reuse_surface: false + seed_capability_ids: [] + hub_registered: false + publish_check: pending + batch: B05 +- slug: railiance-infra + path: /home/worsch/railiance-infra + status: pending + capability_count: 0 + seed_from_reuse_surface: false + seed_capability_ids: [] + hub_registered: false + publish_check: pending + batch: B05 +- slug: railiance-platform + path: /home/worsch/railiance-platform + status: pending + capability_count: 0 + seed_from_reuse_surface: false + seed_capability_ids: [] + hub_registered: false + publish_check: pending + batch: B05 +- slug: repo-scoping + path: /home/worsch/repo-scoping + status: pending + capability_count: 0 + seed_from_reuse_surface: false + seed_capability_ids: [] + hub_registered: false + publish_check: pending + batch: B05 +- slug: repo-seed + path: /home/worsch/repo-seed + status: pending + capability_count: 0 + seed_from_reuse_surface: false + seed_capability_ids: [] + hub_registered: false + publish_check: pending + batch: B05 +- slug: reuse-surface + path: /home/worsch/reuse-surface + status: established + capability_count: 20 + seed_from_reuse_surface: true + seed_capability_ids: + - capability.registry.register + - capability.registry.validate + hub_registered: true + publish_check: pass + batch: null +- slug: shard-wiki + path: /home/worsch/shard-wiki + status: established + capability_count: 8 + seed_from_reuse_surface: true + seed_capability_ids: + - capability.wiki.shard-orchestration + - capability.wiki.adapter-contract + - capability.wiki.page-model + - capability.wiki.coordination-journal + - capability.wiki.overlay + - capability.wiki.federation-models + - capability.wiki.engine-typed-extensions + - capability.wiki.derived-views + hub_registered: true + publish_check: pass + batch: null +- slug: state-hub + path: /home/worsch/state-hub + status: established + capability_count: 2 + seed_from_reuse_surface: true + seed_capability_ids: + - capability.statehub.progress-log + - capability.statehub.workstream-coordinate + hub_registered: true + publish_check: pass + batch: null +- slug: tegwick-control + path: /home/worsch/tegwick-control + status: pending + capability_count: 0 + seed_from_reuse_surface: false + seed_capability_ids: [] + hub_registered: false + publish_check: pending + batch: B05 +- slug: the-custodian + path: /home/worsch/the-custodian + status: pending + capability_count: 0 + seed_from_reuse_surface: false + seed_capability_ids: [] + hub_registered: false + publish_check: pending + batch: B05 +- slug: user-engine + path: /home/worsch/user-engine + status: pending + capability_count: 0 + seed_from_reuse_surface: false + seed_capability_ids: [] + hub_registered: false + publish_check: pending + batch: B06 +- slug: vantage-point + path: /home/worsch/vantage-point + status: pending + capability_count: 0 + seed_from_reuse_surface: false + seed_capability_ids: [] + hub_registered: false + publish_check: pending + batch: B06 +- slug: vergabe-teilnahme + path: /home/worsch/vergabe-teilnahme + status: pending + capability_count: 0 + seed_from_reuse_surface: false + seed_capability_ids: [] + hub_registered: false + publish_check: pending + batch: B06 +- slug: whynot-control + path: /home/worsch/whynot-control + status: pending + capability_count: 0 + seed_from_reuse_surface: false + seed_capability_ids: [] + hub_registered: false + publish_check: pending + batch: B06 +- slug: whynot-design + path: /home/worsch/whynot-design + status: pending + capability_count: 0 + seed_from_reuse_surface: false + seed_capability_ids: [] + hub_registered: false + publish_check: pending + batch: B06 diff --git a/workplans/REUSE-WP-0014-local-repo-registry-rollout.md b/workplans/REUSE-WP-0014-local-repo-registry-rollout.md new file mode 100644 index 0000000..fa1c798 --- /dev/null +++ b/workplans/REUSE-WP-0014-local-repo-registry-rollout.md @@ -0,0 +1,264 @@ +--- +id: REUSE-WP-0014 +type: workplan +title: "Local workstation repo registry rollout" +domain: helix_forge +repo: reuse-surface +status: active +owner: codex +topic_slug: helix-forge +created: "2026-06-17" +updated: "2026-06-17" +--- + +# Local workstation repo registry rollout + +Establish a capability registry (`registry/indexes/capabilities.yaml` plus entries) +in **every git repository** present one level under the workstation home +directory. REUSE-WP-0013 delivered `establish` tooling; REUSE-WP-0012/0013 +dogfood established **five** repos ad hoc. This workplan systematizes the +remainder with a **tracked roster** and batched execution. + +**Tracking artifact:** `registry/federation/local-repo-roster.yaml` +**Procedure:** `reuse-surface establish --scaffold` → seed (if any) → `validate --root` → commit → push → `establish --publish-check` → `hub register` + +## Scope definition — “locally present repo” + +A repo is in scope when **all** of the following hold: + +| Criterion | Rule | +|---|---| +| Location | `~//` — exactly one directory level under `$HOME` | +| Git | `git -C ~/ rev-parse --is-inside-work-tree` succeeds | +| Exclusions | Dot-directories (e.g. `~/.grok`), non-git folders | + +**Not in scope:** nested clones, `~/go/pkg`, `~/bin`, worktrees unless they appear +as top-level `~/` checkouts. + +This replaces the informal “sibling repo” rule used in WP-0012/0013 (federation +manifest + hub block list + `owner` field in reuse-surface only). + +## Roster summary (2026-06-17) + +| Metric | Count | +|---|---| +| Total local git repos | **60** | +| Established | **5** | +| Pending | **55** | +| Pending with reuse-surface seed entries | **3** (`activity-core`, `audit-core`, `flex-auth`) | + +### Already established + +`reuse-surface`, `state-hub`, `feature-control`, `identity-canon`, `shard-wiki` +— see `history/2026-06-17-sibling-registry-established.md`. + +Update `local-repo-roster.yaml` after each batch (`status`, `capability_count`, +`hub_registered`, `publish_check`). + +## Suggested execution order + +```text +T01 roster (done — maintain as source of truth) + → T02 seed-ready repos (activity-core, audit-core, flex-auth) + → T03–T08 batches B01–B06 (alphabetical pending slugs) + → T09 hub register + publish-check sweep + → T10 federation sources + deduplication + → T11 documentation +``` + +## Per-repo establishment checklist + +```bash +cd ~/ +reuse-surface establish --scaffold --domain helix_forge +# if seed_capability_ids in roster: copy entries from reuse-surface by owner +# optional: LLM_CONNECT_URL=... reuse-surface establish --discover --dry-run +reuse-surface validate --root . +git add registry/ && git commit -m "Add capability registry" +git push origin main +reuse-surface establish --publish-check \ + --raw-url https://gitea.coulomb.social/coulomb//raw/main/registry/indexes/capabilities.yaml +REUSE_SURFACE_URL=https://reuse.coulomb.social reuse-surface hub register \ + --repo --url --domain helix_forge +``` + +Mark roster fields when each step completes. + +--- + +## Adopt Local Repo Roster + +```task +id: REUSE-WP-0014-T01 +status: done +priority: high +``` + +Create and maintain `registry/federation/local-repo-roster.yaml`: + +- One row per `~/` git repo with `status`, `batch`, `seed_capability_ids`, + `hub_registered`, `publish_check` +- Regenerate or patch `summary` counts when batches complete +- Reference roster from this workplan and `docs/RegistryFederation.md` + +**Done:** initial roster generated 2026-06-17 (60 repos, 5 established, 55 pending). + +## Establish Seed-Ready Repos + +```task +id: REUSE-WP-0014-T02 +status: todo +priority: high +``` + +Establish repos that already have capability entries in reuse-surface index +(`owner` = repo slug): + +| Slug | Seed IDs | +|---|---| +| `activity-core` | `capability.activity.event-coordinate` | +| `audit-core` | `capability.audit.event-retain` | +| `flex-auth` | `capability.authorization.policy-evaluate` | + +Copy entry Markdown + index rows; validate; commit; push; publish-check; hub +register. Update roster to `established`. + +## Establish Batch B01 + +```task +id: REUSE-WP-0014-T03 +status: todo +priority: medium +``` + +Slugs: `activity-core`, `agentic-resources`, `artifact-store`, `audit-core`, +`can-you-assist`, `citation-engine`, `citation-evidence`, `citation-work`, +`coordination-engine`, `domain-tree` + +Note: `activity-core` and `audit-core` overlap T02 — skip duplicate work if T02 +finishes first; empty scaffold acceptable for repos without seeds. + +## Establish Batch B02 + +```task +id: REUSE-WP-0014-T04 +status: todo +priority: medium +``` + +Slugs: `email-connect`, `evidence-anchor`, `evidence-binder`, `evidence-source`, +`flex-auth`, `guide-board`, `helix-forge`, `hub-core`, `human-resources`, +`ihp-railiance-probe` + +## Establish Batch B03 + +```task +id: REUSE-WP-0014-T05 +status: todo +priority: medium +``` + +Slugs: `info-tech-canon`, `infospace-bench`, `inter-hub`, `issue-core`, +`kaizen-agentic`, `key-cape`, `kontextual-engine`, `llm-connect`, +`markitect-filter`, `markitect-main` + +## Establish Batch B04 + +```task +id: REUSE-WP-0014-T06 +status: todo +priority: medium +``` + +Slugs: `markitect-quarkdown`, `markitect-tool`, `net-kingdom`, `open-cmis-tck`, +`open-reuse`, `ops-bridge`, `ops-hub`, `ops-warden`, `phase-memory`, +`railiance-apps` + +## Establish Batch B05 + +```task +id: REUSE-WP-0014-T07 +status: todo +priority: medium +``` + +Slugs: `railiance-cluster`, `railiance-enablement`, `railiance-fabric`, +`railiance-forge`, `railiance-infra`, `railiance-platform`, `repo-scoping`, +`repo-seed`, `tegwick-control`, `the-custodian` + +## Establish Batch B06 + +```task +id: REUSE-WP-0014-T08 +status: todo +priority: medium +``` + +Slugs: `user-engine`, `vantage-point`, `vergabe-teilnahme`, `whynot-control`, +`whynot-design` + +## Hub Register And Publish-Check Sweep + +```task +id: REUSE-WP-0014-T09 +status: todo +priority: high +``` + +For every roster row with `status: established` and `publish_check: pending`: + +- Run `establish --publish-check` against Gitea raw URL +- `hub register` (or `hub update`) on `https://reuse.coulomb.social` +- Set `hub_registered: true` and `publish_check: pass` in roster + +Target: hub federates all established local repos with HTTP 200 indexes. + +## Federation Sources And Deduplication + +```task +id: REUSE-WP-0014-T10 +status: todo +priority: medium +``` + +- `reuse-surface hub sync --merge` after registrations +- `federation compose` — document duplicate-ID policy for entries migrated to + owner repos (e.g. wiki capabilities in reuse-surface vs shard-wiki) +- Plan removal of canonical duplicates from reuse-surface index (separate commit + per owner agreement) + +## Documentation And Gap Analysis + +```task +id: REUSE-WP-0014-T11 +status: todo +priority: low +``` + +- `docs/RegistryFederation.md` — link `local-repo-roster.yaml` and scope definition +- `history/` — rollout milestone note when all batches complete +- `docs/IntentScopeGapAnalysis.md` — federation membership progress +- Optional: `reuse-surface stats --federation-ready` roster-driven CI informational + +--- + +## Acceptance + +- [ ] `local-repo-roster.yaml` lists all 60 local git repos with current status +- [ ] 55 pending repos reach `status: established` (or explicit `excluded` with rationale) +- [ ] Every established repo passes `validate --root` and `publish-check` (HTTP 200) +- [ ] Hub registers all established repos with published indexes +- [ ] Roster `summary.established` equals 60 (or documented exclusions) +- [ ] Federation compose succeeds with updated sources manifest + +## Out of scope + +- Repos not checked out under `~/` +- Auto `establish --discover` for every repo (optional per repo only) +- Removing reuse-surface canonical entries without owner review (T10 plans only) + +## Progress log + +| Date | Event | +|---|---| +| 2026-06-17 | WP-0014 created; roster 5/60 established; batches B01–B06 assigned | \ No newline at end of file