55 lines
2.6 KiB
Markdown
55 lines
2.6 KiB
Markdown
# 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]
|