fix(skills+services): FORGE_TOKEN-optional bootstrap + uniform start --download (D-06) #228
No reviewers
Labels
No labels
prio_critical
prio_low
type_bug
type_contact
type_issue
type_lead
type_question
type_story
type_task
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
lhumina_code/hero_skills!228
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "development_mik_proc_token_optional"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
The hero_skills companion to hero_proc PR #97. Together they enable a fresh VM (TF Grid or dev box) to bootstrap the supervisor without any
FORGE_TOKENin env, and gives 14 more services a uniformservice_X start --downloadpath.Locked by D-06: forge-token-bootstrap-optional in the ai-pipeline workspace.
Why
service_proc startattempt (session 72) hit the latent gate immediately and revealed three layered issues — fixed here.Commits
fix(lib): make svc_install_download FUSE-safe + verify_binaries_fresh download-aware—svc_install_downloadnowtouches each binary after copy (FUSE filesystems lag mtime visibility ~5s, breaking the freshness check);svc_verify_binaries_freshacceptsdownload: bool = falseand returns immediately when set (the freshness check is meaningless for versioned release artifacts). Default value preserves existing behaviour.fix(service_proc): soft-warn missing FORGE_TOKEN + nohup print quote-fix + download-aware verify— three fixes to bring up the supervisor on a fresh VM: replace theerror makeon missing FORGE_TOKEN with aprintwarning (passes empty string throughwith-env); fix latent nu syntax bug at line 553 ((pid file: ...)parsed parens as subexpressionpidcommand — only nohup detach path hits it, screen path was always fine); thread$downloadinto the verify call.feat(services): uniform --download flag in start for 14 services + router— adds--downloadand--versionto start for: aibroker, biz, books, browser, db, editor, foundry, indexer, matrixchat, osis, proxy, router, slides, whiteboard. Threading is mechanical; updates also pass$downloadto verify in the 10 services that already had--download(proc, agent, collab, embedder, logic, office, planner, runner_rhai, shrimp, voice). Result: 24 services with uniformstart --downloadsemantics. Mycelium remains cargo-only — release pipeline +--downloadforgeomind_code/mycelium_networkis a follow-up session.docs(hero_running): FORGEJO_TOKEN no longer required at boot— aligns the onboarding skill text with the new D-06 bootstrap shape.Validation
End-to-end on heroci with
FORGE_TOKEN/FORGEJO_TOKENcleared from env:Status:
running ✓ pid alive: true.Test plan
service_*.nuparse-check cleanly vianu -c "use <file> *; ..."use nutools/modules/services *loads cleanlyservice_proc install --download --version v0.5.0-rc1 && service_proc start --downloadfrom a clean state on herociRefs
decisions/D-06-forge-token-bootstrap-optional.md)Out of scope (session 73 follow-up)
geomind_code/mycelium_network(Bucket-C-class) +--downloadpath inservice_mycelium.service_complete --downloadplumbing inpackages.nu.hero_routerbinary version accepts--addressflag (or align nu script).Threads the `--download` flag (and its companion `--version`) through every `service_X start` whose `install` already supports `--download` but where `start` previously did not. With this change, a fresh VM can do `service_X start --download` for any of these 14 services and get the canonical defensive-restart cycle (drop registration → wait → purge → install via Forgejo Releases → register → start) without needing local source or cargo. Services updated (alphabetical): service_aibroker, service_biz, service_books, service_browser, service_db, service_editor, service_foundry, service_indexer, service_matrixchat, service_osis, service_proxy, service_router, service_slides, service_whiteboard. Per-service edits are mechanical and identical: - Add `--download` and `--version: string = "latest"` flags to the `start` function signature. - Forward `--download=$download --version $version` into the `install` call. - Pass `$download` into `svc_verify_binaries_fresh` (default false is preserved for callers that omit it). `service_router` additionally gains the same flag (it had none before this PR despite its `install` accepting `--download`); needed for heroci bootstrap after `service_proc` and mycelium are up. Services that do NOT have `--download` in `install` are deliberately left unchanged (claude, code, codescalers, livekit, mycelium, os). Mycelium support is the subject of a follow-up session: add release pipeline to `geomind_code/mycelium_network` + `--download` to `service_mycelium`. 10 of 11 services that already had `--download` in start (proc, agent, collab, embedder, logic, office, planner, runner_rhai, shrimp, voice) are updated to also pass `$download` to `svc_verify_binaries_fresh`, making the verify-skip uniform. Validated: nu module aggregate loads cleanly; per-service parse checks all pass. Refs: lhumina_code/home#225 Signed-off-by: mik-tf