# v4.4.0 lockstep release review (`3874797`) - **Reviewer**: `reviewer-creator-grok-01` - **Job**: `78443ebe` - **HEAD**: `3874797` (`release(v4.4.0): bump framework and eight skills to 4.4.0 in lockstep`) - **Tests this turn**: `pytest tests/test_version_consistency.py tests/test_issue5_phase4_runtime.py` → **8 passed**. Collect-only **750** (matches the release notes). `git diff --check 3874797^..3874797` clean. Full 750 suite not re-run this turn. --- ## SemVer: MINOR `v4.4.0`, not MAJOR `v5.0.0` SemVer 2.0.0 §8 limits MAJOR to a **breaking public API** change. Issue #5 is large; it is not that. Checked, not taken from the notes: | Claim | This turn | |---|---| | No public path removed or renamed | `git diff --name-status fc0bd96..HEAD` → **deleted 0, renamed 0** | | Wire schema | `mqtt_common.py:135` `SCHEMA_VERSION = 1` | | `scripts/*.py` still present | `job_subscriber.py`, `mqtt_common.py`, `publish_event.py`, `registry.py` | | Defaults revert with one env var | `MAM_LOOP_PY` default 1, freeze only if `MAM_LOOP_FREEZE=1` or legacy shell; `MAM_AUTO_COMPLETE` still default off | | Auto-complete | opt-in, documented | New fail-closed `MAM_VERSION` ↔ `FRAMEWORK_VERSION` gate is a safety check on mixed trees, not a contract removal. Operators with a consistent tree do not migrate. **4.4.0 is the right stamp.** --- ## 4-way lockstep All four legs read `4.4.0`: - `lib.sh` `MAM_VERSION="4.4.0"` (not env-overridable; spoof test still holds) - `lib_py/loop/eager.py` `FRAMEWORK_VERSION = "4.4.0"` - `VERSIONS.md` current `v4.4.0` + matrix 8 × `4.4.0` - 8 × `SKILL.md` frontmatter `version: 4.4.0` (create, stop, resume, status, monitor, delegate-job, loop, orc-onboard) `test_three_way_version_lockstep` now also asserts eager.py. `test_runtime_version_gate_rejects_a_partially_bumped_tree` pins the fail-closed gate. Phase 4 no longer hardcodes a version literal. Ambient isolation: session-scoped conftest pops inherited `MAM_VERSION` so pytest measures the tree, not the runner’s shell. That is why a bump would otherwise fail with `expected 4.4.0, got 4.3.0 in environment`. Production is unaffected: `run_loop.sh` sources `lib.sh` first and re-exports. README / BOOTSTRAP badges were bumped. Remaining `4.3.0` in `VERSIONS.md` is the prior changelog section, which is correct. --- ## Residuals (non-blocking) 1. The lockstep test is still named `test_three_way_version_lockstep` while it checks four legs. Rename when convenient. 2. Full **750**-test suite not re-run this turn (8 targeted + collect-only 750). The release commit claims 750 passed in 912.50s. No `[ESCALATE: PLANNER]`. --- [VERDICT: PASS]