Skip to content

fix(image_gen): Grok Imagine 2.0 upscale default no longer breaks main CI (opt-in policy) - #89933

Merged
ethernet8023 merged 1 commit into
mainfrom
fix/grok-imagine-upscale-optin
Aug 19, 2026
Merged

fix(image_gen): Grok Imagine 2.0 upscale default no longer breaks main CI (opt-in policy)#89933
ethernet8023 merged 1 commit into
mainfrom
fix/grok-imagine-upscale-optin

Conversation

@teknium1

Copy link
Copy Markdown
Contributor

Summary

Main's test suite is red: test_upscale_defaults_are_all_off fails on every PR because the Grok Imagine Image 2.0 catalog entry (ceabb03) shipped with upscale: True, violating the Aug 2026 opt-in-only upscaling policy (f06c415). This flips it to False with a policy comment.

Changes

  • tools/image_generation_tool.py: Grok Imagine 2.0 upscale default True → False (opt-in only)

Validation

Before After
tests/tools/test_image_generation.py 1 failed (upscale default) 51 passed
Every PR's CI slice 12/12 red via main unblocked

Infographic

Infographic generation unavailable this run (FAL balance exhausted). Will attach on regeneration.

…in policy restored

ceabb03 added the Grok Imagine Image 2.0 catalog entry with upscale=True,
violating the Aug 2026 opt-in-only upscaling policy (f06c415) and breaking
test_upscale_defaults_are_all_off on main, which reddened every PR's slice
12/12.
@github-actions

github-actions Bot commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

૮ >ﻌ< ა ci review

ran on 07f85f3 — fix(image_gen): Grok Imagine 2.0 no longer upscales by defau

⚠️ Warnings

OSV vulnerability scan · View job

7 known vulnerabilities found in pinned dependencies.

How to fix:

Review the findings in the Security tab. Update the affected dependencies if a patched version is available.


debug info

CI timings

CI timings · View report · View job

Wall time 3m43s vs 4m4s (-8.6%). 12 job(s) slower, 11 faster, 1 unchanged.

  • Python tests / Run tests slice 3/12: +45.0s
  • Python tests / Run tests slice 4/12: -42.0s
  • Python tests / Run tests slice 12/12: +29.0s
  • Python tests / Run tests slice 10/12: -29.0s
  • Python tests / Run tests slice 2/12: +25.0s

@Shotflame

Copy link
Copy Markdown

Code Review — PR #89933 (Hermes review lane t_fea1b69f)

Verdict: Approve (token is read-only here, so posting as comment; a maintainer with approval rights should confirm the formal approve).

Verified live against current main (HEAD 13ce0c5c):

Correctness — Diff is the exact minimal flip: tools/image_generation_tool.py:688, upscale: True -> False (+ policy comment). PR base.sha == current main HEAD (applies cleanly, mergeable_state: clean). This is the only upscale: True left in the FAL catalog on main, so it restores the catalog-wide opt-in-only upscaling policy (Aug 2026, f06c415).

CI — Head 07f85f3 is green: All required checks pass = success; Python tests 12/12 slices success; supply-chain + OSV success. The enforcer test_upscale_defaults_are_all_off (tests/tools/test_image_generation.py:60) asserts every FAL entry has upscale is False — passes by construction now.

Conventions — Policy comment explains the why and matches catalog inline style + module/test docstring rationale verbatim. No config/schema/docs drift. Per-call upscale: true still works (schema unchanged).

Non-blocking — duplicates to consolidate: four near-identical open PRs by teknium1 fix this same line (created within ~12 min): #89933 (this one), #89935, #89939, #89946. Recommend maintainers merge ONE and close the other three as duplicates to avoid cherry-pick conflicts.


Reviewed by Hermes Agent (reviewer lane).

@jackulau

Copy link
Copy Markdown
Contributor

Not opening a fifth PR for this. #89933, #89935, #89939 and #89946 are the same one-line flip, and this one is the one I would take: the other three replace the comment, this one leaves the policy in the file, which is what the next catalog addition will actually read. Two things worth recording on the thread that I do not think are in any of the four.

Every open PR in the repo is red on this right now, not just this file's

tests/tools/test_image_generation.py::TestFalCatalog::test_upscale_defaults_are_all_off is in Run tests slice 12/12, which runs on every PR regardless of what it touches. So the failure is currently attached to unrelated work across the whole queue. I hit it on my own #90001 (a context-compressor change that does not import this module) and Kewe63's #89965 is red the same way. Anyone triaging a red X on a Python PR opened in the last few hours is looking at this line.

Which makes this worth merging ahead of the other three rather than picking whichever is tidiest.

Nobody was careless: it is a stale-green merge, and the timeline is exact

Both halves passed CI honestly, and neither PR could see the other because they do not touch a common line.

2026-08-16 05:09Z  #87465 last commit  (adds the catalog entry, upscale=True)
                   -> CI green against a base with no such test
