Triggers run the published version, not the draft
POST /flows/:name/run on the flow server loaded the draft file directly, with no version lookup. So every off-box caller ignored published versions — external webhooks, HTTP triggers, and dashboard runs all executed whatever was last written to workspace/flows/<name>.json. Only the in-gateway flow_run tool honored .clawflow/versions/.
Net effect: flow_publish was a no-op for the paths that actually fire in production, and editing a draft silently changed live behavior.
loadFlow now resolves exactly like flow_run: latest published version first, draft only when nothing is published. The fallback keeps unpublished flows working, so no existing trigger breaks.
startFlowServertakesworkspaceexplicitly (defaults to$OPENCLAW_WORKSPACE→ cwd, as before); the plugin passes the same workspace itsflow_*tools use, so the two can't drift apart again.- The run log records which definition ran (
v3vsdraft (no published versions)).
Full detail: #51