[META] Align hero_assistance with the canonical Hero service template #15
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?
Why
hero_assistance is engineering-complete since s37 and parked since s49, but it's an outlier in the workspace — the only service still on Dioxus + dioxus-bootstrap-css when every other Hero service has converged on the canonical pattern (
hero_servicereference shape: Axum + Askama + Bootstrap + Unpoly +hero_admin_lib+hero_theme).This issue tracks bringing hero_assistance 100% in line with the canonical template per the
hero_service_refactorplaybook. Goal: any Hero contributor can pick up hero_assistance using only the skills they already know from hero_proc, hero_cockpit, hero_service.Workspace critical path remains home#235 — this work is the right cleanup for the right moment (no active deployments, no end-user blast radius), but does not pre-empt Track D.
Status (updated 2026-05-23 at s2-020 close)
Phases A / B / C / D / E done. Meta-issue closed.
5330a0flab infocheck4 ok / 4 fail / 20 findings → 4 / 0 / 0. D-26 minted retiring D-09/D-17/D-22/D-25 atomically. CI walls 1+2 fixed (rusqlite 0.31→0.39, reqwest workspace dep with rustls-tls)._adminrebuild on hero_admin_lib + Askama4f5362ctemplates/base.html178 LOC +templates/index.html474 LOC, 8 tab panes (4 domain viawindow.rpc()+ 4 utility via<hero-*>web components).openrpc_proxy+rpc_proxybyte-passthrough preserved verbatim._uirebuild on Askama + Unpoly + SSE8bb3c6bbase.html,index.html,ticket.html,new_ticket.html,_messages.html,_message_item.html). D-27 minted locking theGET /tickets/{id}/_messagesSSE wire shape + inheritance of D-20 per-recipient privacy via the existing per-userbroadcast::Sender<SeqEvent>.rpc_proxy+attachment_proxy+user_ws_handlerpreserved verbatim.51a3989_ui/{static,scripts,Makefile,BROWSER_SUPPORT.md}+ workspace-rootMakefile+ 5 SPA-era / lifecycle scripts. Fixed.gitignorecodegen-rename pattern. Polished D-26 frontmatter (session: "s2-016"). Folded inlab build --policy-mode applydep-bump drift (askama 0.14→0.16, thiserror 1→2, serde_json 1→1.0). Rewrote repo-local CLAUDE.md (Current state / v1 architecture / patterns / Build / Open issues).6b592cbcargo fmt --allacross 42 files (1 cli + 33 server + 4 sdk + 4 examples;_ui+_adminhad zero fmt debt, absorbed in Phase B/C respectively).cargo clippy --release --workspace --all-targets -- -D warningsclean — auto-fix absorbed the bulk (collapsible_if x9, collapsible_match, single_match, manual_split_once, io_other_error, bool_assert_comparison) plus 13 hand-fixes for residuals (vec_init_then_push, doc_lazy_continuation x6, unnecessary_sort_by x2, type_complexity, field_reassign_with_default, collapsible_if, redundant_guards, dead_code x3, zombie_processes). README.md rewritten 458 → 205 lines, dropping Dioxus-era sections. 5 follow-up Forge issues filed for the post-Phase-D real-deploy gaps.Test posture (preserved through Phase E): workspace
cargo test --release --workspace --no-fail-fast= 254 pass / 1 fail / 14 ignored (1 remaining failure is the documented pre-existing host-env flakephase24b_ui_add_access_fails_when_hero_proc_unreachable).Follow-up issues filed at Phase E close
Real-deploy gaps surfaced during the s2-018 router-fronted smoke, filed as fresh Forge issues at s2-020 close (NOT Phase B/C regressions; all inherited from hero_admin_lib or hero_router):
Target state — 6 crates (canonical shape)
hero_assistance--start/--stop+ selfstart)hero_assistance_serverhero_assistance_adminhero_admin_lib+ Askamahero_assistance_uihero_assistance_sdkhero_assistance_examplesCrates dropped (5):
hero_assistance_app,hero_assistance_ui_wasm,hero_assistance_admin_ui_wasm,hero_assistance_ui_wasm_components,embed_smoke— all dropped in Phase A (s2-016).Acceptance criteria
Per
hero_service_refactor§Acceptance:lab infocheckexits 0 with4 crate(s) clean, 0 crate(s) with issues, 0 finding(s) total(4 binary crates; 2 lib crates not scanned by infocheck)crates/hero_assistance_app//_ui_wasm//_admin_ui_wasm//_ui_wasm_components//embed_smoke/directoriesMakefile, noscripts/service_assistance.nu, noscripts/*.shbuild/install helpers (kept:scripts/backup.sh,scripts/kickstart.sh,scripts/handoff.sh— AI methodology infrastructure)dioxus*dependency in anyCargo.toml(workspace or per-crate)_adminconsumeshero_admin_libfor routes / middleware / socket helpers / web components_uiserves templates from Askama + Unpoly + SSE; no--distflagREADME.mdreferences onlylab service ...lifecycle (PURPOSE.md absent in repo; README alone carries the canonical incantation — completed in Phase E s2-020)lab service hero_assistance --install && lab service hero_assistance --startruns cleanly (with the 5 real-deploy caveats now filed as fresh Forge issues — see Follow-up section above)/health,/openrpc.json,/.well-known/heroservice.json, JSON-RPCsystem.pingall green on_serversocket;/healthgreen on_admin+_uisockets/hero_assistance/admin/shows the admin cardD-26filed retiring D-09 / D-17 / D-22 / D-25 atomicallyD-27filed locking the SSE wire shapecargo fmt --check+cargo clippy --release --workspace --all-targets -- -D warningsboth exit 0 (Phase E)Out of scope
References
hero_service_refactor— the canonical migration playbookhero_service— target shape referencehero_proc— admin model referencehero_cockpit— Askama+Unpoly customer UI referencehero_skills— skill bundle (hero_ui_dashboard,hero_ui_dashboard_admin,hero_ui_whitelists,hero_ui_openrpc_proxy,hero_ui_routes,web_embed,hero_web)home#235— workspace critical path (this alignment is parallel/cleanup, not a Track D blocker)_ui)Effort summary
5 sessions for Phase A-E (s2-016 / s2-017 / s2-018 / s2-019 / s2-020 — ✅ all closed). Phase F (cross-repo hero_skills + hero_demo integration) remains an optional follow-up; scope unchanged from the original phased plan.
Signed-by: mik-tf mik-tf@noreply.invalid
Closing — Phase E landed on
developmentas6b592cb(43 files +2353/-1676). Workspace pre-merge gate green:cargo fmt --check,cargo clippy --release --workspace --all-targets -- -D warnings,cargo build --workspace --release,cargo test --release --workspace --no-fail-fast(254 / 1 / 14 byte-stable with Phase D baseline),lab infocheck4 clean / 0 findings. Every acceptance box is now ticked.The 5 real-deploy gaps that surfaced during the s2-018 router-fronted smoke have been filed as fresh Forge issues against their owning repos (see Follow-up section in the body). None are Phase B/C regressions — all are inherited from hero_admin_lib or hero_router and were latent in the canonical-template adoption.
Phase F (cross-repo hero_skills install module + hero_demo source-repo entry + profile) remains an optional follow-up, gated on lhumina_code/hero_skills#268.
Signed-by: mik-tf mik-tf@noreply.invalid