hero_services: Docker deployment broken after service config restructuring #49

Closed
opened 2026-03-19 19:19:10 +00:00 by mik-tf · 3 comments
Owner

Problem

The recent merge of development_kristof into development restructured service configs but left the Docker deployment pipeline broken. This is part of the larger hero_proc transition (#50).

What's broken

  1. Profiles not copied to Docker imageprofiles/ directory exists in repo but docker/build-local.sh never copies it to dist/. The entrypoint runs hero_services_server run --profile user but the binary can't find profiles.

  2. build-local.sh validation — still expects services/user/ (old layout). Configs are now flat in services/.

  3. Binary name mismatch — service TOMLs reference new names (_openrpc/_http) but most repos still produce old names (_server/_ui). This is expected during the transition per #50.

Specific files

  • docker/build-local.sh — needs to copy profiles/ to dist/, fix validation for flat layout
  • docker/entrypoint.sh — needs binary symlinks (_server_openrpc, _ui_http) as a bridge
  • Dockerfile.pack — needs COPY profiles/ line

Context

Per #50, the architecture is transitioning to:

  • hero_proc replacing zinit
  • Services self-registering with --start flag
  • OpenRPC-first naming (_openrpc/_http)
  • No more profile subdirectories

This fix bridges the current state until the full transition completes.

Impact

  • Local Docker builds fail (no services start)
  • herodev will break on next deploy
  • Any fresh container from development branch is non-functional
## Problem The recent merge of `development_kristof` into `development` restructured service configs but left the Docker deployment pipeline broken. This is part of the larger hero_proc transition (#50). ### What's broken 1. **Profiles not copied to Docker image** — `profiles/` directory exists in repo but `docker/build-local.sh` never copies it to `dist/`. The entrypoint runs `hero_services_server run --profile user` but the binary can't find profiles. 2. **build-local.sh validation** — still expects `services/user/` (old layout). Configs are now flat in `services/`. 3. **Binary name mismatch** — service TOMLs reference new names (`_openrpc`/`_http`) but most repos still produce old names (`_server`/`_ui`). This is expected during the transition per #50. ### Specific files - `docker/build-local.sh` — needs to copy `profiles/` to `dist/`, fix validation for flat layout - `docker/entrypoint.sh` — needs binary symlinks (`_server` → `_openrpc`, `_ui` → `_http`) as a bridge - `Dockerfile.pack` — needs `COPY profiles/` line ### Context Per #50, the architecture is transitioning to: - hero_proc replacing zinit - Services self-registering with `--start` flag - OpenRPC-first naming (_openrpc/_http) - No more profile subdirectories This fix bridges the current state until the full transition completes. ### Impact - Local Docker builds fail (no services start) - herodev will break on next deploy - Any fresh container from development branch is non-functional
Author
Owner

Progress: compile fixes pushed to development

All 18 services now compile (0 failures). Fixes pushed across 5 repos:

Repo Commit Fix
hero_services 610e18c Revert TOML binary names (_openrpc→_server, _http→_ui), fix build-local.sh flat layout + profiles copy, add profiles to Dockerfile.pack, add entrypoint socat bridge + service recovery
hero_redis 873baa3 Remove 927 lines of dead dispatch code from botched merge, fix RedisServer::new signature
hero_foundry 80c8bcc Resolve committed merge conflict markers in hero_foundry_admin
hero_osis 4f07f72 Restore Video/VideoPlaylist support (611 lines) lost during HeroRpcServer migration merge
hero_indexer 20a844c Update Cargo.lock for hero_proc_sdk (stale commit from force-push)

What works

  • All 18 services compile and build via SKIP_WASM=1 make dist
  • Docker image builds successfully
  • Services run correctly when started individually inside the container
  • Video feature fully restored (schema, SDK, handlers, server glue all intact)

What remains: hero_proc migration

The Docker deployment still uses zinit as the process supervisor, which causes startup race conditions (services exhaust retry limits before dependencies stabilize). Per #50, hero_proc replaces zinit entirely. Next steps:

  1. Clone hero_proc into lhumina_code workspace
  2. Replace zinit_sdk with hero_proc_sdk in hero_services_server
  3. Replace zinit_server with hero_proc_server in Docker image
  4. Update entrypoint.sh to use hero_proc orchestration
  5. Update build-local.sh to build hero_proc instead of zinit

This is tracked under #50. Keeping this issue open until Docker deployment is fully functional with hero_proc.

## Progress: compile fixes pushed to development All 18 services now compile (0 failures). Fixes pushed across 5 repos: | Repo | Commit | Fix | |---|---|---| | hero_services | 610e18c | Revert TOML binary names (_openrpc→_server, _http→_ui), fix build-local.sh flat layout + profiles copy, add profiles to Dockerfile.pack, add entrypoint socat bridge + service recovery | | hero_redis | 873baa3 | Remove 927 lines of dead dispatch code from botched merge, fix RedisServer::new signature | | hero_foundry | 80c8bcc | Resolve committed merge conflict markers in hero_foundry_admin | | hero_osis | 4f07f72 | Restore Video/VideoPlaylist support (611 lines) lost during HeroRpcServer migration merge | | hero_indexer | 20a844c | Update Cargo.lock for hero_proc_sdk (stale commit from force-push) | ### What works - All 18 services compile and build via `SKIP_WASM=1 make dist` - Docker image builds successfully - Services run correctly when started individually inside the container - Video feature fully restored (schema, SDK, handlers, server glue all intact) ### What remains: hero_proc migration The Docker deployment still uses **zinit** as the process supervisor, which causes startup race conditions (services exhaust retry limits before dependencies stabilize). Per #50, **hero_proc replaces zinit entirely**. Next steps: 1. Clone hero_proc into lhumina_code workspace 2. Replace zinit_sdk with hero_proc_sdk in hero_services_server 3. Replace zinit_server with hero_proc_server in Docker image 4. Update entrypoint.sh to use hero_proc orchestration 5. Update build-local.sh to build hero_proc instead of zinit This is tracked under #50. Keeping this issue open until Docker deployment is fully functional with hero_proc.
Author
Owner

hero_proc migration complete — runtime working

Pushed to development: bd14ea1 — feat: replace zinit with hero_proc as process manager (#50)

What was done

  • Replaced zinit_sdk with hero_proc_sdk across hero_services_server
  • Docker entrypoint starts hero_proc_server instead of zinit_server
  • build-local.sh builds hero_proc workspace instead of zinit
  • bootstrap.sh clones hero_proc from lhumina_code (no more geomind_code/zinit)
  • Fixed profile registration ordering for hero_proc (pass-based: install → run → health → test)
  • Fixed service TOML exec lines (binary names, serve subcommand, removed hero_fossil)
  • Added hero_proc-based recovery pass in entrypoint.sh

Test results

  • 21/21 services running in Docker
  • Hero OS login page serves at localhost:8080
  • No crash loops

Remaining

5 services still use old CLI pattern (no serve subcommand) — tracked in #52.

Signed-off-by: mik-tf

**hero_proc migration complete — runtime working** Pushed to development: `bd14ea1` — feat: replace zinit with hero_proc as process manager (#50) ### What was done - Replaced zinit_sdk with hero_proc_sdk across hero_services_server - Docker entrypoint starts hero_proc_server instead of zinit_server - build-local.sh builds hero_proc workspace instead of zinit - bootstrap.sh clones hero_proc from lhumina_code (no more geomind_code/zinit) - Fixed profile registration ordering for hero_proc (pass-based: install → run → health → test) - Fixed service TOML exec lines (binary names, serve subcommand, removed hero_fossil) - Added hero_proc-based recovery pass in entrypoint.sh ### Test results - 21/21 services running in Docker - Hero OS login page serves at localhost:8080 - No crash loops ### Remaining 5 services still use old CLI pattern (no serve subcommand) — tracked in #52. Signed-off-by: mik-tf
Author
Owner

Docker deployment working — 20/21 services running, all smoke tests pass. Fixed in P0 and verified through P1-P2 work.

Signed-off-by: mik-tf

Docker deployment working — 20/21 services running, all smoke tests pass. Fixed in P0 and verified through P1-P2 work. Signed-off-by: mik-tf
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#49
No description provided.