Commit graph

15 commits

Author SHA1 Message Date
Michael Cahill
961297f09d M14: API runner contract test (verification milestone)
- Add test_api_runner_contract.py: proves API txt2img path invokes ProcessingRunner
- No routing changes: API continues to call process_images (orchestration boundary)
- Monkeypatch CI env + runner.run; call API method directly
- M14_plan.md, M14_toolcalls.md: governance docs

Phase III — Runner & Service Boundary

Made-with: Cursor
2026-03-16 23:21:18 -07:00
m-cahill
4dd0499987
M13: txt2img path through runner (#31)
* M13: txt2img path through runner — contract test and verification

- Add test_txt2img_runner_contract.py verifying txt2img invokes ProcessingRunner
- No routing changes: process_images already delegates to runner (M10)
- Update M13_plan, M13_toolcalls, M13_run1
- Scope: UI txt2img only; API/img2img in M14/M15

Made-with: Cursor

* docs(M13): add CI run1 results — smoke tests pass

Made-with: Cursor
2026-03-13 15:17:06 -07:00
Michael Cahill
c146ef787c M12: Add runner instrumentation hooks (on_prepare, on_execute, on_finalize)
- Add optional no-op hooks to ProcessingRunner lifecycle
- Hooks invoked: prepare -> on_prepare -> execute -> on_execute -> finalize -> on_finalize
- Add test_runner_hooks_called contract test
- No runtime behavior change; structural seam for M13+ progress/cancellation

Made-with: Cursor
2026-03-12 14:25:36 -07:00
Michael Cahill
fb705fe646 M11: Runner lifecycle surface (prepare/execute/finalize)
- Refactor ProcessingRunner.run() to delegate through lifecycle stages
- Add prepare(), execute(), finalize() with pass-through behavior
- Add test_runner_lifecycle_order contract test
- Preserve identical behavior; no API/CLI changes

Phase III — Runner & Service Boundary

Made-with: Cursor
2026-03-11 23:38:17 -07:00
m-cahill
0d11b587ca
fix(M10): defer modules.processing import in test_processing_runner (#28)
Quality tests fail during collection because test_processing_runner imports
modules.processing at module level, which triggers sd_samplers before
shared.opts is initialized. Defer import to inside test and add initialize
fixture so webui/opts are loaded first.

Made-with: Cursor
2026-03-11 22:54:02 -07:00
m-cahill
880723f100
M10: ProcessingRunner skeleton (#27)
* 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

* M10: Add run1 and toolcalls update

Made-with: Cursor

* M10: Update Phase III roadmap, add closeout prompt

- Phase III: M11 lifecycle, M12 instrumentation, M13 txt2img, M14 API, M15 queue
- Phase IV-VII renumbered (M16-M33)
- Add M10_closeout_prompt.md for Cursor

Made-with: Cursor
2026-03-11 22:46:56 -07:00
Michael Cahill
5fe8245957 M05: Override isolation / temporary opts seam
- Add modules/runtime_utils.py with temporary_opts context manager
- Refactor process_images() to use temporary_opts for override application
- Preserve opts.set(is_api=True, run_callbacks=False) and setattr restore
- Add test/quality/test_opts_override.py (samples_save, restore_afterwards)
- Model/VAE reload and token merging remain in process_images per decisions

Made-with: Cursor
2026-03-09 14:14:13 -07:00
m-cahill
077e4b93f4
fix: get_multicond_prompt_list preserves whitespace in split (#14)
Made-with: Cursor
2026-03-08 22:07:57 -07:00
m-cahill
12fba26e0a
test(M04): add API endpoints and prompt_parser tests for 40% coverage (#13)
Made-with: Cursor
2026-03-08 22:03:50 -07:00
m-cahill
298606f818
fix(M04): remove modules.util import to avoid circular import in tests (#12)
Made-with: Cursor
2026-03-08 21:59:17 -07:00
m-cahill
ea04028758
test(M04): add test_util_modules for coverage gate 40% (#11)
Made-with: Cursor
2026-03-08 21:56:10 -07:00
m-cahill
12f5c39a44
fix: remove merge conflict markers from test_api_extended.py (#10)
Made-with: Cursor
2026-03-08 20:27:24 -07:00
m-cahill
9aa32e8917
fix: remove test_interrogate_deepbooru (#9)
* test(M04): add quality tests for coverage gate 40%

Made-with: Cursor

* fix: remove test_interrogate_deepbooru (404 in CI stub)

Made-with: Cursor
2026-03-08 20:23:51 -07:00
m-cahill
c342f4bbc7
test(M04): add quality tests for coverage gate 40% (#8)
Made-with: Cursor
2026-03-08 20:19:53 -07:00
m-cahill
975dda4b56
M03: Test architecture (#2)
* docs(M03): seed M03 plan and toolcalls

Made-with: Cursor

* ci: add repository guardrail, update CONTRIBUTING workflow

Made-with: Cursor

* M03: Test architecture (smoke/quality/nightly)

- Move tests to test/smoke/, scaffold test/quality and test/nightly
- Add pytest.ini with smoke/quality/nightly markers
- Split CI: run_smoke_tests (PR), run_quality_tests (push main), run_nightly_tests (schedule)
- Remove run_tests.yaml
- Add prevent_upstream_push.sh pre-push hook template
- Update CONTRIBUTING.md with hook install and test tier docs
- Add repo and base-branch guardrails to workflows

Made-with: Cursor

* ci: remove obsolete warns_merge_master workflow (Serena uses main)

Made-with: Cursor

* fix: add base_url to pytest.ini for pytest-base-url plugin

Made-with: Cursor

* docs(M03): ledger, run1, audit, summary

Made-with: Cursor

* docs(M03): ledger commit 4ce5cde9

Made-with: Cursor
2026-03-08 18:39:40 -07:00