Per-repo cleanup blocking lab-publish CI on 14 of 31 wired repos (s127 follow-up to #268) #269
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#269
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?
Summary
s127 wired the canonical
lab-publish.yamlworkflow into 31 of 35 D-07 demo-set repos via hero_skills#268. 14 of the 31 are now auto-publishing fresh musl-x86_64 binaries toreleases/tag/lateston every push todevelopment. The other 17 trip on pre-existing latent bugs in their own source / Cargo.toml — the workflow file itself is correct (proven on the 14 green repos across 1-binary / 3-binary / multi-bin workspace shapes). When each repo's per-repo bug is fixed, the next push todevelopmentauto-goes-green; no central tracker or re-wiring needed.This issue catalogs the 17 failures by category + fix surface, so repo owners can pick up their own cleanup independently.
Status after s127
Workflow file landed in: 31 repos (every D-07 35-set member except hero_voice / hero_os / hero_office / mycelium_network — all deferred for separate session-level decisions).
Currently green (binaries auto-publishing): 14 — hero_skills, hero_proc, hero_router, hero_db, hero_proxy, hero_osis, hero_livekit, hero_biz, hero_whiteboard, hero_indexer, hero_code_indexer, hero_researcher, hero_webbuilder, hero_website_framework.
Currently red (pre-existing bug): 17 — see categories below.
Special-case deferred (no workflow yet): 4 — hero_voice (ONNX, needs gnu per D-05), hero_os (WASM, separate target), hero_office (private repo, auth quirk), mycelium_network (
development_crate_layoutbranch, geomind_code).Failure categories
1. Path-dep
hero_admin_libtohero_website_framework(6 repos)Fix surface: per-repo Cargo.toml flip
path = "../../../hero_website_framework/crates/hero_admin_lib"→git = "https://forge.ourworld.tf/lhumina_code/hero_website_framework". Pattern already landed in mycelium_admin in s125.hero_foundry_corepath-dep)2. Lab post-process < 512KB binary-size guard (4 repos → FIXED in same session via env-var override)
Fix landed in s127:
HERO_MIN_BIN_BYTES=0env var added to canonical workflow; lab's check is now overridable.These should re-go-green on next push after the s127 lab + workflow update lands.
3. C++ cross-compile (
x86_64-linux-musl-g++missing) (2 repos)Fix surface: Debian's
musl-toolspackage only shipsmusl-gcc(C only), notmusl-g++. Three viable approaches:Per D-05: matrix-swap these repos to gnu target via
--platforms linux-x86_64(workflow variant)OR builder container with
musl-crosstoolchain pre-installed (PR to despiegk's image)OR clang +
--target=x86_64-unknown-linux-musl(workflow change, may need libc++ headers)hero_embedder (esaxx-rs C++ — already covered by D-05 lock)
hero_memory (C++ vector-backend dep)
4. Cargo feature spec error (2 repos)
Fix surface: per-repo Cargo.toml.
reqwestfeaturerustlsnot selectable on resolved 0.12 (the dep usesdep:rustlssyntax which doesn't auto-create the implicit feature). Switch torustls-tlsor expose the feature explicitly.askamafeaturewith-axumnot available on 0.16 (renamed/removed in 0.13+).5. Cargo
links =collision (1 repo)Fix surface: per-repo Cargo.toml dedup.
rusqlitein the dep tree (0.31 viar2d2_sqlite^0.24and 0.39 directly) both link tosqlite3native. Pin one or remove the olderr2d2_sqlitechain.6. musl portability (
__rlimit_resource_tglibc-only) (1 repo)Fix surface: per-repo source cleanup. s70 had the same fix landed but it regressed.
setrlimit-style code references__rlimit_resource_t. Replace with the libc::Resource enum or cfg-gate.7. Unresolved git merge-conflict marker in source (1 repo)
Fix surface: per-repo source cleanup. Single grep + commit.
hero_slides_libhas<<<<<<</>>>>>>>markers in source (cargo error: "encountered diff marker").8. Stale
herolib_coreAPI references (1 repo)Fix surface: per-repo
cargo update -p herolib_core+ rebuild.herolib_core::base::hero_socket_dirandpath_var, but the pinned herolib_core version doesn't have those yet (or has them removed).9. Stale service.toml package references (1 repo)
Fix surface: per-repo service.toml cleanup.
hero_recipes_server/hero_recipes_adminlisted in service.toml but the crates don't exist (orphan refs from rename/removal).Cleanup pattern
For each failing repo:
The next push automatically triggers the already-wired
lab-publish.yaml, which goes green if the per-repo bug is the only blocker.Out of scope
See also
s128 close-out — Surface A swept; 17→25 actually-shipping, two diagnoses redirected, two follow-up issues filed
Per-row outcomes
Category 1 — Path-dep
hero_admin_lib(6 repos)5 of 6 flipped to git-dep against
hero_website_framework(s125 mycelium_admin precedent line, verbatim):hero_codescalershero_lib_rhaihero_matrixchathero_plannerhero_collabhero_codewas already on the git-dep form (line 85 of its Cargo.toml). Its CI failure is unrelated to this category —releases/tag/latestalready shipshero_code-linux-musl-x86_64+hero_code_admin+hero_code_server. Closing it out of Category 1 with no further action this session.Category 4 — Cargo feature spec (2 repos)
hero_agent→ 51c6551 —reqwestfeature"rustls"→"rustls-tls"(the canonical name;"rustls"was never a valid feature on reqwest 0.12/0.13).hero_wallet→ 2f601c7 — dropped askama"with-axum"feature; integration is already covered by separateaskama_axumdep in the same manifest.Category 5 —
links="sqlite3"collision (1 repo)hero_foundry→ a4a9e5d. Root cause: lab's D-08 policy auto-bumps rusqlite 0.31 → 0.39, but no publishedr2d2_sqliterelease supports rusqlite ≥ 0.39 (latest r2d2_sqlite 0.31 caps at rusqlite ^0.37). The auto-bump pulls twolibsqlite3-sysversions into the resolved graph, both linking tosqlite3native.Fix uses the documented
[package.metadata.hero_builder.dep_overrides]escape hatch (dependency_upgrade.rs:59-69) to hold rusqlite at 0.31. Remove when r2d2_sqlite catches up.Category 6 —
__rlimit_resource_tmusl portability (1 repo)hero_logic→ a55deca.libc::__rlimit_resource_tis glibc-only; on musl,libc::setrlimit's resource arg isc_int. Added atarget_env-gated type aliasRlimitResourceso both glibc and musl link cleanly. Verified locally withcargo check --target x86_64-unknown-linux-musl.Category 7 — Unresolved merge markers (1 repo) — DEFERRED, filed hero_slides#71
hero_slidesdevelopmentHEAD does NOT compile. Commit6e39d677by @despiegk —chore: auto-commit local changes before pull(2026-05-19 17:53 +0200) — is a merge that committed 138 unresolved conflict markers across 46 regions in 10 files, including the binary entry's 42 markers (main.rs) and 30 ingenerator.rs. The two parents conflict on incompatible structural intents:45efb36by @Casper — server module-layout refactor (file renames intojobs/andrpc/)93a3c99by @despiegk — herolib_ai API migration (ImageRef relocation, error variant renames, agent invocation rewrites)Resolving requires picking the winner per concern; the original authors have the context. Filed hero_slides#71 with details + suggested unwinding procedure.
The §3 estimate of
≤ 10 min(based on raw marker count) underestimated by an order of magnitude. Perfeedback_branch_cleanup_only_own_authored.md, I left it alone.Category 8 — Stale
herolib_coreAPI (1 repo) — DIAGNOSIS WAS WRONGhero_books. Phase B confirmed (and locallab build --release --platforms linux-musl-x86_64 --workspaceconfirmed mid-build) that:herolib_core::base::hero_socket_dirandpath_var()ARE exported by currentherolib_core(base/mod.rs:8-9 + paths.rs:54,86).hero_booksbuilds cleanly under lab locally —hero_books_admin(1.97MB),hero_books_web(4.34MB),hero_books_serverandhero_do_hero_booksproduced before the test timeout.releases/tag/latestalready hashero_books_admin,hero_books_web,hero_do_hero_booksmusl-x86_64 assets shipping from a prior workstation upload.The lab-publish.yaml CI fail is not a code issue. Likely: transient infrastructure / asset-upload step / runner pre-condition. Recommend triggering a fresh CI run and harvesting the actual log when the next push lands on hero_books.
Category 9 — Stale service.toml refs (1 repo) — DIAGNOSIS WAS WRONG; filed hero_skills#270
hero_rpc.hero_recipes_serverandhero_recipes_admincrates DO exist (example/recipe_server/crates/{hero_recipes_server,hero_recipes_admin}/). The actual failure surface is a lab orchestrator bug with nested workspaces: lab'sexecutor.rs:54runscargo build -p hero_recipes_serverfromrepo_root, butrepo_root's Cargo.tomlexcludesexample/recipe_server— so cargo says "package ID specification did not match." The bin is correctly discovered bydiscover_binaries_in_repo(which walks per-workspace cargo metadata), but the executor doesn't carry the bin's workspace root through tocurrent_dir.Detailed root-cause analysis and fix shapes at hero_skills#270. This blocks any D-07 repo that has nested-workspace examples under
git_root— hero_rpc is the confirmed instance.Net coverage
Unblocked remaining (against the 35-set):
Followups filed
development; needs despiegk + Casper.mik-tf referenced this issue from lhumina_research/hero_demo2026-05-20 01:14:53 +00:00