Only what is finished leaves the building
A generation session easily produces thirty files of which one survives. Those thirty do not belong in a folder shared with other people.
Two stores
All generations, variants, rejected results, intermediate versions and thumbnails stay in the application's working store. Only approved final versions go to the shared folder. Rejected variants that are unused and unmarked after a configurable number of days are cleaned up, with a warning beforehand. The publication store is never cleaned up automatically.
Naming and sidecar
A published file is called <brand>_<category path>_<asset name>_v<version>_<width>x<height>.<extension>: lower case letters, digits, hyphens and underscores only. No spaces, no accents, no punctuation, because these files travel to a web server, to a factory and to a printer, and each of the three trips over something different. Next to every file sits an identically named .json holding the full provenance, so a file that gets separated from the application is still explainable.
Publishing is idempotent and verified
- You first see a preview: which files land where, what is new, what replaces an existing version and what stays unchanged. Nothing happens until you confirm it.
- Running the same publication twice yields exactly the same folder; the application recognises from the checksum that a file is already right and skips it.
- Nothing is ever written straight into the shared folder while generating: write out completely to a temporary place first, then move in one go. Otherwise a cloud folder synchronises half files.
- Conflicted copies created by the synchronisation are reported — never silently ignored and never automatically deleted.
- Afterwards the application checks that the files really are on disk at the expected size. A publication that the application calls a success but that is not on disk is the fault nobody discovers until it is too late.
Superseded versions
If version 3 is approved while version 2 is already published, v3 appears in the folder and v2 moves to the superseded folder under the same sub-path. Nothing is ever thrown away.