docs(M05): closeout — summary, audit, ledger, M06 seed

Made-with: Cursor
This commit is contained in:
Michael Cahill 2026-03-09 22:53:27 -07:00
parent 0654b9a9f7
commit 595ea21752
6 changed files with 190 additions and 0 deletions

View file

@ -0,0 +1,73 @@
# M05 Audit — Override Isolation / Temporary Opts Seam
**Milestone:** M05
**Title:** Override isolation / temporary opts seam
**Branch:** m05-override-isolation (+ m05-fix-opts-test)
**Audit date:** 2026-03-10
**Mode:** DELTA AUDIT
**Range:** 47439cac (M04 closeout) → ae161cbb (M05 fix merge)
**CI Status:** Green (Quality 22888808682)
**Refactor Posture:** Behavior-Preserving
**Audit Verdict:** 🟢 Milestone objectives met. No runtime behavior change. Proceed to M06.
---
## 1. Executive Summary
M05 successfully introduced the first Phase II runtime seam: a scoped context manager for temporary option overrides, replacing direct global mutation in `process_images()`.
**Wins:**
* `temporary_opts()` isolates override apply/restore; enables future opts snapshot injection (M07)
* Behavior preserved: opts.set(is_api=True, run_callbacks=False), setattr restore, k in opts.data filtering
* Model/VAE reload and token merging remain in process_images (narrow blast radius)
* Seam tests added (test_opts_override.py)
* CI harness fix: config.json initialization ensures opts.data populated for quality tests
**Risks:** None identified.
**Next action:** Proceed to M06 (Processing context extraction).
---
## 2. CI Evidence
| Check | Result |
|-------|--------|
| Smoke Tests (PR #18) | 22876253113 ✓ |
| Linter (PR #18) | 22876253091 ✓ |
| Quality Tests (post-fix) | 22888808682 ✓ |
| Coverage | ≥40% gate satisfied |
| verify_pinned_deps | ✓ Passed |
| pip-audit | Informational (M27) |
| Artifacts | coverage.xml ✓, ci_environment.txt ✓ |
---
## 3. Delta Map & Blast Radius
| Changed | Impact |
|---------|--------|
| modules/runtime_utils.py | New — temporary_opts context manager |
| modules/processing.py | Refactored — use temporary_opts, preserve model/VAE reload, token merging |
| test/quality/test_opts_override.py | New — seam unit tests |
| test/conftest.py | CI harness — create minimal config.json when missing |
**Blast radius:** Override application path only. No API/CLI/schema changes.
---
## 4. Category Scores
| Category | Score | Notes |
|----------|-------|------|
| Refactor discipline | 5 | Narrow seam, behavior-preserving |
| Behavior preservation | 5 | No runtime drift; smoke + quality pass |
| Test coverage | 5 | Seam tests + config fixture |
| CI integrity | 5 | All gates green; corrective run verified |
| **Overall** | **5.0** | |
---
## 5. Verdict
Milestone objectives met. Global override mutation replaced with scoped context manager. Proceed to M06.

View file

@ -0,0 +1,61 @@
# M05 Summary — Override Isolation / Temporary Opts Seam
**Project:** Serena
**Phase:** Phase II — Runtime Seam Preparation
**Milestone:** M05 — Override isolation / temporary opts seam
**Status:** Closed
**Branch:** m05-override-isolation
**PR:** #18 (implementation), #19 (CI harness fix)
**Commit:** ae161cbb (merge PR #19)
**Quality Run:** 22888808682 ✓
---
## Accomplished
| Item | Status |
|------|--------|
| Introduced `temporary_opts()` context manager | ✓ modules/runtime_utils.py |
| Isolated override_settings mutation from global runtime | ✓ process_images refactored |
| Preserved existing behavior | ✓ opts.set(is_api=True, run_callbacks=False), setattr restore, k in opts.data |
| Model/VAE reload left in process_images | ✓ |
| Token merging unchanged | ✓ |
| Added seam tests | ✓ test/quality/test_opts_override.py |
| CI harness stabilized | ✓ test/conftest.py — minimal config.json when missing |
---
## CI Layout After M05
| 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
- API response schemas
- CLI behavior
- Extension compatibility
- Generation semantics
- CI truthfulness
---
## Blast Radius
| File | Change |
|------|--------|
| modules/runtime_utils.py | New |
| modules/processing.py | Modified |
| test/quality/test_opts_override.py | New |
| test/conftest.py | CI harness fix |
---
## Refactor Result
Global override mutation replaced with scoped context manager. First runtime seam in Phase II; enables future opts snapshot injection (M07).

View file

@ -13,3 +13,4 @@
| 2026-03-09 | ruff | Lint runtime_utils, test_opts_override | modules/runtime_utils.py, test/quality/test_opts_override.py | pass |
| 2026-03-09 | git | Create branch, commit, push | m05-override-isolation, 5fe82459 | done |
| 2026-03-09 | write | Generate M05_run1.md | docs/milestones/M05/M05_run1.md | done |
| 2026-03-10 | write | M05 closeout — summary, audit, ledger, M06 seed | docs/milestones/M05/, docs/serena.md, docs/milestones/M06/ | done |

View file

@ -0,0 +1,42 @@
# M06 Plan — Processing Context Extraction
**Project:** Serena
**Phase:** Phase II — Runtime Seam Preparation
**Milestone:** M06
**Title:** Processing Context Extraction
**Branch:** `m06-processing-context`
**Posture:** Behavior-Preserving Refactor
**Target:** Introduce a ProcessingContext object to encapsulate state threaded through process_images() / process_images_inner().
---
## 1. Intent / Target
Introduce a **ProcessingContext object** to encapsulate state currently threaded through `process_images()` and `process_images_inner()`.
**Goals:**
* Prepare for opts snapshot injection (M07)
* Enable deterministic runtime execution
* Improve testability of processing stages
---
## 2. Scope (To Be Defined)
* In scope: TBD
* Out of scope: TBD
---
## 3. Dependencies
* M05 complete (temporary_opts seam)
---
## 4. Next Steps
1. Define ProcessingContext fields and boundaries
2. Identify state to encapsulate
3. Implement minimal extraction
4. Preserve behavior; add tests

View file

@ -0,0 +1,10 @@
# M06 Tool Calls Log
**Milestone:** M06 — Processing Context Extraction
**Branch:** m06-processing-context
---
| Timestamp | Tool | Purpose | Files/Target | Status |
|-----------|------|---------|--------------|--------|
| | | | | |

View file

@ -134,6 +134,9 @@ Core principles:
| M02 | API CI truthfulness, local dev guardrails | Completed | m02-api-ci-truthfulness | — | 7484170d | Linter 22831756517 ✓; Tests 22831756504 ✓ (33/33 pass) | 4.9 / 5 | 2026-03-08 |
| M03 | Test architecture (smoke / quality / nightly) | Completed | m03-test-architecture | #2 | 975dda4b | Linter ✓; Smoke 22834384359 ✓; Quality 22834861040 ✓ | 5.0 / 5 | 2026-03-09 |
| M04 | Coverage/security/reproducibility guardrails | Completed | m04-coverage-guardrails | #4 | 47439cac | Quality 22871471473 ✓ (coverage 40%, pip-audit, verify_pinned_deps) | 5.0 / 5 | 2026-03-09 |
| M05 | Override isolation / temporary opts seam | Completed | m05-override-isolation | #18 (+ #19 fix) | ae161cbb | Quality 22888808682 ✓ | 5.0 / 5 | 2026-03-10 |
**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).
---