The Render Returned JPEG, Not PNG
Execution·Framework·6 min read

The Render Returned JPEG, Not PNG

A render log records the format, the seconds and the dimensions, and those 3 fields are what make the second run cheaper than the first. On the Sal y Miel pack the first surprise was the bytes: the b64_json parameter came back as JPEG rather than PNG, so the 6 stills were saved with a .jpg extension, because the extension has to follow the bytes and not the name of the parameter. The second number was the rate: about 84 s per image, so the 5 frames after the money shot were fired in parallel to stay inside the limit rather than queued 1 at a time. The cover is square at 1024, the 5 story frames are 1280 by 720, and the frame is fixed before the next stage starts. The next step is written in the same file: animate the stills as keyframes in a video model, or cut them straight into the edit.

01

The Log Is The Second Deliverable

Six cinematic stills came out of 1 prompt pack, and the images were the smaller half of the output. The other half was 4 lines of log per frame: the model, the parameter shape, the seconds it took, and the exact pixel dimensions that came back. Those 4 lines are what let a second run open without 1 argument about which setting produced the good frame. Every shoot I have ever run ends with a folder of files and a note, and the note is the part that survives. In 2008 I signed a EUR 20 million personal guarantee on a company that folded on Christmas Day, and the lesson I kept was about reading the whole document rather than the summary of it: a render folder with no log is the summary, and it is the version that gets rebuilt from scratch 3 months later by somebody who was not in the room. Write the log while the job is running, not after the good frame is chosen, because the frame you keep is not the frame you will need.

02

The Extension Follows The Bytes

A parameter name describes an intent, and a byte stream describes a fact. The request asked for b64_json, and the response came back as JPEG bytes rather than PNG: 6 files with the wrong extension sitting in a folder, each one able to pass a glance and fail the next tool in the chain. The fix is 1 rule, applied without exception: read the first 4 bytes of the stream and name the file after what the header actually says. Every format carries its own signature, and it takes a fraction of a second to check. The cost of skipping that check is not the re-save. It is the 2 hours lost when a compositor, a thumbnail step or a delivery spec silently drops the files, and the probability that this lands on a Friday afternoon is not small. Entrade built 200 wood-gasification machines across the UK and Europe on the same discipline: the drawing and the finish matched, so nobody had to re-cut a delivered unit to change a label at the far end.

03

Fire The Orphans In Parallel

About 84 s per image is not a detail, it is the schedule. The money shot gets generated first and reviewed on its own, because a render that is wrong should be wrong once. The 5 frames behind it were fired in parallel inside the same limit rather than queued 1 at a time, which turns 5 sequential waits into 1 window and keeps the whole pack inside a single sitting. This is the same arithmetic that has to be done for every batch: count the units, multiply by the seconds, and compare the number against the window you actually have rather than the window you would like. I have watched a crew hold 210 energy systems across 11 countries to a single install window on that shape, the design fixed once and the finish tuned per site. A queue that has not been costed in seconds is a queue that finishes whenever it finishes, and the probability that the deadline moves is 100 per cent when nobody did the multiplication.

04

Fix The Frame Before The Next Stage

The cover came back square at 1024 and the 5 story frames came back 1280 by 720 each, and those numbers were written down before anything moved. A frame is a contract with the next stage: a square master for album art, a 16 by 9 master for a video timeline, and an exported crop for the channel that wants 9 by 16. Renders that get re-cut to change a frame are re-renders, and a re-render is the most expensive way to change a crop. So the dimension goes in the spec next to the prompt, the file names carry it, and the next stage receives what it was promised. 16 years of field work from rural Nigeria to post-conflict Serbia to Kazan to Fukushima taught me the same rule about every handover I have signed: what is not written in the spec is rebuilt by whoever is standing nearest the work, and they will rebuild it to their own convenience rather than yours.

A file that lies about its own format breaks the tool that reads it next.

05

The Pack Is The Design, The Render Is The Finish

The 6 stills came from 1 pack: a cover, an intro, a map, a reach, a bridge and a door, each with its own prompt, its own light and its own reason to exist. The pack is the design, so it gets versioned and kept. The render is the finish, so it gets re-run when the model improves without the argument starting over. Keeping those 2 things in 1 file is how a shoot becomes repeatable: the model reference sits in the pack, the prompt sits in the pack, and the log records which of it actually produced the frame that shipped. I grew up inside that split at 85 per cent scholarship to Mannes College of Music and a Carnegie Hall performance, where the score is the design and the performance is the finish, and no conductor has ever re-written the score to fix a bad night. Version the pack, date the log, and let the render be disposable.

06

Read The Log Before You Spend Again

The last step costs 5 minutes and saves the next render. Open the log, read the format column, the seconds column and the dimension column, and decide 1 of 2 routes out loud: animate these stills as keyframes in a video model, or cut them straight into the edit against the treatment. Both were written into the file on the day, which is why the decision is a 5 minute read rather than a fresh round of tests. The same habit held through a 2013 Cyprus bail-in that took my savings: the positions that survived were the ones written down, priced and re-read, and the ones that hurt were the ones carried on memory. A render log that records the format, the seconds and the pixels is the thing that separates a second run from a second guess, and the probability that the second guess is cheaper is 0.

The extension follows the bytes, never the name of the parameter.

The map is dead. Nobody told you.

Bali State of Mind is the survival guide for the collapse of everything you were taught to believe.

Beyond this book

Building the same thing somewhere else.

Julien Uhlig is available for advisory work, board seats and media appearances. Write to media@exventure.co.

The academy that trains the operators, across every company in the group, is EX Epic Academy - 25,000 applications, 25 seats per cohort, 210 alumni across 19 countries. academy.epicsolutiongroup.com

EX-AI Summit 2026

18-20 November. Online, Las Palmas, Bali.

Three days on what happens to work, capital and institutions when the map stops matching the ground. Seats are limited by cohort.

ex-aisummit.com →