{
  "id": 101682,
  "title": "Provenance Belongs in the Image Table",
  "url": "https://urgent.news/2026/08/03/provenance-belongs-in-the-image-table",
  "topic": "ai",
  "section": "AI",
  "published": "2026-08-03T21:23:23.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/daniel_romitelli_44e77dc6/provenance-belongs-in-the-image-table-4d30"
  },
  "original_language": "en",
  "account": "A single row in a database table holds all the information needed to fully understand and reproduce any version of an image generated through an AI system. This row contains details about the original prompt, model, seed, dimensions, and whether the image was edited. If edits were made, additional rows are added, each referencing the previous version as the \"original_image_id\". This design allows for a complete, append-only history of every edit made to an image, enabling developers to trace back the entire lineage if needed.\n\nThe image data is stored directly in the database, while logs and object storage handle more transient data. The table contains several columns that store specific information the application frequently filters, sorts, or displays. For example, the \"prompt\" column shows the text used to generate the image, while the \"model\" column indicates the AI model used. The \"is_edited\" column flags whether the image has been altered, and \"original_image_id\" provides a link to the parent image if edits have occurred.\n\nAdditional columns include \"edit_prompt\" and \"edit_strength\", which describe the modifications made during an edit, and \"branded_url\" and \"branding_options\", which store information about the final, branded version of the image. The table also includes JSONB fields for \"metadata\", \"tags\", and \"branding_options\", which can be indexed for efficient querying when needed.\n\nTo retrieve the full history of an image, a recursive Common Table Expression (CTE) is used. This query starts from a specific row and recursively joins each child image with its parent, allowing developers to trace the entire lineage of edits for any given image. This approach provides a cost-effective way to maintain a detailed history without the performance overhead of a separate audit table, as the self-referencing design only incurs additional complexity during rare queries that require reconstructing the full history.",
  "summary": "A generated image looks finished until review starts. Someone approves the first version. Someone else crops it. A branded copy goes out. Another edit changes the prompt. A week later, the useful question is simple: which prompt, model, seed, size, parent image, and publishing settings produced the version on screen? In a content studio, I put those answers in the PostgreSQL row that stores the…",
  "key_points": [],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}