"""output — the report-only OUTPUT gate (compose + secret egress). Query-time guardrails guard the answer; this guards the *persisted artifact*. ``output`` is the last gate before model output is written to a wiki, doc, or knowledge base: it scans the emitted text and reports what must not be persisted. It is **report-only** (design principles 3 & 4) — it never mutates the text. Mutation is ``neutralize``'s separate, opt-in job; disposition (WARN / QUARANTINE_REVIEW / FAIL_SECURE) is the caller's, decided from this ``Report``. It composes the existing detectors over the output and adds the egress layer the input-side scanners do not cover: 1. :func:`~llm_ingestion_guard.lexicon.scan_lexicon` over the output — injection strings the model reproduced into the artifact (RAG poisoning). 2. :func:`~llm_ingestion_guard.entropy.scan_entropy` over the output — encoded / high-entropy carrier blobs. 3. **Decode-and-rescan** — every base64 blob ``entropy`` decoded to printable text is fed back through ``scan_lexicon``. This is what turns "a blob is present" into "an injection is hidden *inside* this blob". Findings from the decoded plaintext are re-labelled ``decoded: