Bootstrap canonical hero_service template repo (toy domain: managing Hero services) #261
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#261
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Goal
Create a top-level template repo that contributors clone as the starting point for a new Hero service, and that doubles as a meta-example: its toy domain is "managing Hero services" — so the same template is intended to evolve into the production "service that creates services" later.
Naming — resolve collision first
There is already a crate named
hero_serviceathero_rpc/crates/service/. A top-level repo of the same name would collide on Cargo workspace dependency names.Options:
hero_service_template(clear, no collision).hero_serviceand rename the inner hero_rpc crate tohero_lifecycle(or merge it intoherolib_core::baseper the hero_rpc codegen-alignment issue — which would also kill the collision).hero_servicer,hero_factory).My recommendation: B is cleanest long-term and aligns with the lifecycle-reconciliation work already planned in hero_rpc. A is the safe interim. Comment with your call.
What the repo should contain
Generated by
hero_rpc scaffold(when that exists — see hero_rpc issues), then hand-tuned:_server,_admin,_sdk,_examplescrates (and_webif a public-facing surface is desired).schemas/services/services.oschemadefining aServiceDefinitionroot object (name, repo, schemas, binaries, sockets, status) — i.e. the data model behind the meta-domain.service.toml,build.rs≤5 lines,main.rsusingservice_base!()+herolib_core::basewiring._adminUI wired tohero_website_libshowing a list/detail view ofServiceDefinitionrecords..forgejo/workflows/build-linux.yamlper theforge-release-workflowskill.Why "toy domain = managing services" matters
Two wins for the same effort:
Acceptance
forge.ourworld.tf/lhumina_code/<chosen-name>.git clone→cargo build→lab infocheck→lab service <name> --startall succeed without manual edits.Depends on
_adminwiring uses one name)hero_rpc scaffold) #54Parent / context tracker: hero_skills#262 — read it before starting work on this issue. Locked decisions, reference materials, and execution order live there. Iterate via comments here; consolidation passes on the body only after feedback settles.
Decision: B (confirmed by Timur)
hero_service(top-level inlhumina_code).hero_rpc/crates/service/(Cargo packagehero_service) gets renamed tohero_lifecycle— recent commits there show it's still actively developed, so rename rather than delete. Cross-action item tracked in hero_rpc#55 (correction comment landed there).Action items locked
hero_rpc/crates/service/→hero_rpc/crates/hero_lifecycle/. Update package name tohero_lifecycle. Update all downstream[workspace.dependencies]references (hero_service =→hero_lifecycle =).lhumina_code/hero_servicerepo by running the updatedhero_rpc scaffoldagainst aservicesdomain OSchema.ServiceDefinitionroot object (name, repo, schemas, binaries, sockets, status) — the seed of the future production "service that creates services".Blocked on hero_rpc#54 + #55 landing first. Out of scope for tier-1 agent work.