[meta] broken: dispatcher.nu calls 47 deleted service_*.nu functions after d1825adservice <name> <verb> non-functional on origin/development #245

Open
opened 2026-05-10 12:05:36 +00:00 by mik-tf · 0 comments
Owner

Symptom

On current origin/development of hero_skills, every service <name> <verb> invocation (except service code … and service office …) routes to a function that no longer exists on disk. The dispatcher will fail with command not found: service_slides, service_mycelium, service_db, etc.

What happened

Commit d1825ad (despiegk, 2026-05-10 08:21, titled "feat: reorganize skills and enhance openrpc documentation") deleted 47 service_*.nu files plus packages.nu:

nutools/modules/services/packages.nu                 (-330)
nutools/modules/services/service_agent.nu            (-194)
nutools/modules/services/service_aibroker.nu         (-886)
nutools/modules/services/service_biz.nu              (-429)
... (47 files total) ...
nutools/modules/services/service_whiteboard.nu        (-…)

Left behind in nutools/modules/services/:

dispatcher.nu     (still calls service_slides, service_mycelium, service_db, …)
lib.nu            (264 lines, no per-service definitions)
mod.nu            (`export use dispatcher.nu *`)
service_office.nu (only surviving per-service module)

But dispatcher.nu was not updated to match — it still has 40+ match arms like:

[mycelium install] => { service_mycelium install --target $target ... }
[slides start]     => { service_slides start --reset=$reset --target $target --update=$update --all=$all ... }
[db start]         => { service_db start --reset=$reset --target $target --update=$update ... }

Only two services were migrated to call lab directly:

[code install]     => { lab_build_service "hero_code" --release=$release --update=$update --reset=$reset }
[code start]       => { lab_build_service "hero_code" --release=$release --update=$update --reset=$reset --start }
[office install]   => { service_office install ... }   # service_office.nu still exists

Impact

  • Anyone who git pulls their ~/hero/code/hero_skills runtime clone immediately loses the ability to start any service via the dispatcher.
  • Local clones that haven't pulled (still on a sha before d1825ad) keep working.
  • Closes-as-obsolete two follow-ups filed yesterday from hero_slides session 86: #243 (--all chain skips mycelium) and #244 (--target root validator gap) — the source they reference no longer exists, but the bugs are still live for anyone on the runtime clone.

