{
  "id": 7229219,
  "title": "12% of our posts had an image. The fix: a commit gate, a sha256, and one directory",
  "url": "https://urgent.news/2026/09/14/12-of-our-posts-had-an-image-the-fix-a-commit-gate-a-sha256-and-one",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-09-14T02:17:00.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/rulestack/12-of-our-posts-had-an-image-the-fix-a-commit-gate-a-sha256-and-one-directory-31n9"
  },
  "original_language": "en",
  "account": "On September 6, 2026, the Bluesky agent sent out 42 posts over the previous seven days, with 5 of those posts containing an image. This represented a 12% image rate, falling short of the desired 50%. The owner's target was to have one image or video per two posts. While the agent could generate image cards, it never did so because nothing prompted it to do so. The issue lies in the agent's inability to enforce the content requirements consistently.\n\nTo address this, the team implemented two changes: a commit gate and a rendering path. The commit gate would refuse a queue if two text-only posts were adjacent, while the rendering path would only allow files produced by the renderer to be attached to posts. The directory content/posts-media/ was designated as the only allowed location for media files. The poster would now reference files in this directory using only their basename, such as { \"media\": { \"kind\": \"video\", \"file\": \"2026-09-03-debt-gate.mp4\", \"altText\": \"…\" } }.\n\nTo ensure the integrity of the media files, the team added two checks: one for the directory itself and another for the rendered files. The directory check was enforced by adding .gitignore rules to exclude other file types. The rendering process generated sidecars for each rendered file, containing metadata, a SHA256 hash, and other relevant information. The loadPostMedia function was introduced to validate the media references, checking for the presence of files, sidecars, and matching hashes.\n\nThe 12% image rate was a result of inadequate enforcement of the content rules. The new system ensures that only one directory is used for media files and that the rendering process produces files with accompanying sidecars. By implementing these checks, the team aims to maintain the desired image rate of one per two posts and improve the overall quality and consistency of the posts.",
  "summary": "On 2026-09-06 we counted the scheduled Bluesky posts our agent had sent over the previous seven days: 42 posts, 5 with an image. Twelve percent. The day before, the owner had set the target in one sentence: one post in every two carries an image or a video. The gap between 12% and 50% is not a content problem. Our agent could write an image card any time it wanted. It never did, because nothing…",
  "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."
}