Summary
The deployment flow requires two separate commands to get the program_id:
spel deploy my_program.bin # deploys, prints tx hash but NOT program_id
spel program-id my_program.bin # separate call to extract the id
This is fragile in CI: if the binary changes between the two calls the IDs diverge.
The deploy command has already validated the binary — it should print the program_id
as part of its output.
Suggested fix
Have spel deploy output a structured result including both tx_hash and program_id:
Deployed program
tx_hash: 0xabc...
program_id: 7ab2ad5d...
or as --format json:
{"tx_hash": "0xabc...", "program_id": "7ab2ad5d..."}
This would let CI scripts do a single spel deploy --format json | jq -r .program_id
instead of a two-step build → program-id pipeline.
Current CI workaround (LP-0017)
- name: Extract program_id
run: |
HEX=$(spel program-id \
methods/guest/target/riscv32im-risc0-zkvm-elf/docker/chronicle_registry.bin \
--format hex)
echo "PROGRAM_ID=$HEX" >> $GITHUB_ENV
Found while building an LP-0017 Logos Lambda-Prize submission against LEZ rc5 (logos-execution-zone @27360cb7) with lgs/logos-scaffold @9e4d148d. Happy to provide a minimal repro or PR.
Summary
The deployment flow requires two separate commands to get the program_id:
This is fragile in CI: if the binary changes between the two calls the IDs diverge.
The
deploycommand has already validated the binary — it should print the program_idas part of its output.
Suggested fix
Have
spel deployoutput a structured result including bothtx_hashandprogram_id:or as
--format json:{"tx_hash": "0xabc...", "program_id": "7ab2ad5d..."}This would let CI scripts do a single
spel deploy --format json | jq -r .program_idinstead of a two-step build → program-id pipeline.
Current CI workaround (LP-0017)
Found while building an LP-0017 Logos Lambda-Prize submission against LEZ rc5 (
logos-execution-zone@27360cb7) withlgs/logos-scaffold@9e4d148d. Happy to provide a minimal repro or PR.