Coverage gate ("Was fehlt?") for ONE written guide section on the topic "{topic}": check the text against its learning objectives. Objective without content = gap; content without objective = ballast. LEARNING OBJECTIVES of block "{block}": {ziele} SECTION — current content (subblocks are marked with ``): {section} Procedure: 1. For EACH objective decide binary: does the text teach it well enough that a beginner could achieve the objective afterwards? Mentioning a keyword is NOT teaching — the how/why must be there. 2. For each NOT-covered objective state precisely WHAT is missing (German, concrete — the writer will patch exactly this). 3. List BALLAST: passages that serve none of the objectives (digressions, redundant repetition). Shortening candidates only — never a whole subblock. Worked-example passages that apply a concept belonging to an objective are teaching, not ballast. 4. Judge strictly binary per objective; no partial credit. Write ONLY the JSON file to: {out_path} Format (`ziele` maps EVERY objective id to true/false): {{"ziele": {{"z1": true, "z2": false}}, "luecken": [{{"ziel": "z2", "fehlt": "…"}}], "ballast": ["passage …"]}} {extra}