Resolution options (despiegk's call)

A. Restore the deleted service_*.nu files until lab covers them

Lowest-risk. git revert d1825ad's deletion portion (keep the skills-reorganize portion). Restores parity with the runtime clone. Migration to lab continues incrementally, one service at a time, with the dispatcher arm flipped from service_X to lab_build_service only when the lab side is proven to work end-to-end (the code arm is the existing template).

B. Complete the migration in this branch

Rewrite every dispatcher arm to call lab (or whatever the new entry point is). Requires that lab service start <name>, lab service stop <name>, lab service status <name> cover everything the old service_X start/stop/status did per-service: --clear on proc, --instance on mycelium and codescalers, --auth-mode on collab, --mode/--master-ip on compute, --embedderd/--userspace on embedder, livekit flags on livekit, the slides/aibroker prereq chain, etc. Currently lab service looks like a thin wrapper around build+start; the per-service flag surface and prereq orchestration is not visible in crates/lab/src/service/.

C. Strip the dispatcher to only what lab supports today + service_office

Most honest if the rest of the migration is months out. service only knows code and office; everything else becomes "use lab service <name> directly".

Acceptance

  • Decision recorded on which option (A / B / C / other).
  • On origin/development, service slides start either succeeds (option A or B) or fails with a clear "not in dispatcher, use lab service slides start" message (option C).
  • Runtime clones can git pull without breaking their daily workflow.
  • #243 and #244 close-as-obsolete or are re-targeted at the new code paths.

Refs

  • Commit d1825ad — the deletion
  • Commit 81c5042lab install <component> migration (sibling, not the cause)
  • nutools/modules/services/dispatcher.nu lines 105-330 — the orphaned match arms
  • nutools/modules/services/service_office.nu — only surviving per-service module
  • crates/lab/src/service/ — current Rust service surface (build + start, no per-service flag handling)

Signed-off-by: mik-tf

## Symptom On current origin/development of `hero_skills`, every `service <name> <verb>` invocation (except `service code …` and `service office …`) routes to a function that no longer exists on disk. The dispatcher will fail with `command not found: service_slides`, `service_mycelium`, `service_db`, etc. ## What happened Commit [`d1825ad`](https://forge.ourworld.tf/lhumina_code/hero_skills/commit/d1825ad) (despiegk, 2026-05-10 08:21, titled *"feat: reorganize skills and enhance openrpc documentation"*) deleted 47 `service_*.nu` files plus `packages.nu`: ``` nutools/modules/services/packages.nu (-330) nutools/modules/services/service_agent.nu (-194) nutools/modules/services/service_aibroker.nu (-886) nutools/modules/services/service_biz.nu (-429) ... (47 files total) ... nutools/modules/services/service_whiteboard.nu (-…) ``` Left behind in `nutools/modules/services/`: ``` dispatcher.nu (still calls service_slides, service_mycelium, service_db, …) lib.nu (264 lines, no per-service definitions) mod.nu (`export use dispatcher.nu *`) service_office.nu (only surviving per-service module) ``` But `dispatcher.nu` was not updated to match — it still has 40+ match arms like: ```nushell [mycelium install] => { service_mycelium install --target $target ... } [slides start] => { service_slides start --reset=$reset --target $target --update=$update --all=$all ... } [db start] => { service_db start --reset=$reset --target $target --update=$update ... } ``` Only two services were migrated to call `lab` directly: ```nushell [code install] => { lab_build_service "hero_code" --release=$release --update=$update --reset=$reset } [code start] => { lab_build_service "hero_code" --release=$release --update=$update --reset=$reset --start } [office install] => { service_office install ... } # service_office.nu still exists ``` ## Impact - Anyone who `git pull`s their `~/hero/code/hero_skills` runtime clone immediately loses the ability to start any service via the dispatcher. - Local clones that haven't pulled (still on a sha before `d1825ad`) keep working. - Closes-as-obsolete two follow-ups filed yesterday from hero_slides session 86: [#243](https://forge.ourworld.tf/lhumina_code/hero_skills/issues/243) (`--all` chain skips mycelium) and [#244](https://forge.ourworld.tf/lhumina_code/hero_skills/issues/244) (`--target root` validator gap) — the source they reference no longer exists, but the bugs are still live for anyone on the runtime clone. ## Resolution options (despiegk's call) ### A. Restore the deleted `service_*.nu` files until `lab` covers them Lowest-risk. `git revert d1825ad`'s deletion portion (keep the skills-reorganize portion). Restores parity with the runtime clone. Migration to `lab` continues incrementally, one service at a time, with the dispatcher arm flipped from `service_X` to `lab_build_service` only when the lab side is proven to work end-to-end (the `code` arm is the existing template). ### B. Complete the migration in this branch Rewrite every dispatcher arm to call `lab` (or whatever the new entry point is). Requires that `lab service start <name>`, `lab service stop <name>`, `lab service status <name>` cover everything the old `service_X start/stop/status` did per-service: `--clear` on proc, `--instance` on mycelium and codescalers, `--auth-mode` on collab, `--mode/--master-ip` on compute, `--embedderd/--userspace` on embedder, livekit flags on livekit, the slides/aibroker prereq chain, etc. Currently `lab service` looks like a thin wrapper around build+start; the per-service flag surface and prereq orchestration is not visible in `crates/lab/src/service/`. ### C. Strip the dispatcher to only what lab supports today + `service_office` Most honest if the rest of the migration is months out. `service` only knows `code` and `office`; everything else becomes "use `lab service <name>` directly". ## Acceptance - [ ] Decision recorded on which option (A / B / C / other). - [ ] On origin/development, `service slides start` either succeeds (option A or B) or fails with a clear "not in dispatcher, use `lab service slides start`" message (option C). - [ ] Runtime clones can `git pull` without breaking their daily workflow. - [ ] [#243](https://forge.ourworld.tf/lhumina_code/hero_skills/issues/243) and [#244](https://forge.ourworld.tf/lhumina_code/hero_skills/issues/244) close-as-obsolete or are re-targeted at the new code paths. ## Refs - Commit [d1825ad](https://forge.ourworld.tf/lhumina_code/hero_skills/commit/d1825ad) — the deletion - Commit [81c5042](https://forge.ourworld.tf/lhumina_code/hero_skills/commit/81c5042) — `lab install <component>` migration (sibling, not the cause) - `nutools/modules/services/dispatcher.nu` lines 105-330 — the orphaned match arms - `nutools/modules/services/service_office.nu` — only surviving per-service module - `crates/lab/src/service/` — current Rust service surface (build + start, no per-service flag handling) Signed-off-by: mik-tf
Sign in to join this conversation.
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/hero_skills#245
No description provided.