development build broken: openrpc_client! panics on {str: any} in JobCreate/RunSpec (Rule 2) — recurrence of #142/#143 from #140 #146
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_proc#146
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
hero_proc_sdkon the currentdevelopmenttip (14ee3ea, = #140 "restore typed inputs end-to-end") fails to compile when built against the currenthero_libdevelopment(277299dc).herolib_macros::openrpc_client!panics during macro expansion because the hero_proc schema uses the forbiddenanytype, whichopenrpc_client!now rejects per/openrpc_principlesRule 2.This is a recurrence of the (closed) #142 / #143 ("
openrpc_client!rejects{str: any}inputs from #140 — Rule 2"): #140 reintroduced{str: any}inputs, and the current hero_libdevelopmentmacro enforces Rule 2 again.Exact error
Because the macro panics it generates nothing, producing a cascade of downstream errors in the same crate:
unresolved import HeroProcClient_,unresolved import jobs,unresolved import system, and theAction/RunSpec/ServiceSpecre-exports inbuilders.rs/factory.rs/lifecycle.rs/sse.rs.Root cause (precise locations)
Both fields are
{str: any}:crates/hero_proc_server/oschema/jobs/30_job.oschema:49—JobCreate.inputs: {str: any}crates/hero_proc_server/oschema/jobs/40_run.oschema:46—RunSpec.inputs: {str: any}feeding
job_create(req: JobCreate)andrun_quick_submit(spec: RunSpec)injobs/90_rpc.oschema:49,69.Impact
Breaks every downstream consumer that pulls hero_proc
development(with current hero_libdevelopment). Concretely,hero_researcher(development→development per its branch policy) cannot build, which blocks the oschema/blueprint migration work forhome#243(seelhumina_code/hero_researcher#9).Note: the
integrationbranches of hero_lib + hero_proc build green together, so the fix is known there — but it has not reached hero_procdevelopment. Thedevelopmentbranch set is currently incoherent.Reproduce
Revs: hero_proc
14ee3ea(#140), hero_lib277299dc.Suggested fix
Replace the
{str: any}maps inJobCreate.inputs/RunSpec.inputswith a Rule-2-compliant shape (an explicit typed value struct, a scalar, or a homogeneous list — see/openrpc_principles), mirroring whatever resolution already lives onintegration. Then verify with a downstreamcargo checkand re-run lab publish CI.Resolved on
development; this is not reproducible on the current tip.Findings:
crates/hero_proc_server/oschema/jobs/30_job.oschemaand40_run.oschema, and theJobCreate.inputs/RunSpec.inputs{str: any}struct fields, are gone at HEAD. The schema was consolidated underschema/*.oschemaand no longer models inputs as{str: any}struct fields.ebf4a12 fix(jobs): model inputs as JSON string (Rule 2)(ref #143) changes the inputs to a JSON-string at the wire boundary, regenerates the spec, and updates the e2e test. This is exactly the suggested fix in this report, and it landed just before this issue was filed.openrpc_client!consumescrates/hero_proc_server/openrpc.json, not the.oschemafiles. At HEAD that spec contains zeroanytype tokens (the free-form input map renders asadditionalProperties: true, which the macro accepts), so theSchema::to_openrpcpanic described here has nothing to trip on.Latent note (not this issue):
schema/job.oschemaandschema/run.oschemastill use{str: any}as method parameters. The committedopenrpc.jsonis clean so nothing breaks today, but a future regeneration that runsvalidate_no_any_typecould resurface it. That belongs to the ongoing oschema migration, separate from this report.Closing as resolved.