Skip to content

[Platform] Fix asynchronous job follow-ups from #2408 - #2555

Merged
chr-hertel merged 1 commit into
symfony:mainfrom
chr-hertel:platform-async-job-followups
Sep 21, 2026
Merged

chr-hertel merged 1 commit into
symfony:mainfrom
chr-hertel:platform-async-job-followups

Conversation

@chr-hertel

@chr-hertel chr-hertel commented Sep 20, 2026 •

Copy link
Copy Markdown
Member
Q A
Bug fix? no
New feature? no
Docs? yes
Issues -
License MIT

Follow-ups on #2408, found while reviewing it after the merge. Ships with #2408 in 0.14, so nothing
released changes and no UPGRADE.md entry is added — the existing ones are corrected to describe
what will actually ship.

  • MiniMax answers a healthy poll with status_code: 0 and status_msg: "success", which was read as a failure message, so every running job carried "success" in JobStatus::getError(). Verified against the live API.
  • A query MiniMax rejects with HTTP 200 carries the reason in base_resp and no state at all, which mapped to UNKNOWN (non-terminal) — the runner then polled it for the whole budget, up to ten minutes for a video handle. It now ends the job, while a state merely spelled in a way the bridge does not know stays non-terminal.
  • JobRunner turned the budget into a poll count, so the requests themselves were free: maxDuration: 600 meant 600 requests plus 599 sleeps. It now waits against a clock deadline.
  • JobClientInterface::supports() had no caller anywhere; the runner asks before polling.
  • MiniMaxResultConverter held a MiniMaxJobClient only to read a name off it, building one with new EventSourceHttpClient() and an empty API key when given none. It takes the name; MiniMaxJobClient::createHandle() and its provider argument go.
  • Docs: the autowiring example used $minimaxJobClient, but the registered alias is JobClientInterface $minimax, so it never autowired — checked by compiling a container. Also a nullable getProvider() passed to ContainerInterface::get(), an unassigned $id, and examples using createProvider() where every other MiniMax example uses createPlatform().
  • The 0.14 rebase had replaced the CHANGELOG heading underline with == in two files; examples/minimax/.gitignore missed the artifacts the new examples write.

All nine MiniMax examples were run against the live API: async speech (9s, real mp3 out of the tar),
video generation (83s, 792 KB mp4) and the resume flow across four processes from the stored handle.

🤖 Generated with Claude Code

@carsonbot carsonbot added Bug Something isn't working Status: Needs Review Platform Issues & PRs about the AI Platform component labels Sep 20, 2026
@chr-hertel
chr-hertel force-pushed the platform-async-job-followups branch 3 times, most recently from 07cebd2 to 68bd7fa Compare September 20, 2026 23:33
@chr-hertel
chr-hertel force-pushed the platform-async-job-followups branch from 68bd7fa to e7af258 Compare September 21, 2026 00:19
@chr-hertel
chr-hertel merged commit 356f1ca into symfony:main Sep 21, 2026
@chr-hertel
chr-hertel deleted the platform-async-job-followups branch September 21, 2026 00:20
chr-hertel added a commit to chr-hertel/ai that referenced this pull request Sep 21, 2026
chr-hertel added a commit to chr-hertel/ai that referenced this pull request Sep 22, 2026
chr-hertel added a commit to chr-hertel/ai that referenced this pull request Sep 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Bug Something isn't working Platform Issues & PRs about the AI Platform component Status: Needs Review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants