diff --git a/docs/milestones/M08/M08_audit.md b/docs/milestones/M08/M08_audit.md new file mode 100644 index 000000000..e02961384 --- /dev/null +++ b/docs/milestones/M08/M08_audit.md @@ -0,0 +1,71 @@ +# M08 Audit — Opts Snapshot Threading + +**Milestone:** M08 +**Title:** Opts snapshot threading +**Branch:** m08-snapshot-threading +**Audit date:** 2026-03-12 +**Mode:** DELTA AUDIT +**Range:** 8ea50d35 (M07) → 710a0abd (M08 merge) +**CI Status:** Green (Quality 22984445599) +**Refactor Posture:** Behavior-Preserving +**Audit Verdict:** 🟢 Milestone objectives met. Runtime now reads from p.opts_snapshot for save-related settings. Proceed to M09. + +--- + +## 1. Executive Summary + +M08 successfully threaded p.opts_snapshot into process_images_inner for safe read-only option access, establishing the fourth Phase II runtime seam. + +**Wins:** +* Migrated 12 save-related opts reads from shared.opts to p.opts_snapshot +* Limited blast radius to process_images_inner only; save_samples(), sample_hr_pass(), metadata logic unchanged +* Same inputs → same outputs; no behavior drift +* txt2img and img2img smoke tests exercise the critical path +* Quality Tests pass; coverage ≥40%; verify_pinned_deps ✓ + +**Risks:** None identified. + +**Next action:** Proceed to M09 (execution context seam). + +--- + +## 2. CI Evidence + +| Check | Result | +|-------|--------| +| Smoke Tests (PR #24) | 22984306614 ✓ | +| Linter (PR #24) | 22984306617 ✓ | +| Quality Tests (post-merge) | 22984445599 ✓ | +| Coverage | ≥40% gate satisfied | +| verify_pinned_deps | ✓ Passed | +| pip-audit | Informational (M27) | +| Artifacts | coverage.xml ✓, ci_environment ✓ | + +--- + +## 3. Delta Map & Blast Radius + +| Changed | Impact | +|---------|--------| +| modules/processing.py | Modified — p.opts_snapshot for save-related reads in process_images_inner | +| docs/milestones/M08/* | Plan, toolcalls, run reports | + +**Blast radius:** process_images_inner image/grid saving logic only. No API/CLI/schema changes. Extensions continue reading shared.opts; save_samples() and sample_hr_pass() unchanged per M08 scope. + +--- + +## 4. Category Scores + +| Category | Score | Notes | +|----------|-------|-------| +| Refactor discipline | 5 | Scope respected; no creep | +| Behavior preservation | 5 | No runtime drift; smoke + quality pass | +| Test coverage | 5 | Existing smoke tests cover critical path | +| CI integrity | 5 | All gates green | +| **Overall** | **5.0** | | + +--- + +## 5. Verdict + +Milestone objectives met. Runtime begins reading from p.opts_snapshot for save-related config. Fourth Phase II seam; enables M09 execution context and ProcessingRunner architecture (M10+). diff --git a/docs/milestones/M08/M08_run2.md b/docs/milestones/M08/M08_run2.md new file mode 100644 index 000000000..f91ac1eb1 --- /dev/null +++ b/docs/milestones/M08/M08_run2.md @@ -0,0 +1,60 @@ +# M08 CI Run 2 — Post-Merge Quality Verification + +**Date:** 2026-03-12 +**Branch:** main (post-merge) +**Merge commit:** 710a0abd +**Trigger:** push (Merge PR #24) + +--- + +## 1. Workflow Identity + +| Workflow | Run ID | Trigger | Branch | Commit | Status | +|----------|--------|---------|--------|--------|--------| +| Quality Tests | **22984445599** | push | main | 710a0abd | ✓ success | +| Linter | 22984445598 | push | main | 710a0abd | ✓ success | + +--- + +## 2. Quality Tests (22984445599) + +| Job / Step | Required? | Purpose | Pass/Fail | +|------------|-----------|---------|-----------| +| Verify repository | Yes | Guardrail: m-cahill/serena only | ✓ | +| Verify ref | Yes | Guardrail: push to main | ✓ | +| Checkout Code | Yes | Fetch merge commit | ✓ | +| Set up Python 3.10 | Yes | Runtime | ✓ | +| Cache models | Yes | Deterministic model path | ✓ | +| Install dependencies | Yes | torch, CLIP, requirements_versions | ✓ | +| pip-audit | Informational | Dependency vuln scan | ⚠ (deferred M27) | +| verify_pinned_deps | Yes | Pinned deps enforcement | ✓ | +| Create stub repositories | Yes | CI fake inference | ✓ | +| Setup environment | Yes | launch.py --exit | ✓ | +| Start test server | Yes | Live server for API tests | ✓ | +| **Run quality tests** | **Yes** | **pytest test** (coverage ≥40%) | **✓** | +| Kill test server | Yes | Cleanup | ✓ | +| Show coverage | Yes | --fail-under=40 | ✓ | +| Upload artifacts | No (always) | coverage.xml, htmlcov, output | ✓ | + +**Duration:** 3m25s + +**Annotation:** pip-audit found vulnerabilities. Remediation deferred to M27. See M04_audit.md. + +--- + +## 3. CI Confirmation + +| Check | Status | +|-------|--------| +| Quality Tests | ✓ | +| Coverage | ≥ 40% | +| pip-audit | Informational (M27) | +| verify_pinned_deps | ✓ | + +--- + +## 4. Verdict + +**CI Status:** Green + +All gates passed. M08 closeout verified. Ready for audit and summary generation. diff --git a/docs/milestones/M08/M08_summary.md b/docs/milestones/M08/M08_summary.md new file mode 100644 index 000000000..a7b8d7af2 --- /dev/null +++ b/docs/milestones/M08/M08_summary.md @@ -0,0 +1,59 @@ +# M08 Summary — Opts Snapshot Threading + +**Project:** Serena +**Phase:** Phase II — Runtime Seam Preparation +**Milestone:** M08 — Opts snapshot threading +**Status:** Closed +**Branch:** m08-snapshot-threading +**PR:** #24 +**Commit:** 710a0abd (merge) +**Quality Run:** 22984445599 ✓ + +--- + +## Accomplished + +| Item | Status | +|------|--------| +| Migrated save-related opts reads to p.opts_snapshot in process_images_inner | ✓ | +| save_images_before_face_restoration, save_images_before_color_correction | ✓ | +| samples_format, return_mask, save_mask, return_mask_composite, save_mask_composite | ✓ | +| grid_only_if_multiple, return_grid, grid_save, grid_format, grid_extended_filename | ✓ | +| Left save_samples(), sample_hr_pass(), create_infotext(), metadata on shared.opts | ✓ | +| Preserved behavior (same inputs → same outputs) | ✓ | +| Extension compatibility preserved | ✓ | + +--- + +## CI Layout After M08 + +| Workflow | Trigger | Coverage | Security | +|----------|---------|----------|----------| +| Smoke Tests | pull_request (main) | No gate | None | +| Linter | pull_request | — | — | +| Quality Tests | push to main | ≥40% | pip-audit (informational) | + +--- + +## Invariants Preserved + +- Generation behavior unchanged +- File output behavior (save paths, naming) unchanged +- Extension compatibility (shared.opts still exists) +- API compatibility (txt2img/img2img) +- CLI behavior unchanged + +--- + +## Blast Radius + +| File | Change | +|------|--------| +| modules/processing.py | Modified — p.opts_snapshot for save-related reads | +| docs/milestones/M08/* | Plan, toolcalls, run reports | + +--- + +## Refactor Result + +First deterministic runtime boundary: generation pipeline now reads save-related config from p.opts_snapshot instead of shared.opts within process_images_inner. Fourth Phase II runtime seam; enables M09 execution context and ProcessingRunner architecture (M10+). diff --git a/docs/milestones/M09/M09_plan.md b/docs/milestones/M09/M09_plan.md new file mode 100644 index 000000000..34795560a --- /dev/null +++ b/docs/milestones/M09/M09_plan.md @@ -0,0 +1,3 @@ +# M09 Plan — Execution Context Seam + +(To be populated.) diff --git a/docs/milestones/M09/M09_toolcalls.md b/docs/milestones/M09/M09_toolcalls.md new file mode 100644 index 000000000..1c2f1f788 --- /dev/null +++ b/docs/milestones/M09/M09_toolcalls.md @@ -0,0 +1,5 @@ +# M09 Toolcalls — Execution Context Seam + +Implementation toolcalls for Cursor execution. + +(To be filled during milestone execution.) diff --git a/docs/serena.md b/docs/serena.md index a571f8d10..47091ab8a 100644 --- a/docs/serena.md +++ b/docs/serena.md @@ -137,6 +137,7 @@ Core principles: | M05 | Override isolation / temporary opts seam | Completed | m05-override-isolation | #18 (+ #19 fix) | ae161cbb | Quality 22888808682 ✓ | 5.0 / 5 | 2026-03-10 | | M06 | Prompt/seed prep extraction | Completed | m06-prompt-seed-prep | #20 | 6744152a | Quality 22890285319 ✓ | 5.0 / 5 | 2026-03-10 | | M07 | Opts snapshot introduction | Completed | m07-opts-snapshot | #22 | 8ea50d35 | Quality 22983583947 ✓ | 5.0 / 5 | 2026-03-12 | +| M08 | Opts snapshot threading | Completed | m08-snapshot-threading | #24 | 710a0abd | Quality 22984445599 ✓ | 5.0 / 5 | 2026-03-12 | **M05:** Introduced `temporary_opts()` context manager — first Phase II runtime seam. Isolates override_settings mutation from global `shared.opts`; preserves behavior (opts.set, setattr restore, k in opts.data). Model/VAE reload and token merging remain in process_images. Enables future opts snapshot injection (M07). @@ -144,6 +145,8 @@ Core principles: **M07:** Introduced `create_opts_snapshot(opts)` in `modules/opts_snapshot.py`. Third Phase II runtime seam. Captures deterministic snapshot of opts.data in process_images_inner after prepare_prompt_seed_state; stored on p.opts_snapshot. Write-only in M07; enables M08 snapshot threading. +**M08:** Threaded p.opts_snapshot into process_images_inner for save-related reads. Fourth Phase II runtime seam. Migrated 12 opts (save_images_before_face_restoration, samples_format, grid_save, etc.) from shared.opts to p.opts_snapshot. save_samples(), sample_hr_pass(), metadata unchanged. Enables M09 execution context. + --- ## 5. Standing Invariants