[s84 carryover] make hero_slides work perfect — full e2e validation via hero_builder + service_slides #47
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?
Carryover from home#230 close at end of session 84. Decoupled from the P5 from-nothing track so it can land independently.
Goal — make hero_slides work perfect
End-to-end validation on a hero_proc-supervised stack: build via
hero_builder(nowlabupstream), install, register, start, drive/hero_slides/adminvia hero_router, and exercise core slide-deck features.Recipe (per user direction at s84 close)
--reset --update --allshould:forge mergelatest hero_slides source from origincargo updateso all deps resolve to their newest workspace-pinned versionssvc_install)(Verify the
--allflag actually exists onservice_slides startbefore running —startaccepts--reset --update; the--allsemantics may live onservice_complete. If the literal command above doesn't take, fall back to the equivalent split:service slides install --update --releasethenservice slides start --reset.)"Perfect" acceptance criteria
lab --release --install --policy-mode warnGREEN from a fresh checkout (already passing per s83-round2 sweep)service slides start --reset --updatereturns clean (no nu errors, no cargo errors)proc service status hero_slidesreportsrunning/hero_slides/adminvia hero_router renders cleanly via Hero Browser MCP — no console errors, no 502/500, theme syncshero_service_testskillhero_socketsskill (admin.sock, rpc.sock under$HERO_SOCKET_DIR/hero_slides/)Current state at s84 close (2026-05-09)
856714c fix: add hero_service startup block, --info and --help compliancelabperbuild_logs/s83-round2/SUMMARY.txt— lineGREEN: hero_slides_ui→_adminrename arcReference history
v0.1.0-rc2+ service_slides wiring (hero_skills #202)_ui→_adminrename + taghero_slides v0.1.0-rc1Skills to apply
hero_service_test_complete— find URL, restart cleanly vianu_service_use, drive UI with Hero Browser MCP, HTTP smoke checks via nuhttp get/posthero_ui_test_create— generate testcases/ directory with hero_browser MCP test specsweb_embed— confirm theme sync via iframe protocol if hero_slides is iframe-mounted in hero_osSession 85 closure — 2026-05-09
Outcome
Four of five acceptance bullets GREEN; the fifth (full slide-deck CRUD) was blocked by a dispatcher gap that this session also fixed in PR #48 (merged at sha
3c77efc). hero_slides is now bootable + browsable end-to-end on a from-source stack-up; full schema-vs-dispatcher alignment is filed as a follow-up tracker so the remaining UI flows light up.Steps run
hero_builder --release --install --policy-mode warnfromlhumina_code/hero_slides/hero_do_hero_slides,hero_slides_server,hero_slides_admin,hero_slidesinstalled to~/hero/bin/(~50s, sccache hit). 18 drift entries in.hero/build_report.md, non-blocking.service slides start(no--allsince prereqs already up)hero_slidesrunning underhero_proc; bothrpc.sock+admin.sockbound at~/hero/var/sockets/hero_slides/; built-inservice_slides testpasses (db ✓, aibroker ✓, slides ✓)./hero_slides/adminsmoke via Hero Browser MCP athttp://127.0.0.1:9988/hero_slides/admindata-bs-theme; all UI controls present (Generate All / Create PDF / Edit Theme / Slide Wizard / Settings sub-tabs); console messages: 0 at every stage.collection.*+rpc.examplesPathdispatch (silently no-op'd). Fixed in PR #48; after fix: "Open Example Deck" registershero_slides_examplescollection (Collections counter 0→1), populates 2 decks (hero_slides_intro+sample_deck), navigates to deck route, dashboard counters update (Decks 2 / Slides Total 12 / Generated 6 / Pending 6); curl smoke ofcollection.list/get/register/unregister/rescan+rpc.examplesPathreturns shapes matchingopenrpc.json. Slide creation viaslide.insert+slide.saveContentalso verified end-to-end (07_session85_test.mdwritten with custom content).admin.sock+rpc.sockperhero_socketsskill);rpc.discoverreturns full method catalog; six previously-undispatched methods now dispatched. Three additional schema-vs-dispatcher mismatches found (separate scope, see follow-up below).What shipped this session
collection.list/get/register/unregister/rescan+rpc.examplesPathintocrates/hero_slides_server/src/rpc.rs. Net +174 LOC, no schema or breaking changes. Squash-merged withdelete_branch_after_merge=true.v0.7.5-rc2— renamedcrates/mycelium_ui→crates/mycelium_adminso the published release asset (mycelium_admin-x86_64-unknown-linux-musl) matches whathero_skills/.../service_mycelium.nu --downloadexpects. Closed the cross-org partial in the_ui→_adminworkspace sweep.Out of band, surfaced this session
~/hero/code/hero_skills(548 commits behind) and~/.config/nushell/config.nustill pointing at the pre-s62tools/modules/layout — re-ran the canonical installer (bash lhumina_code/hero_skills/nutools/install_nu.sh) to bring both up tod64f936and the newnutools/modules/hero_loader.nu. Useful onboarding-failure mode to be aware of./usr/local/bin/myceliumrunning under/etc/systemd/system/mycelium.servicethat conflicted with the hero-managed daemon (TUN + ports 8989/8990/8991). Stopped + disabled; not removed.pctwo ALL=(root) NOPASSWD: /usr/sbin/setcap cap_net_admin+ep /home/pctwo/hero/bin/myceliumto/etc/sudoers.d/hero-mycelium-setcapsoservice mycelium start --downloadruns non-interactive across the purge+reinstall loop.Follow-ups (filed separately)
deck.listresponse lacksdeck_name(JS deck dropdown collapses to::undefinedkeys);slide.insertserver expectsdeck_pathwhile schema declares{collection, deck, at, slug};slide.getContentserver expectsslide_namewhile schema declaresslide. All same root cause as the gap PR #48 closed. → Filing as a sweep tracker so the rest of the dashboard's CRUD lights up without re-introducing each silently-failing call site.service slides start --allbrings up proc → router → db but not mycelium, even though hero_aibroker (a transitive prereq) requires it. Plus the--clearonservice_proc startwipes any prior mycelium registration. → Filehero_skillsissue: include mycelium in--all, or document the order so non---allpaths are the documented happy path.--target rootvalidator drift —service_mycelium.nudocuments--target {driver|common|root}and dispatches$sudo = ($target == "root")(line 521) butclients/target.nurejectsroot, accepting only{driver, common, self}. → Filehero_skillsissue.loadExampleDeck()doesnavigateTo('collections/<col>/decks/<deck>')but the deck dropdown doesn't auto-select the named deck on landing because the records lackdeck_name(above). Resolved as part of the schema alignment sweep.Verification artifacts (workstation-local)
/tmp/slides-admin-{home,collections,slides,admin}.png,/tmp/slides-after-load-example-fixed.png,/tmp/slides-collections-with-data.png,/tmp/slides-collection-detail.png— all on a 1440×900 headless viewport, dark theme.Closing as DONE for the original scope; the schema alignment sweep continues in a follow-up tracker.
Signed-off-by: mik-tf