[META] Migrate all hero_*_ui producers to _admin convention to align with hero_router SSOT #228

Closed
opened 2026-05-07 19:12:41 +00:00 by mik-tf · 2 comments
Owner

Context

hero_router (the Hero stack's traffic gateway and emerging service-discovery SSOT) ships a crates/hero_router/src/service_manager/services/<service>.rs definition for every Hero service. All 22 of those service definitions already expect _admin binaries and admin.sock sockets — that's the canonical convention.

The skill at ~/.claude/skills/hero_service_test/SKILL.md codifies the same convention:

Component Crate / binary Socket
Admin UI (Askama) hero_${name}_admin admin.sock
End-user web (Askama) hero_${name}_web web.sock
Server hero_${name}_server rpc.sock
CLI hero_${name}

_ui is the legacy admin name and should be migrated everywhere.

Current state (audit 2026-05-07, session 76)

Repo state Count Examples
Migrated to _admin (matches hero_router) 1 hero_db (PR lhumina_code/hero_db#29)
Mid-migration (ships both _admin AND _ui) 1 hero_books
Still on _ui ~27 hero_proc, hero_voice, hero_aibroker, hero_biz, hero_browser, hero_code, hero_codescalers, hero_collab, hero_compute, hero_editor, hero_embedder, hero_foundry, hero_indexer, hero_lib_rhai (runner_rhai), hero_livekit, hero_logic, hero_matrixchat, hero_office, hero_os, hero_osis, hero_planner, hero_proxy, hero_shrimp, hero_slides, hero_voice, hero_whiteboard, …

Consumer service_*.nu modules in hero_skills mostly track producer reality (most reference web.sock, not admin.sock). One was caught out: lhumina_code/hero_skills@cc56069 reverted service_proc.nu from _admin/admin.sock back to _ui/ui.sock because the producer hadn't migrated yet.

Strategic shape

The migration must be producer-first, consumer-follow:

  1. Producer: rename crate dir, rename [package].name/[lib].name/[[bin]].name to _admin, change socket binding ui.sock/web.sockadmin.sock, rename env vars (e.g. HERO_X_UI_BINDHERO_X_ADMIN_BIND), update kill_other socket lists, update crates/hero_${name}_app WASM URL bases (if any), update repo docs (PURPOSE.md, in-repo CLAUDE.md, README.md, specs).
  2. Tag a new release (typically vX.Y.0-rc1 matching workspace version).
  3. Consumer (service_*.nu): bump SVX_BINARIES, healthcheck/kill_other paths, dispatcher gap.
  4. Smoke-test on heroci-equivalent + on-cloud re-validation.

Reference implementation: hero_db PR #29 at lhumina_code/hero_db#29 . 34-file diff with explicit before/after for every layer, builds + clippy + fmt clean.

Migration plan (one repo per session, in dependency order)

Pri Repo Notes
1 hero_proc Supervisor — every Hero service depends on it. Migrating this unblocks service_proc.nu un-revert.
2 hero_books Already half-migrated (ships both _admin and _ui); finish the migration.
3 hero_aibroker, hero_voice, hero_embedder AI plane — high demo value.
4 hero_proxy, hero_osis Auth + per-domain backend — second tier.
5 Everything else One per session, batched where possible.

What this issue tracks

  • Issue body itself: master checklist of repos.
  • Linked sub-issues per producer migration (filed as we go).
  • Linked PRs per migration.

Out of scope (separate)

  • Per-repo Makefile / bash-script removal in favour of nu-only lifecycle (skill §8). Filed as e.g. lhumina_code/hero_db#28 .

Refs

Signed-off-by: mik-tf

## Context `hero_router` (the Hero stack's traffic gateway and emerging service-discovery SSOT) ships a `crates/hero_router/src/service_manager/services/<service>.rs` definition for every Hero service. **All 22 of those service definitions already expect `_admin` binaries and `admin.sock` sockets** — that's the canonical convention. The skill at `~/.claude/skills/hero_service_test/SKILL.md` codifies the same convention: | Component | Crate / binary | Socket | |---|---|---| | Admin UI (Askama) | `hero_${name}_admin` | `admin.sock` | | End-user web (Askama) | `hero_${name}_web` | `web.sock` | | Server | `hero_${name}_server` | `rpc.sock` | | CLI | `hero_${name}` | — | **`_ui` is the legacy admin name and should be migrated everywhere.** ## Current state (audit 2026-05-07, session 76) | Repo state | Count | Examples | |---|---|---| | Migrated to `_admin` (matches hero_router) | 1 | `hero_db` (PR https://forge.ourworld.tf/lhumina_code/hero_db/pulls/29) | | Mid-migration (ships both `_admin` AND `_ui`) | 1 | `hero_books` | | Still on `_ui` | ~27 | hero_proc, hero_voice, hero_aibroker, hero_biz, hero_browser, hero_code, hero_codescalers, hero_collab, hero_compute, hero_editor, hero_embedder, hero_foundry, hero_indexer, hero_lib_rhai (runner_rhai), hero_livekit, hero_logic, hero_matrixchat, hero_office, hero_os, hero_osis, hero_planner, hero_proxy, hero_shrimp, hero_slides, hero_voice, hero_whiteboard, … | Consumer `service_*.nu` modules in `hero_skills` mostly track producer reality (most reference `web.sock`, not `admin.sock`). One was caught out: https://forge.ourworld.tf/lhumina_code/hero_skills/commit/cc56069 reverted `service_proc.nu` from `_admin`/`admin.sock` back to `_ui`/`ui.sock` because the producer hadn't migrated yet. ## Strategic shape The migration must be **producer-first, consumer-follow**: 1. Producer: rename crate dir, rename `[package].name`/`[lib].name`/`[[bin]].name` to `_admin`, change socket binding `ui.sock`/`web.sock` → `admin.sock`, rename env vars (e.g. `HERO_X_UI_BIND` → `HERO_X_ADMIN_BIND`), update `kill_other` socket lists, update `crates/hero_${name}_app` WASM URL bases (if any), update repo docs (PURPOSE.md, in-repo CLAUDE.md, README.md, specs). 2. Tag a new release (typically `vX.Y.0-rc1` matching workspace version). 3. Consumer (`service_*.nu`): bump `SVX_BINARIES`, healthcheck/kill_other paths, dispatcher gap. 4. Smoke-test on heroci-equivalent + on-cloud re-validation. Reference implementation: hero_db PR #29 at https://forge.ourworld.tf/lhumina_code/hero_db/pulls/29 . 34-file diff with explicit before/after for every layer, builds + clippy + fmt clean. ## Migration plan (one repo per session, in dependency order) | Pri | Repo | Notes | |---|---|---| | 1 | hero_proc | Supervisor — every Hero service depends on it. Migrating this unblocks `service_proc.nu` un-revert. | | 2 | hero_books | Already half-migrated (ships both `_admin` and `_ui`); finish the migration. | | 3 | hero_aibroker, hero_voice, hero_embedder | AI plane — high demo value. | | 4 | hero_proxy, hero_osis | Auth + per-domain backend — second tier. | | 5 | Everything else | One per session, batched where possible. | ## What this issue tracks - Issue body itself: master checklist of repos. - Linked sub-issues per producer migration (filed as we go). - Linked PRs per migration. ## Out of scope (separate) - Per-repo Makefile / bash-script removal in favour of nu-only lifecycle (skill §8). Filed as e.g. https://forge.ourworld.tf/lhumina_code/hero_db/issues/28 . ## Refs - Skill: `~/.claude/skills/hero_service_test/SKILL.md` §2 (naming) + §3 (sockets) - hero_router service_manager directory (the SSOT): https://forge.ourworld.tf/lhumina_code/hero_router/src/branch/development/crates/hero_router/src/service_manager/services - Triggering observation: https://forge.ourworld.tf/lhumina_code/hero_skills/commit/cc56069 (consumer revert because producer wasn't migrated) - First migration (reference): https://forge.ourworld.tf/lhumina_code/hero_db/pulls/29 Signed-off-by: mik-tf
Author
Owner

Closure path consolidated into home#230. #230 Phase 1 completes the partial migrations (hero_voice / hero_proxy / hero_whiteboard / hero_osis — [[bin]] renamed but [package].name + crate dir still on _ui). #230 Phase 3 audits the outliers (hero_proc_lib_ui, hero_embedder missing _admin, hero_foundry_ui standalone). When #230 closes, this issue closes.

Closure path consolidated into [home#230](https://forge.ourworld.tf/lhumina_code/home/issues/230). #230 Phase 1 completes the partial migrations (hero_voice / hero_proxy / hero_whiteboard / hero_osis — `[[bin]]` renamed but `[package].name` + crate dir still on `_ui`). #230 Phase 3 audits the outliers (`hero_proc_lib_ui`, `hero_embedder` missing `_admin`, `hero_foundry_ui` standalone). When #230 closes, this issue closes.
Author
Owner

Closing as substantively superseded.

The _ui→_admin rollout is now tracked under home#230 Phase 1 (4 partial-migration repos: hero_voice / hero_proxy / hero_whiteboard / hero_osis where upstream flipped [[bin]] name but left [package].name + crate dir on _ui) and Phase 3 (outliers: hero_proc_lib_ui rename, hero_embedder missing _admin, hero_foundry_ui standalone via home#229 — survives separately).

Session 77 completed the bulk sweep (19 producer migrations + 20 tags). What remained — the 4 partial migrations + 3 outliers — is fully covered by home#230's phase 1 + phase 3 with concrete per-repo work items.

Session 80 also locked D-08 (decisions/D-08-hero_builder-as-canonical-build-tool.md): subsequent rename PRs go through hero_builder source-build gate before merge.

Tracking continues at home#230. Sub-issue home#229 (hero_foundry_ui standalone-repo fate) remains open as its own decision.

**Closing as substantively superseded.** The `_ui→_admin` rollout is now tracked under [home#230](https://forge.ourworld.tf/lhumina_code/home/issues/230) Phase 1 (4 partial-migration repos: hero_voice / hero_proxy / hero_whiteboard / hero_osis where upstream flipped `[[bin]] name` but left `[package].name` + crate dir on `_ui`) and Phase 3 (outliers: hero_proc_lib_ui rename, hero_embedder missing `_admin`, hero_foundry_ui standalone via [home#229](https://forge.ourworld.tf/lhumina_code/home/issues/229) — survives separately). Session 77 completed the bulk sweep (19 producer migrations + 20 tags). What remained — the 4 partial migrations + 3 outliers — is fully covered by home#230's phase 1 + phase 3 with concrete per-repo work items. Session 80 also locked [D-08](https://forge.ourworld.tf/lhumina_code/home/issues/231) ([decisions/D-08-hero_builder-as-canonical-build-tool.md](https://forge.ourworld.tf/lhumina_code/home/issues/230)): subsequent rename PRs go through `hero_builder` source-build gate before merge. Tracking continues at [home#230](https://forge.ourworld.tf/lhumina_code/home/issues/230). Sub-issue [home#229](https://forge.ourworld.tf/lhumina_code/home/issues/229) (hero_foundry_ui standalone-repo fate) remains open as its own decision.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
lhumina_code/home#228
No description provided.