Files
esh-pfi-infrastructure/docs/asset-engine
vh 7d0a9fa09b catalog: ace-step v3 — fix scheduler_type and cfg_type enum values
Smoke testing in the asset_engine consumer surfaced an
UnboundLocalError 500 from ace-step (althing thread
01KRCJF7NGMXYE9F62Q1A6KFD4 msg 3). Root cause: this catalog had
invented enum values for scheduler_type and cfg_type that don't
exist in the upstream pipeline.

Read pipeline_ace_step.py inside the running container:

  scheduler_type dispatch:
    if  == "euler":    scheduler = FlowMatchEulerDiscreteScheduler(...)
    elif== "heun":     scheduler = FlowMatchHeunDiscreteScheduler(...)
    elif== "pingpong": scheduler = FlowMatchPingPongScheduler(...)
    # no else  -> "linear" / "squared" / "sqrt" leave scheduler unbound

  cfg_type dispatch:
    accepts: apg | cfg | cfg_star

Catalog had:
  scheduler_type: [linear, squared, sqrt] / default linear   <- all invalid
  cfg_type:       [none, cfg, cfg_rw]     / default cfg       <- only cfg works

Fixed:
  scheduler_type: [euler, heun, pingpong] / default euler
  cfg_type:       [apg, cfg, cfg_star]    / default cfg

Bumped ace-step version 2 -> 3. Existing assets generated under v2
with scheduler_type=linear cannot reproduce (the value is now invalid);
v2 assets with the accidentally-valid cfg_type=cfg + a corrected
scheduler can be regenerated under v3 by mapping linear -> euler.

catalog_version stays at 1 (no schema change).

Verified end-to-end against live ace-step on irv-ml1:
  POST /generate { scheduler_type: euler, cfg_type: cfg, ... }
  -> 200, output_path returned, ~8s wall time

Lesson: OpenAPI introspection isn't enough for accurate catalog
authoring. Upstream OpenAPI returns bare `string` for both fields.
Reading the actual dispatch code is the only way to capture the
allowed values. Will sweep the other 11 service entries against
their implementations before P2 (scale to all services) lands.
2026-05-11 15:41:03 -07:00
..