feat(ops): Phase 27 — hero_demo source-repo + hero_skills install module + profile entry #12

Closed
opened 2026-05-06 17:47:11 +00:00 by mik-tf · 2 comments
Owner

Why

hero_assistance is currently NOT in:

  • hero_demo/README.md's 27-source-repo list
  • hero_skills/nutools/install/ install modules (so service_install_all doesn't pick it up)
  • Any hero_demo profile

A fresh Hero OS box provisioned via hero_demo does NOT bring up hero_assistance. To finish Hero OS integration, hero_assistance must be installable end-to-end from a single service_complete invocation.

Depends on: Phase 24 (hero_proc lifecycle), Phase 25 (admin dashboard), Phase 26 (island).

What

A. hero_demo/README.md source-repo list

Add hero_assistance to the appropriate archipelago row in the 27-repo table. Same archipelago as Phase 26 / D-23 (Communication recommended).

A.1. Binary release infrastructure — already in place ✓

We already have CI binary publishing per s32 (issue #6, closed). On every v* tag push, .forgejo/workflows/build-linux.yaml:

  • Builds hero_assistance_server, hero_assistance_ui, hero_assistance binaries (target x86_64-unknown-linux-gnu, suffix linux-amd64)
  • Publishes to both Forgejo Releases page (binary attachments — what svc_install_download consumes) AND Forgejo Generic package registry (backup channel at https://forge.ourworld.tf/lhumina_code/-/packages/generic/hero_assistance/<version>)
  • Naming convention <bin>-linux-amd64 matches hero_skills svc_install_download expectation exactly

Phase 27 install module just needs to call svc_install_download with linux-amd64 asset suffix — no CI changes needed.

B. hero_skills install module

New file: hero_skills/nutools/modules/services/service_hero_assistance.nu (canonical location, sibling to service_books.nu / service_collab.nu). Mirrors the existing pattern. Both install paths supported (matches service_collab.nu line 256-275):

service_hero_assistance install                                 # cargo build (default)
service_hero_assistance install --download                      # download latest release from Forgejo
service_hero_assistance install --download --version v0.3.1     # specific tag
service_hero_assistance install --download --reset              # force refetch

The --download path uses svc_install_download $SVX_SERVICE_NAME $SVX_FORGE_LOC $SVX_BINARIES $sudo $reset $version "linux-amd64". Already compatible with our CI — s32 (.forgejo/workflows/build-linux.yaml) publishes binaries as <bin>-linux-amd64 on Forgejo Releases on every v* tag. The 3 published binaries (hero_assistance_server-linux-amd64, hero_assistance_ui-linux-amd64, hero_assistance-linux-amd64) match svc_install_download's naming convention exactly.

The cargo build path uses svc_install $SVX_SERVICE_NAME $SVX_FORGE_LOC $SVX_BINARIES $sudo $update $reset $release — same as service_collab.

Hooks into service_hero_assistance install/start from Phase 24's nu_service module (the scripts/service_hero_assistance.nu in this repo is the dev-time entrypoint; this hero_skills module is the deploy-time entrypoint).

C. hero_demo profile

Add hero_assistance to one or more profiles under hero_demo/profiles/. Default candidate: communication or support profile.

D. Smoke test

Provision a fresh Hero OS VM (TFGrid single-VM or local KVM), run service_complete, verify:

  • hero_proc service status hero_assistance_server reports healthy
  • hero_proc service status hero_assistance_ui reports healthy
  • Admin dashboard reachable via hero_router at /hero_assistance_admin/...
  • Customer SPA reachable as island in hero_os shell
  • Curl smoke: /health, /openrpc.json, /rpc ping

Acceptance

  • hero_demo/README.md PR merged
  • hero_skills/nutools/install/install_hero_assistance.nu PR merged
  • hero_demo/profiles/<X>.toml PR merged
  • Fresh-VM smoke: service_complete brings hero_assistance up successfully
  • service_hero_assistance install --download --version v0.3.1 pulls binaries from Forgejo Releases and installs to ~/hero/bin/ without falling back to cargo build
  • service_hero_assistance install (no flags) builds from source via svc_cargo_install
  • Operator admin dashboard reachable via hero_router prefix
  • Customer SPA island shows up in hero_os archipelago view
  • All curl smoke checks pass

Files to touch (external repos)

  • lhumina_code/hero_demo — README.md + profile TOML
  • lhumina_code/hero_skillsinstall_hero_assistance.nu
  • lhumina_code/hero_archipelagos — finalize island registration from Phase 26

Files to touch (this repo)

  • prompt.md §1 — mark Phase 27 done; close Hero OS integration phase
  • CLAUDE.md — final state paragraph

Out of scope

  • New engineering work (all earlier phases must be complete)

References

  • Skill tfgrid_deploy
  • Reference: hero_demo/README.md 27-repo table
  • Reference: existing install_hero_*.nu modules in hero_skills
## Why hero_assistance is currently NOT in: - `hero_demo/README.md`'s 27-source-repo list - `hero_skills/nutools/install/` install modules (so `service_install_all` doesn't pick it up) - Any `hero_demo` profile A fresh Hero OS box provisioned via `hero_demo` does NOT bring up hero_assistance. To finish Hero OS integration, hero_assistance must be installable end-to-end from a single `service_complete` invocation. Depends on: Phase 24 (hero_proc lifecycle), Phase 25 (admin dashboard), Phase 26 (island). ## What ### A. `hero_demo/README.md` source-repo list Add `hero_assistance` to the appropriate archipelago row in the 27-repo table. Same archipelago as Phase 26 / D-23 (Communication recommended). ### A.1. Binary release infrastructure — already in place ✓ We already have CI binary publishing per s32 (issue #6, closed). On every `v*` tag push, `.forgejo/workflows/build-linux.yaml`: - Builds `hero_assistance_server`, `hero_assistance_ui`, `hero_assistance` binaries (target `x86_64-unknown-linux-gnu`, suffix `linux-amd64`) - Publishes to **both** Forgejo Releases page (binary attachments — what `svc_install_download` consumes) AND Forgejo Generic package registry (backup channel at `https://forge.ourworld.tf/lhumina_code/-/packages/generic/hero_assistance/<version>`) - Naming convention `<bin>-linux-amd64` matches hero_skills `svc_install_download` expectation exactly Phase 27 install module just needs to call `svc_install_download` with `linux-amd64` asset suffix — no CI changes needed. ### B. `hero_skills` install module New file: `hero_skills/nutools/modules/services/service_hero_assistance.nu` (canonical location, sibling to `service_books.nu` / `service_collab.nu`). Mirrors the existing pattern. **Both install paths supported** (matches service_collab.nu line 256-275): ```nu service_hero_assistance install # cargo build (default) service_hero_assistance install --download # download latest release from Forgejo service_hero_assistance install --download --version v0.3.1 # specific tag service_hero_assistance install --download --reset # force refetch ``` The `--download` path uses `svc_install_download $SVX_SERVICE_NAME $SVX_FORGE_LOC $SVX_BINARIES $sudo $reset $version "linux-amd64"`. **Already compatible with our CI** — s32 (`.forgejo/workflows/build-linux.yaml`) publishes binaries as `<bin>-linux-amd64` on Forgejo Releases on every `v*` tag. The 3 published binaries (`hero_assistance_server-linux-amd64`, `hero_assistance_ui-linux-amd64`, `hero_assistance-linux-amd64`) match `svc_install_download`'s naming convention exactly. The `cargo build` path uses `svc_install $SVX_SERVICE_NAME $SVX_FORGE_LOC $SVX_BINARIES $sudo $update $reset $release` — same as service_collab. Hooks into `service_hero_assistance install/start` from Phase 24's nu_service module (the `scripts/service_hero_assistance.nu` in this repo is the dev-time entrypoint; this hero_skills module is the deploy-time entrypoint). ### C. `hero_demo` profile Add hero_assistance to one or more profiles under `hero_demo/profiles/`. Default candidate: communication or support profile. ### D. Smoke test Provision a fresh Hero OS VM (TFGrid single-VM or local KVM), run `service_complete`, verify: - `hero_proc service status hero_assistance_server` reports healthy - `hero_proc service status hero_assistance_ui` reports healthy - Admin dashboard reachable via `hero_router` at `/hero_assistance_admin/...` - Customer SPA reachable as island in hero_os shell - Curl smoke: `/health`, `/openrpc.json`, `/rpc` ping ## Acceptance - [ ] `hero_demo/README.md` PR merged - [ ] `hero_skills/nutools/install/install_hero_assistance.nu` PR merged - [ ] `hero_demo/profiles/<X>.toml` PR merged - [ ] Fresh-VM smoke: `service_complete` brings hero_assistance up successfully - [ ] `service_hero_assistance install --download --version v0.3.1` pulls binaries from Forgejo Releases and installs to `~/hero/bin/` without falling back to cargo build - [ ] `service_hero_assistance install` (no flags) builds from source via `svc_cargo_install` - [ ] Operator admin dashboard reachable via hero_router prefix - [ ] Customer SPA island shows up in hero_os archipelago view - [ ] All curl smoke checks pass ## Files to touch (external repos) - `lhumina_code/hero_demo` — README.md + profile TOML - `lhumina_code/hero_skills` — `install_hero_assistance.nu` - `lhumina_code/hero_archipelagos` — finalize island registration from Phase 26 ## Files to touch (this repo) - `prompt.md` §1 — mark Phase 27 done; close Hero OS integration phase - `CLAUDE.md` — final state paragraph ## Out of scope - New engineering work (all earlier phases must be complete) ## References - Skill `tfgrid_deploy` - Reference: `hero_demo/README.md` 27-repo table - Reference: existing `install_hero_*.nu` modules in hero_skills
Author
Owner

Status check — Phase 27 not yet started

Per verification at HEAD c059c1a against the three required cross-repo file changes:

  • hero_demo/README.md 27-source-repo list: hero_assistance not present (table is current through hero_matrixchat)
  • hero_skills/nutools/modules/services/service_hero_assistance.nu: file does not exist (sibling directory contains only service_claude.nu)
  • hero_demo/profiles/: 8 profiles checked (admin, archive, beta, core, demo, new, tester, user) — zero mentions of hero_assistance

Phase 27-prep (#13) status: see updated comment on that issue — the lab-publish.yaml landing in #14 changed the publish shape (rolling tag/latest with linux-musl-x86_64 suffix) in ways that affect this issue's svc_install_download dependency. Decide on the asset-naming alignment before starting Phase 27.

Leaving open. Pickup brief: this is a cross-repo work item (hero_demo + hero_skills); can be done in a future hero_assistance session once Phase 27-prep naming-suffix question is resolved.

Signed-by: mik-tf mik-tf@noreply.invalid

## Status check — Phase 27 not yet started Per verification at HEAD [`c059c1a`](https://forge.ourworld.tf/lhumina_code/hero_assistance/commit/c059c1a) against the three required cross-repo file changes: - ❌ `hero_demo/README.md` 27-source-repo list: hero_assistance not present (table is current through `hero_matrixchat`) - ❌ `hero_skills/nutools/modules/services/service_hero_assistance.nu`: file does not exist (sibling directory contains only `service_claude.nu`) - ❌ `hero_demo/profiles/`: 8 profiles checked (admin, archive, beta, core, demo, new, tester, user) — zero mentions of hero_assistance Phase 27-prep (#13) status: see updated comment on that issue — the lab-publish.yaml landing in #14 changed the publish shape (rolling `tag/latest` with `linux-musl-x86_64` suffix) in ways that affect this issue's `svc_install_download` dependency. Decide on the asset-naming alignment before starting Phase 27. Leaving open. Pickup brief: this is a cross-repo work item (hero_demo + hero_skills); can be done in a future hero_assistance session once Phase 27-prep naming-suffix question is resolved. Signed-by: mik-tf <mik-tf@noreply.invalid>
Author
Owner

Closing — deferred along with hero_assistance

Three cross-repo file changes confirmed absent per earlier status comment: hero_demo README row, hero_skills service_hero_assistance.nu install module, hero_demo profile entry.

Additional blocker on top: lab-publish.yaml (landed via #14) publishes linux-musl-x86_64-suffixed binaries, but svc_install_download in hero_skills expects linux-amd64. This is an org-wide concern tracked at hero_skills#268 (rollout); resolving it is upstream of any Phase 27 work in this repo.

hero_assistance has been parked since s49. Workspace critical path is home#235 (deployer arc) — hero_assistance is not in that arc's roadmap. Doing Phase 27 cross-repo integration (hero_demo + hero_skills + this repo) for a service that nothing currently deploys would be speculative work outside the critical path.

Re-activation criteria: when hero_assistance returns to active development (triggers in #7), Phase 27 becomes scoped + actionable. The naming-suffix question (org-wide rollout) likely settles before then.

Closing as deferred.

Signed-by: mik-tf mik-tf@noreply.invalid

## Closing — deferred along with hero_assistance Three cross-repo file changes confirmed absent per [earlier status comment](https://forge.ourworld.tf/lhumina_code/hero_assistance/issues/12#issuecomment-35990): hero_demo README row, hero_skills `service_hero_assistance.nu` install module, hero_demo profile entry. Additional blocker on top: lab-publish.yaml (landed via [#14](https://forge.ourworld.tf/lhumina_code/hero_assistance/issues/14)) publishes `linux-musl-x86_64`-suffixed binaries, but `svc_install_download` in hero_skills expects `linux-amd64`. This is an org-wide concern tracked at [hero_skills#268](https://forge.ourworld.tf/lhumina_code/hero_skills/issues/268) (rollout); resolving it is upstream of any Phase 27 work in this repo. hero_assistance has been parked since [s49](https://forge.ourworld.tf/lhumina_code/hero_assistance/commit/b63a76a). Workspace critical path is [home#235](https://forge.ourworld.tf/lhumina_code/home/issues/235) (deployer arc) — hero_assistance is not in that arc's roadmap. Doing Phase 27 cross-repo integration (hero_demo + hero_skills + this repo) for a service that nothing currently deploys would be speculative work outside the critical path. **Re-activation criteria:** when hero_assistance returns to active development (triggers in [#7](https://forge.ourworld.tf/lhumina_code/hero_assistance/issues/7)), Phase 27 becomes scoped + actionable. The naming-suffix question (org-wide rollout) likely settles before then. Closing as deferred. Signed-by: mik-tf <mik-tf@noreply.invalid>
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/hero_assistance#12
No description provided.