{"category_id":"repository","default_severity":"error","description":"Tracked PNG, JPEG, GIF, WebP, AVIF, SVG, SVGZ, ICO, BMP, TIFF, APNG, HEIC, HEIF and JXL paths require an exact images.artifacts declaration with an application, documentation or fixture purpose and a nonblank reason. The rule is explicitly activated by a consumer; directories and file size do not grant exemptions.","examples":[{"after":"{\"manifest\":\"repository_id = \\\"example-repository\\\"\\ncomponents = []\\n\",\"tracked\":[]}","before":"{\"manifest\":\"repository_id = \\\"example-repository\\\"\\ncomponents = []\\n\",\"tracked\":[\"docs/review/before.png\"]}","expected_severity":"error","id":"sarj-image-review-evidence","language":"json","title":"Attach review screenshots instead of tracking them"},{"after":"{\"manifest\":\"repository_id = \\\"example-repository\\\"\\ncomponents = []\\n[[images.artifacts]]\\npath = \\\"public/logo.svg\\\"\\nkind = \\\"application\\\"\\nreason = \\\"Application brand mark.\\\"\\n\",\"tracked\":[\"public/logo.svg\"]}","before":"{\"manifest\":\"repository_id = \\\"example-repository\\\"\\ncomponents = []\\n\",\"tracked\":[\"public/logo.svg\"]}","expected_severity":"error","id":"sarj-image-application-asset","language":"json","title":"Declare an application image without deleting it"},{"after":"{\"manifest\":\"repository_id = \\\"example-repository\\\"\\ncomponents = []\\n[[images.artifacts]]\\npath = \\\"tests/fixtures/input.png\\\"\\nkind = \\\"fixture\\\"\\nreason = \\\"Decoder regression input.\\\"\\n\",\"tracked\":[\"tests/fixtures/input.png\"]}","before":"{\"manifest\":\"repository_id = \\\"example-repository\\\"\\ncomponents = []\\n\",\"tracked\":[\"tests/fixtures/input.png\"]}","expected_severity":"error","id":"sarj-image-fixture","language":"json","title":"Retain image bytes required by a real test"}],"fix":"Attach PR evidence to its review or retain it externally, then untrack the review-only file. For a durable asset, declare its exact tracked path, purpose and reason. Glob-looking characters are literal and declarations must match regular files in the selected Git tree or index. No automatic deletion, content decoding or recognition of extensionless images is offered.","kind":"rule","references":[],"rule_id":"repository/artifacts/undeclared-images","rule_version":2,"slug":"undeclared-images","source":{"path":"src/repo_standards/policy_sarj/policy.py","symbol":"repository/artifacts/undeclared-images"},"title":"Declare durable image assets and keep review evidence out of Git","topic_id":"artifacts","why":"PR screenshots and transient QA output add binary history without being application assets or maintained test inputs. Legitimate logos, icons, documentation illustrations and image fixtures remain valid through reviewed declarations. Paths establish missing ownership, not image quality or author intent."}