2026-08-16 18:12Z  #87883 merges       (adds test_upscale_defaults_are_all_off)
2026-08-19 08:58Z  #87465 merges       (3 days later, still showing the 05:09Z green)

gh pr view 87465 --json statusCheckRollup reports zero failures to this minute, because those checks describe a base that stopped existing 13 hours after they ran. The merge was green by the letter and red in fact.

This is the failure mode a required-branches-up-to-date rule or a merge queue exists to catch, and it is worth deciding which, because the shape recurs cheaply: a policy test and the entry that violates it are textually disjoint by construction. test_upscale_defaults_are_all_off iterates FAL_MODELS precisely so it covers entries that do not exist yet, which is the right design and also exactly why a stale base cannot see it. Every future catalog addition is the same race. The same is true of the sibling invariant tests in that class.

If a merge queue is too heavy, the cheap 80% is requiring the branch to be current for the Python tests job only. I am happy to open that as a separate workflow PR if it would be taken; it is a .github/workflows change and a maintainer decision, so I am asking rather than sending it.

One small thing on the entry itself

The # 1k native is sub-2MP note that this PR moves into the policy comment is a real observation and it is the only entry in the catalog for which it is true. If the intent behind upscale: True was that Grok Imagine 2.0 needs the upscaler to be useful at default settings rather than that it should chain one unasked, that is a caller-side default (the image_gen invocation), not a catalog default, and it survives this fix. Worth a line in the model's docs if so, otherwise the next person to read sub-2MP will try the same thing again.

Copy link
Copy Markdown
Contributor

Exact-head verification — clear to merge

Verified at head 07f85f3f83ba2764a3f3333982b69f35f48caedc against current main 13ce0c5c675e843af70d19c9e5144249cd51c8d1.

The implementation is the correct canonical repair: it changes the sole policy-violating FAL catalog default from upscale: True to False, preserves explicit per-call upscale=true, and leaves the Aug 2026 opt-in rationale beside the entry. The head is mergeable, and its CI, Docker, and Nix runs all completed successfully. No code blocker found.

The concealed shape is larger than the one-line diff:

  1. Stale-green integration: fix(image_gen): disable default-on upscaling — opt-in only #87883 merged the future-facing all-off invariant after feat(image-gen): add Grok Imagine Image 2.0 to the FAL image catalog #87465's checks had run; feat(image-gen): add Grok Imagine Image 2.0 to the FAL image catalog #87465 then merged three days later without being retested against that newer base. Each branch was locally green, but their composition was red.
  2. Unleased swarm fan-out: fix(image_gen): Grok Imagine 2.0 upscale default no longer breaks main CI (opt-in policy) #89933, Main is green again: FAL Grok 2.0 upscale flag follows the opt-in policy #89935, fix(image-gen): Grok Imagine 2.0 no longer defaults upscale on — unbreaks main CI #89939, fix(image): keep grok upscale opt-in #89946, and fix(tools): grok-imagine must not default upscale on (Aug 2026 policy) #90067 independently opened the same repair. Duplicate detection happened only after PR creation, so it did not protect queue topology or attribution.
  3. Fix diffusion into unrelated work: WIP(mcp): dual-era hardening — bounded -32602 proof probe pending #88875 and feat(discord): outbound reaction actions for REST v10 #86419 currently carry this same hunk inside MCP and Discord changes solely to survive the shared-main failure; fix(gateway): canonical routing identity — claimant-generation object not published #89252 has already removed its temporary copy.

Recommended graph operation:

  1. Merge fix(image_gen): Grok Imagine 2.0 upscale default no longer breaks main CI (opt-in policy) #89933 first.
  2. Close Main is green again: FAL Grok 2.0 upscale flag follows the opt-in policy #89935, fix(image-gen): Grok Imagine 2.0 no longer defaults upscale on — unbreaks main CI #89939, and fix(image): keep grok upscale opt-in #89946 as duplicates; fix(tools): grok-imagine must not default upscale on (Aug 2026 policy) #90067 is now closed as superseded.
  3. Rebase WIP(mcp): dual-era hardening — bounded -32602 proof probe pending #88875 and feat(discord): outbound reaction actions for REST v10 #86419 and drop the hitchhiking image-generation hunk so those PRs return to their actual ownership boundaries.

The durable prevention has two independent halves: require the Python-test result to be current with the merge base (merge queue or equivalent up-to-date gate), and add a pre-open defect claim keyed by repository/base, failing invariant, and patch fingerprint so parallel agents converge on one canonical owner before branches and PRs fan out.

@ethernet8023
ethernet8023 merged commit 9b5e7a3 into main Aug 19, 2026
50 checks passed
@ethernet8023
ethernet8023 deleted the fix/grok-imagine-upscale-optin branch August 19, 2026 16:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

P3 Low — cosmetic, nice to have provider/xai xAI (Grok) tool/vision Vision analysis and image generation type/bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants