CI red on development: stale Cargo.lock pin of hero_proc_sdk #34
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_rpc#34
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?
Every PR against
developmentfailsmake checkwitherror[E0560]: struct JobCreateInput has no field named inputsatcrates/service/src/lifecycle.rs:290.Cargo.lockpinshero_proc_sdkto hero_proc commit8e7e985(2026-04-08), which is older thanc84abac(2026-04-15) where theinputsfield was added.The call site already passes
inputs: None, so the source is correct — only the lock is stale.Spec — Refresh stale
hero_proc_sdkpin inCargo.lock(issue #34)Objective
Unblock CI on
developmentby refreshing thehero_proc_sdkentry inCargo.lockso it resolves to the currentdevelopmentHEAD ofhero_proc(which contains theJobCreateInput.inputsfield). The Rust source already passesinputs: Noneat the only call site, so no source code change is required — only the lock file is stale.Requirements
make checkmust succeed ondevelopmentand on PRs targetingdevelopment, both locally and in the ForgejoTestworkflow.cargo update -p, not a fullcargo update).hero_proc_sdkmust remain branch-tracking ondevelopment(norev =should be introduced).Cargo.lockentry forhero_proc_sdkmust end up at the latestdevelopmentHEAD ofhero_procat the time of the fix — do not hand-pick or hardcode any specific commit SHA.Files to Modify/Create
Cargo.lockhero_proc_sdk: thesource = "git+...?branch=development#<sha>"line will move to the currentdevelopmentHEAD ofhero_proc. Transitive checksum lines may also update.inputsfield onJobCreateInput.No other files are modified or created. Specifically, do not touch:
crates/service/Cargo.toml(already declares the git+branch dep correctly)crates/server/Cargo.toml(already declares the git+branch dep correctly)crates/service/src/lifecycle.rs(line 290 already usesinputs: None)Implementation Plan
All commands assume cwd is the repo root and a working Rust toolchain.
Confirm the workspace state is clean before touching the lock.
You should be on a feature branch off
developmentwith no unrelated edits staged. IfCargo.lockis already dirty, stop and inspect.Re-resolve only
hero_proc_sdkagainst the currentdevelopmentHEAD. Because bothcrates/service/Cargo.tomlandcrates/server/Cargo.tomldeclare the dep as{ git = "...hero_proc.git", branch = "development", version = "0.5.0" }with norev =, a targeted update is sufficient — no manifest edit is required and no SHA needs to be specified by hand.Cargo will fetch the current
developmenttip from the remote and rewrite the lock to point at it. Expected output line:Verify the lock now points at the new commit.
The
source = "git+https://forge.ourworld.tf/lhumina_code/hero_proc.git?branch=development#<sha>"line must show a SHA different from the previous one and must match the currentdevelopmentHEAD ofhero_proc(cross-check withgit ls-remote https://forge.ourworld.tf/lhumina_code/hero_proc.git refs/heads/development).Reproduce CI's check locally.
This runs
cargo check --workspace --exclude recipe_server. It must complete with noE0560error atcrates/service/src/lifecycle.rs:290.Sanity-check the broader build (recommended given the SDK touches both
hero_serviceandhero_server).Commit only the lock file.
Push and let the Forgejo
Testworkflow (.forgejo/workflows/test.yaml) runmake check/make testto confirm CI is green.Step dependencies
Acceptance Criteria
Cargo.lock[[package]] name = "hero_proc_sdk"entry'ssource = "git+...?branch=development#<sha>"SHA matches the currentdevelopmentHEAD ofhero_proc(verified viagit ls-remote).inputsfield onJobCreateInput(implied by matchingdevelopmentHEAD).make checkexits 0 locally with noerror[E0560]and no other new errors.make testexits 0 locally.Cargo.lock.crates/service/Cargo.tomlandcrates/server/Cargo.tomlstill declarehero_proc_sdkas{ git = "https://forge.ourworld.tf/lhumina_code/hero_proc.git", branch = "development", version = "0.5.0" }with norevkey.Testworkflow (Checkstep) passes on the PR againstdevelopment.Notes
crates/service/Cargo.tomlandcrates/server/Cargo.tomlalready usebranch = "development"without a fixedrev =, so Cargo picks up whateverdevelopmentHEAD is at resolve time. The lock got stale because nobody has re-resolved it since theinputsfield was added.cargo update -p hero_proc_sdkalways pulls the latestdevelopmenttip — that is the desired behavior. Do not edit the lock by hand or pin a specific commit.hero_rpc_serverandhero_servicetransitively depend onhero_proc_sdk, so refreshing the singlehero_proc_sdkentry is sufficient — Cargo will reuse the new resolved commit for both.cargo update -p hero_proc_sdk(targeted), not a barecargo update, to avoid churning unrelated transitive deps.Testworkflow already clears$CARGO_HOME/git/db/hero_rpc-*andhero_lib-*caches but nothero_proc-*. That doesn't matter for this fix — the lock file is what determines the resolved commit, and CI uses the committed lock as-is.crates/service/src/lifecycle.rs:287-291is already correct: Do not modify it.Test Results
make checkandmake testwere run locally on branchdevelopment_refresh_hero_proc_sdk_lock(rustc 1.94.1, cargo 1.94.1).make checkPassed. The
error[E0560]: struct JobCreateInput has no field named inputsreported in this issue is gone.make testPassed. 274 tests passed, 0 failed, 1 ignored across all workspace crates.
Notes
cargo update -p hero_proc_sdkre-resolved the lock to currenthero_procdevelopmentHEAD (9b134018). It also pulledhero_rpc_deriveandhero_rpc_openrpcto currenthero_rpcdevelopmentHEAD (38a09290) since they are git deps reachable throughhero_proc_sdk— both are branch-tracking, so this is the desired refresh, not an unintended bump.make testsurfaced a pre-existing test-only compile error atcrates/osis/src/rpc/request_context.rs:296(theRequestContextliteral intest_serde_roundtripwas missing thehero_context_name: Option<String>field added in commit7d14133). This was previously masked behind themake checkfailure that this issue is about. A one-line fix (hero_context_name: None,) is included in this PR so the Test step also passes — the alternative would be a partially green CI on every future PR until that test was patched.Implementation Summary
Changes
Cargo.lockhero_proc_sdkfrom8e7e9850to currenthero_procdevelopmentHEAD9b134018(which contains theJobCreateInput.inputsfield). Cargo also re-resolvedhero_rpc_deriveandhero_rpc_openrpcto the currenthero_rpcdevelopmentHEAD38a09290, since both are git deps reachable throughhero_proc_sdk. No manifest changes — both deps remainbranch = "development"with no fixedrev.crates/osis/src/rpc/request_context.rshero_context_name: None) to theRequestContextliteral intest_serde_roundtrip. The struct field was added in commit7d14133but the test was never updated; the test compile error was previously masked behind themake checkfailure that this issue is about.Verification
make checkpasses — the originalerror[E0560]: struct JobCreateInput has no field named inputsatcrates/service/src/lifecycle.rs:290is gone.make testpasses — 274 tests passed, 0 failed, 1 ignored across all workspace crates.Notes
crates/service/src/lifecycle.rs:290already passesinputs: None.cargo update -p hero_proc_sdk(targeted) — no hand-edited SHAs, no broadcargo update, norev =introduced into manifests. Future stale-lock incidents on this dep can be resolved the same way.fatmaebrahim referenced this issue2026-04-27 11:20:14 +00:00
Pull request opened: #35
This PR implements the changes discussed in this issue.