{"course":{"slug":"ai-images","title":"Image Generation, in Practice","url":"https://addaly.com/learn/ai-images","level":"beginner","track":"create"},"lesson":{"slug":"naming-and-versioning","title":"A file scheme that survives the revision round","url":"https://addaly.com/learn/ai-images/naming-and-versioning","position":59,"of":69,"minutes":7,"answer":"A naming convention that encodes project, frame, version and status lets you find the approved file in seconds six months later, and its absence is what turns a small revision into an afternoon.","keyIdea":"A naming convention that encodes project, frame, version and status lets you find the approved file in seconds six months later, and its absence is what turns a small revision into an afternoon."},"body":{"format":"markdown","text":"## The situation it prevents\n\nThree weeks after delivery, a client asks for frame seven with the warmer grade \"like you showed us the first time\". Your folder contains `hero_final.png`, `hero_final_v2.png`, `hero_FINAL_new.png`, `hero7.png`, `hero7 copy.png` and `Untitled-3.xcf`. Finding the right one takes forty minutes and you are not certain when you stop.\n\nThis is entirely avoidable and the fix takes no discipline once it is a habit.\n\n## A scheme that works\n\n```text\n<project>-<frame>-<stage>-v<nn>[-<status>].<ext>\n\nspring26-07-gen-v01.png          raw generation, metadata intact\nspring26-07-gen-v02.png          second base render\nspring26-07-repair-v01.xcf       layered repair file\nspring26-07-final-v03-APPROVED.jpg\nspring26-07-final-v04.jpg\n```\n\nFour rules make it work:\n\n1. **Never overwrite.** New version, new number. Disk is cheaper than your time.\n2. **Never use the word \"final\" without a version number.** It is the most broken word in creative work.\n3. **Mark approval in the filename.** `APPROVED` is searchable across the whole disk in one command.\n4. **Date the folder, not every file.** `2026-03-spring-campaign/` puts the date where it is useful.\n\n## The folder structure\n\n```text\nspring26/\n  brief.md                    the spec, with its change log\n  ENVIRONMENT.txt             interface commit, package versions\n  models.txt                  every model with its hash\n  system.md                   the five constants\n  refs/                       the labelled reference pack\n  product/                    photographed cut-outs\n  gen/                        raw generations, never edited\n  work/                       layered editor files\n  deliver/                    only files actually sent\n```\n\nTwo rules make it survive: `gen/` is read-only in practice, and `deliver/` contains only what was delivered. If those hold, the folder answers any question anybody asks later.\n\n## The seed log\n\nAlongside it, one plain text file per project:\n\n```text\nframe 07  courtyard\n  base      spring26-07-gen-v02   seed 418 / dpmpp_2m karras / 26 / cfg 5.5\n            model realvis-xl-v5 (a1b2c3d4)\n            lora  char-meera-e06 @ 0.75\n  repair    hands x2, doorway, bangle\n  grade     warm curve + grain preset \"campaign-a\"\n  sent      v03 on 18 Mar, APPROVED 19 Mar\n  note      client preferred warmer grade over v02\n```\n\nTen lines per frame. Written as you go, it costs about a minute; reconstructed later, it costs an afternoon and is usually impossible.\n\nThat last line is the one that pays off most. Three weeks later, \"client preferred warmer grade\" is exactly the fact you need and exactly the fact nobody remembers.\n\n## What to keep and what to delete\n\nKeep: every approved file, every layered work file, the raw generation behind every approved image, the brief, the system, the logs, the environment and model files, and any community model a delivered image depended on.\n\nDelete without hesitation: the other 400 exploration renders, superseded versions more than two rounds old, intermediate upscales. These are recoverable from the seed log if you ever need them, which you will not.\n\nA hero image project typically leaves 200 to 400 MB worth keeping, once the exploration is cleared. That fits any backup.\n\n## The honest limit\n\nNone of this survives if it is not automatic, and a scheme that requires thought at every save will be abandoned by Thursday. Make it mechanical: set the interface's output template once so generations are named correctly without you doing anything, and keep the folder structure as a template you copy at the start of each job.\n\nThe measure of whether it works is a single question: **can you find the approved file for frame seven in under thirty seconds, six months from now?** If yes, the scheme is adequate however untidy it looks. If no, no amount of elegance in the naming convention is helping you.\n\n## Setting the output template once\n\nMost interfaces let you control how generated files are named, and configuring it is a five-minute job that removes the problem at source.\n\nIn A1111 and Forge the setting is under output filename patterns, and something like this is useful:\n\n```text\n[datetime<%Y%m%d>]-[seed]-[model_name]\n```\n\nIn ComfyUI the Save Image node takes a filename prefix, so set it per project (`spring26-07`) and every render from that graph is already labelled with the frame it belongs to.\n\nThe point is that a filename produced automatically is always correct, and one you type at save time is correct until the afternoon you are tired.\n\n## Version numbers the client can use\n\nUse the same version number in the filename and in the message you send. \"Attached: v03\" and a file called `spring26-07-final-v03.jpg` means their reply of \"v03 is approved, but can we see v02's grade again\" is unambiguous.\n\nClients will otherwise say \"the second one you sent\", which is a description of your outbox rather than of a file, and reconstructing what that was takes longer than it should.\n\nTwo further habits that cost nothing. Never reuse a version number, even for a file you sent and immediately replaced: go to v04. And never send a file with `copy` or a space-number suffix in its name, because whatever you send is what they will quote back at you."},"check":{"question":"What is the practical test of whether a file naming and folder scheme is good enough?","options":[{"text":"Whether every file in the project can be traced back to the generation parameters that produced it through the recorded metadata.","correct":false,"tempting":"Useful for reproduction and not the daily need; most revision requests are answered by locating a file, not by regenerating one."},{"text":"Whether the approved file for a given frame can be located in under thirty seconds several months later.","correct":true},{"text":"Whether the structure is consistent enough that another person could take over the project without being given any explanation of it.","correct":false,"tempting":"A worthwhile property, and handover is rare compared with the constant need to find your own approved files quickly."},{"text":"Whether every intermediate version has been retained, so that any earlier state of the work can be restored if a client changes their mind.","correct":false,"tempting":"Keeping everything makes retrieval harder rather than easier; the scheme works by making the important files findable, not by preserving all of them."}]},"prev":{"slug":"a-visual-system-across-a-set","title":"Five constants that do more than the face","url":"https://addaly.com/learn/ai-images/a-visual-system-across-a-set"},"next":{"slug":"the-campaign-of-twelve","title":"A worked run, with the budget and the failure","url":"https://addaly.com/learn/ai-images/the-campaign-of-twelve"},"authorship":"Founder and series editor: Dr Mustafa Mun. Written by AI models to a written standard. Exam keys checked blind by a second model: 3,665 of 3,666 agreed. Academic review invited.","review":{"status":"Draft, open for academic review"},"cite":"Addaly (2026) 'A file scheme that survives the revision round', in Image Generation, in Practice. Edited by M. Mun. Addaly. Available at: https://addaly.com/learn/ai-images/naming-and-versioning (Accessed: 13 October 2026).","licence":{"name":"CC BY-NC-SA 4.0","url":"https://creativecommons.org/licenses/by-nc-sa/4.0/"},"reader":{"schema":1,"title":"A file scheme that survives the revision round","courseTitle":"Image Generation, in Practice","module":{"index":6,"slug":"consistency","title":"The same thing, twelve times"},"answer":null,"keyIdea":"A naming convention that encodes project, frame, version and status lets you find the approved file in seconds six months later, and its absence is what turns a small revision into an afternoon.","hero":{"kind":"plate","image":null,"alt":null,"caption":null},"blocks":[{"t":"h2","id":"the-situation-it-prevents","runs":[{"text":"The situation it prevents"}]},{"t":"p","runs":[{"text":"Three weeks after delivery, a client asks for frame seven with the warmer grade “like you showed us the first time”. Your folder contains "},{"text":"hero_final.png","code":true},{"text":", "},{"text":"hero_final_v2.png","code":true},{"text":", "},{"text":"hero_FINAL_new.png","code":true},{"text":", "},{"text":"hero7.png","code":true},{"text":", "},{"text":"hero7 copy.png","code":true},{"text":" and "},{"text":"Untitled-3.xcf","code":true},{"text":". Finding the right one takes forty minutes and you are not certain when you stop."}]},{"t":"p","runs":[{"text":"This is entirely avoidable and the fix takes no discipline once it is a habit."}]},{"t":"h2","id":"a-scheme-that-works","runs":[{"text":"A scheme that works"}]},{"t":"code","lang":"text","label":"Text","text":"<project>-<frame>-<stage>-v<nn>[-<status>].<ext>\n\nspring26-07-gen-v01.png          raw generation, metadata intact\nspring26-07-gen-v02.png          second base render\nspring26-07-repair-v01.xcf       layered repair file\nspring26-07-final-v03-APPROVED.jpg\nspring26-07-final-v04.jpg"},{"t":"p","runs":[{"text":"Four rules make it work:"}]},{"t":"ol","start":1,"items":[[{"text":"Never overwrite.","b":true},{"text":" New version, new number. Disk is cheaper than your time."}],[{"text":"Never use the word “final” without a version number.","b":true},{"text":" It is the most broken word in creative work."}],[{"text":"Mark approval in the filename.","b":true},{"text":" "},{"text":"APPROVED","code":true},{"text":" is searchable across the whole disk in one command."}],[{"text":"Date the folder, not every file.","b":true},{"text":" "},{"text":"2026-03-spring-campaign/","code":true},{"text":" puts the date where it is useful."}]]},{"t":"h2","id":"the-folder-structure","runs":[{"text":"The folder structure"}]},{"t":"code","lang":"text","label":"Text","text":"spring26/\n  brief.md                    the spec, with its change log\n  ENVIRONMENT.txt             interface commit, package versions\n  models.txt                  every model with its hash\n  system.md                   the five constants\n  refs/                       the labelled reference pack\n  product/                    photographed cut-outs\n  gen/                        raw generations, never edited\n  work/                       layered editor files\n  deliver/                    only files actually sent"},{"t":"p","runs":[{"text":"Two rules make it survive: "},{"text":"gen/","code":true},{"text":" is read-only in practice, and "},{"text":"deliver/","code":true},{"text":" contains only what was delivered. If those hold, the folder answers any question anybody asks later."}]},{"t":"h2","id":"the-seed-log","runs":[{"text":"The seed log"}]},{"t":"p","runs":[{"text":"Alongside it, one plain text file per project:"}]},{"t":"code","lang":"text","label":"Text","text":"frame 07  courtyard\n  base      spring26-07-gen-v02   seed 418 / dpmpp_2m karras / 26 / cfg 5.5\n            model realvis-xl-v5 (a1b2c3d4)\n            lora  char-meera-e06 @ 0.75\n  repair    hands x2, doorway, bangle\n  grade     warm curve + grain preset \"campaign-a\"\n  sent      v03 on 18 Mar, APPROVED 19 Mar\n  note      client preferred warmer grade over v02"},{"t":"p","runs":[{"text":"Ten lines per frame. Written as you go, it costs about a minute; reconstructed later, it costs an afternoon and is usually impossible."}]},{"t":"p","runs":[{"text":"That last line is the one that pays off most. Three weeks later, “client preferred warmer grade” is exactly the fact you need and exactly the fact nobody remembers."}]},{"t":"h2","id":"what-to-keep-and-what-to-delete","runs":[{"text":"What to keep and what to delete"}]},{"t":"p","runs":[{"text":"Keep: every approved file, every layered work file, the raw generation behind every approved image, the brief, the system, the logs, the environment and model files, and any community model a delivered image depended on."}]},{"t":"p","runs":[{"text":"Delete without hesitation: the other 400 exploration renders, superseded versions more than two rounds old, intermediate upscales. These are recoverable from the seed log if you ever need them, which you will not."}]},{"t":"p","runs":[{"text":"A hero image project typically leaves 200 to 400 MB worth keeping, once the exploration is cleared. That fits any backup."}]},{"t":"h2","id":"the-honest-limit","runs":[{"text":"The honest limit"}],"role":"limit"},{"t":"p","runs":[{"text":"None of this survives if it is not automatic, and a scheme that requires thought at every save will be abandoned by Thursday. Make it mechanical: set the interface’s output template once so generations are named correctly without you doing anything, and keep the folder structure as a template you copy at the start of each job."}]},{"t":"p","runs":[{"text":"The measure of whether it works is a single question: "},{"text":"can you find the approved file for frame seven in under thirty seconds, six months from now?","b":true},{"text":" If yes, the scheme is adequate however untidy it looks. If no, no amount of elegance in the naming convention is helping you."}]},{"t":"h2","id":"setting-the-output-template-once","runs":[{"text":"Setting the output template once"}]},{"t":"p","runs":[{"text":"Most interfaces let you control how generated files are named, and configuring it is a five-minute job that removes the problem at source."}]},{"t":"p","runs":[{"text":"In A1111 and Forge the setting is under output filename patterns, and something like this is useful:"}]},{"t":"code","lang":"text","label":"Text","text":"[datetime<%Y%m%d>]-[seed]-[model_name]"},{"t":"p","runs":[{"text":"In ComfyUI the Save Image node takes a filename prefix, so set it per project ("},{"text":"spring26-07","code":true},{"text":") and every render from that graph is already labelled with the frame it belongs to."}]},{"t":"p","runs":[{"text":"The point is that a filename produced automatically is always correct, and one you type at save time is correct until the afternoon you are tired."}]},{"t":"h2","id":"version-numbers-the-client-can-use","runs":[{"text":"Version numbers the client can use"}]},{"t":"p","runs":[{"text":"Use the same version number in the filename and in the message you send. “Attached: v03” and a file called "},{"text":"spring26-07-final-v03.jpg","code":true},{"text":" means their reply of “v03 is approved, but can we see v02’s grade again” is unambiguous."}]},{"t":"p","runs":[{"text":"Clients will otherwise say “the second one you sent”, which is a description of your outbox rather than of a file, and reconstructing what that was takes longer than it should."}]},{"t":"p","runs":[{"text":"Two further habits that cost nothing. Never reuse a version number, even for a file you sent and immediately replaced: go to v04. And never send a file with "},{"text":"copy","code":true},{"text":" or a space-number suffix in its name, because whatever you send is what they will quote back at you."}]}],"check":{"question":[{"text":"What is the practical test of whether a file naming and folder scheme is good enough?"}],"options":[{"text":[{"text":"Whether every file in the project can be traced back to the generation parameters that produced it through the recorded metadata."}],"correct":false,"tempting":[{"text":"Useful for reproduction and not the daily need; most revision requests are answered by locating a file, not by regenerating one."}]},{"text":[{"text":"Whether the approved file for a given frame can be located in under thirty seconds several months later."}],"correct":true,"tempting":null},{"text":[{"text":"Whether the structure is consistent enough that another person could take over the project without being given any explanation of it."}],"correct":false,"tempting":[{"text":"A worthwhile property, and handover is rare compared with the constant need to find your own approved files quickly."}]},{"text":[{"text":"Whether every intermediate version has been retained, so that any earlier state of the work can be restored if a client changes their mind."}],"correct":false,"tempting":[{"text":"Keeping everything makes retrieval harder rather than easier; the scheme works by making the important files findable, not by preserving all of them."}]}],"order":[2,3,1,0],"why":null},"prev":{"slug":"a-visual-system-across-a-set","title":"Five constants that do more than the face","minutes":8},"next":{"slug":"the-campaign-of-twelve","title":"A worked run, with the budget and the failure","minutes":8}}}