M10: ProcessingRunner skeleton

- Add modules/runtime/runner.py with ProcessingRunner and ProcessingRequest
- Wire process_images to delegate through runner (internal only)
- Add test/quality/test_processing_runner.py contract test

Behavior-preserving. Zero blast radius. All callers unchanged.

Made-with: Cursor
This commit is contained in:
Michael Cahill 2026-03-11 21:50:25 -07:00
parent 11b9e0f16e
commit 59e46fa069
6 changed files with 192 additions and 1 deletions

View file

@ -844,7 +844,10 @@ def process_images(p: StableDiffusionProcessing) -> Processed:
sd_samplers.fix_p_invalid_sampler_and_scheduler(p)
with profiling.Profiler():
res = process_images_inner(p)
from modules.runtime.runner import ProcessingRunner, ProcessingRequest
runner = ProcessingRunner()
request = ProcessingRequest(p)
res = runner.run(request)
finally:
sd_models.apply_token_merging(p.sd_model, 0)

View file

@ -0,0 +1,4 @@
"""Runtime execution boundary for Serena.
M10: ProcessingRunner skeleton. Thin adapter around process_images_inner.
"""

22
modules/runtime/runner.py Normal file
View file

@ -0,0 +1,22 @@
"""ProcessingRunner — unified execution entrypoint for Serena pipeline.
M10: Thin adapter around process_images_inner. No behavior changes.
"""
class ProcessingRequest:
"""Wraps StableDiffusionProcessing for runner boundary."""
def __init__(self, processing):
self.processing = processing
class ProcessingRunner:
"""
Unified execution entrypoint for Serena processing pipeline.
"""
def run(self, request):
"""Execute processing pipeline."""
from modules.processing import process_images_inner
return process_images_inner(request.processing)