Skip to content

price_oracle is systematically omitted from build/release/monitoring tooling (Makefile, wasm-size.yml, record-wasm-hashes.sh, health-check.sh) #513

Description

@OxDev-max

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_registryprice_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

  1. git checkout -b fix/price-oracle-tooling-coverage
  2. Add price_oracle to Makefile's CONTRACTS variable.
  3. Add price_oracle to all three CONTRACTS lists in .github/workflows/wasm-size.yml.
  4. Add "price_oracle" to the CONTRACTS array in scripts/record-wasm-hashes.sh.
  5. 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).
  6. Cross-check scripts/ttl_keeper.sh and scripts/check_state_drift.sh for the same omission
    pattern and fix if present.
  7. Run make sizes and make build-optimized locally to confirm price_oracle's WASM is now
    included in all reports.

Acceptance Criteria

  • make sizes reports a size for price_oracle
  • wasm-size.yml's PR comment/report table includes a price_oracle row
  • record-wasm-hashes.sh records a hash for price_oracle
  • deploy.sh's generated manifest JSON includes a price_oracle entry with address and WASM hash
  • health-check.sh's output JSON includes at least the price_oracle contract address and admin

Guidelines: PR description must include Closes #<issue-number>.
Complexity: High (200 points)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions