From 35b126449b26a1f5379b0a896a1a8b7f0025cb17 Mon Sep 17 00:00:00 2001 From: Duncan Tourolle Date: Sat, 22 Aug 2026 19:32:59 +0200 Subject: [PATCH] Order the detail stage so the repair runs before the enhancements MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Capture sharpening and noise reduction were written in parallel and both claimed `order: 110`; the codegen refuses that, which is the guard working — two nodes at one order is an ambiguous pipeline and operation order changes the result. Resolved in noise reduction's favour, for the reason its own `placement:` block already gives: denoising is a repair and everything else in this stage is an enhancement. Sharpening or adding clarity to a noisy frame amplifies the grain along with the detail, and no later pass can separate them again. So the detail stage now runs noise reduction, capture sharpening, clarity, texture, and the other three shift up a slot to keep the multiple-of-ten convention the rest of the chain uses. Noise reduction was also missing the required `attributes:` key. The order collision aborted the build before the attribute check could report it, so it arrived looking like one fault and was two. --- core/dr-pipeline/ops/capture_sharpen.yaml | 2 +- core/dr-pipeline/ops/clarity.yaml | 2 +- core/dr-pipeline/ops/noise_reduction.yaml | 1 + core/dr-pipeline/ops/texture.yaml | 2 +- 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/core/dr-pipeline/ops/capture_sharpen.yaml b/core/dr-pipeline/ops/capture_sharpen.yaml index f135e7c..fa999e3 100644 --- a/core/dr-pipeline/ops/capture_sharpen.yaml +++ b/core/dr-pipeline/ops/capture_sharpen.yaml @@ -7,7 +7,7 @@ # from the type; this file exists so that `ops/` remains the one place the # pipeline's order is written down. id: capture_sharpen -order: 110 +order: 120 attributes: [detail] rust: CaptureSharpen diff --git a/core/dr-pipeline/ops/clarity.yaml b/core/dr-pipeline/ops/clarity.yaml index ea16cd2..eeab50d 100644 --- a/core/dr-pipeline/ops/clarity.yaml +++ b/core/dr-pipeline/ops/clarity.yaml @@ -4,7 +4,7 @@ # where the pipeline's order is written down, and an order kept half in YAML # and half in Rust would be worse than either alone. id: clarity -order: 120 +order: 130 attributes: [detail] rust: Clarity diff --git a/core/dr-pipeline/ops/noise_reduction.yaml b/core/dr-pipeline/ops/noise_reduction.yaml index 20722f0..e8b2040 100644 --- a/core/dr-pipeline/ops/noise_reduction.yaml +++ b/core/dr-pipeline/ops/noise_reduction.yaml @@ -8,6 +8,7 @@ id: noise_reduction order: 110 +attributes: [detail] rust: NoiseReduction why_rust: | diff --git a/core/dr-pipeline/ops/texture.yaml b/core/dr-pipeline/ops/texture.yaml index 6db3402..96aa49e 100644 --- a/core/dr-pipeline/ops/texture.yaml +++ b/core/dr-pipeline/ops/texture.yaml @@ -1,6 +1,6 @@ # A hand-written node — see `clarity.yaml`, whose implementation this shares. id: texture -order: 130 +order: 140 attributes: [detail] rust: Texture