Description
Across the operational tooling, price_oracle is the one contract that's consistently
forgotten, even though it's a full workspace member and is deployed by deploy.sh:
Makefile:8: CONTRACTS := access_control invoice_nft marketplace financing_pool treasury risk_registry
— price_oracle is absent, so make build-optimized never runs stellar contract optimize
on it, and make sizes never reports its size.
.github/workflows/wasm-size.yml (lines 50, 102, 131): the same 6-contract list is hardcoded
three times — price_oracle's WASM size is never tracked or regression-checked, unlike the
other 6 contracts.
scripts/record-wasm-hashes.sh (lines 48-55): the CONTRACTS bash array also lists only the
same 6 contracts — price_oracle's release hash is never recorded.
scripts/health-check.sh: queries access_control, invoice_nft, marketplace,
financing_pool, treasury, risk_registry — price_oracle's admin, or whether its prices
are stale, is never surfaced in the health JSON.
scripts/deploy.sh's own deployment-manifest JSON (lines 224-264) computes hashes for and
writes an entry for 6 contracts — price_oracle, despite being deployed and initialized
earlier in the very same script, is never added to "contracts": {...} at all.
By contrast, .github/workflows/interface-compat.yml (lines 52, 73, 92) does include
price_oracle in its CONTRACTS list — proving the omission elsewhere is inconsistency, not a
deliberate exclusion.
Requirements and Context
This means price_oracle — the contract responsible for the entire multi-currency conversion
feature — silently ships without WASM-size regression protection, without a recorded release
hash, without an address recorded in the deployment manifest (making it nearly impossible for
scripts/interact.sh, scripts/ttl_keeper.sh, or scripts/check_state_drift.sh to reference
it after deployment), and without any health/monitoring signal. Fixing this requires touching
every one of these 5 files consistently.
Suggested Execution
git checkout -b fix/price-oracle-tooling-coverage
- Add
price_oracle to Makefile's CONTRACTS variable.
- Add
price_oracle to all three CONTRACTS lists in .github/workflows/wasm-size.yml.
- Add
"price_oracle" to the CONTRACTS array in scripts/record-wasm-hashes.sh.
- Add
price_oracle address/hash/admin/pause-adjacent fields to scripts/deploy.sh's
manifest output and to scripts/health-check.sh's aggregated JSON (e.g., surfacing whether
its currently-registered prices are stale via a lightweight get_price probe for a known pair).
- Cross-check
scripts/ttl_keeper.sh and scripts/check_state_drift.sh for the same omission
pattern and fix if present.
- Run
make sizes and make build-optimized locally to confirm price_oracle's WASM is now
included in all reports.
Acceptance Criteria
Guidelines: PR description must include Closes #<issue-number>.
Complexity: High (200 points)
Description
Across the operational tooling,
price_oracleis the one contract that's consistentlyforgotten, even though it's a full workspace member and is deployed by
deploy.sh:Makefile:8:CONTRACTS := access_control invoice_nft marketplace financing_pool treasury risk_registry—
price_oracleis absent, somake build-optimizednever runsstellar contract optimizeon it, and
make sizesnever reports its size..github/workflows/wasm-size.yml(lines 50, 102, 131): the same 6-contract list is hardcodedthree times —
price_oracle's WASM size is never tracked or regression-checked, unlike theother 6 contracts.
scripts/record-wasm-hashes.sh(lines 48-55): theCONTRACTSbash array also lists only thesame 6 contracts —
price_oracle's release hash is never recorded.scripts/health-check.sh: queriesaccess_control,invoice_nft,marketplace,financing_pool,treasury,risk_registry—price_oracle's admin, or whether its pricesare stale, is never surfaced in the health JSON.
scripts/deploy.sh's own deployment-manifest JSON (lines 224-264) computes hashes for andwrites an entry for 6 contracts —
price_oracle, despite being deployed and initializedearlier in the very same script, is never added to
"contracts": {...}at all.By contrast,
.github/workflows/interface-compat.yml(lines 52, 73, 92) does includeprice_oraclein itsCONTRACTSlist — proving the omission elsewhere is inconsistency, not adeliberate exclusion.
Requirements and Context
This means
price_oracle— the contract responsible for the entire multi-currency conversionfeature — silently ships without WASM-size regression protection, without a recorded release
hash, without an address recorded in the deployment manifest (making it nearly impossible for
scripts/interact.sh,scripts/ttl_keeper.sh, orscripts/check_state_drift.shto referenceit after deployment), and without any health/monitoring signal. Fixing this requires touching
every one of these 5 files consistently.
Suggested Execution
git checkout -b fix/price-oracle-tooling-coverageprice_oracletoMakefile'sCONTRACTSvariable.price_oracleto all threeCONTRACTSlists in.github/workflows/wasm-size.yml."price_oracle"to theCONTRACTSarray inscripts/record-wasm-hashes.sh.price_oracleaddress/hash/admin/pause-adjacent fields toscripts/deploy.sh'smanifest output and to
scripts/health-check.sh's aggregated JSON (e.g., surfacing whetherits currently-registered prices are stale via a lightweight
get_priceprobe for a known pair).scripts/ttl_keeper.shandscripts/check_state_drift.shfor the same omissionpattern and fix if present.
make sizesandmake build-optimizedlocally to confirmprice_oracle's WASM is nowincluded in all reports.
Acceptance Criteria
make sizesreports a size forprice_oraclewasm-size.yml's PR comment/report table includes aprice_oraclerowrecord-wasm-hashes.shrecords a hash forprice_oracledeploy.sh's generated manifest JSON includes aprice_oracleentry with address and WASM hashhealth-check.sh's output JSON includes at least theprice_oraclecontract address and adminGuidelines: PR description must include
Closes #<issue-number>.Complexity: High (200 points)