Debug by reducing the question
When the garden turns black, resist changing several constants. First ask whether a frame was acquired and submitted. Then inspect the target attachment, draw count, pipeline, vertex input, descriptor ranges, and shader output in that order. A graphics capture lets you inspect a particular frame and the resources behind it. Validation output answers API-contract questions; a capture answers many state and data questions; an independent numeric test answers mathematical questions. Keep those evidence types separate.
Label passes and objects with useful names such as seed-update, stem-depth, and petal-color. Avoid labels containing private work data; this portfolio project can use entirely synthetic scenes. Save the smallest reproducible scene that exhibits a bug. Turn one fixed defect into a regression: a host boundary test, a shader comparison, or a documented capture procedure, whichever can actually detect that defect.
If device loss or allocation failure occurs, report the failed operation and stop submitting through invalid state. Do not promise transparent recovery before implementing and testing a complete recovery policy. A clear exit with preserved diagnostics is a legitimate first product contract.
