Bump to 0.7.1 — MobDev.Differential emits divergences to the defect bus - #76
Merged
Merged
Conversation
Ships MOB-159 phase 2 (PR #75) to Hex. MobDev.Differential.run/3 now emits a Mob.Defect.Capsule (kind: :divergence, owner: :mob) via Mob.Defect.emit_divergence/2 when the comparator returns a divergence result. New :fixture option threads a caller-supplied identifier into the fingerprint key. - Dep spec widened from `~> 0.7.25 or ~> 0.8` to `~> 0.7.25 or ~> 0.8.1` — the 0.8.0 point release predated Mob.Defect.emit_divergence/2 and would raise on the emit path. - Emit is guarded by Code.ensure_loaded?(Mob.Defect) + function_exported?(...) so a resolver picking a 0.7.x mob (still allowed) silently no-ops instead of crashing. Callers who require the emit pin `mob >= 0.8.1`. - mix.lock resolves to mob 0.8.2 (shipped earlier today), so a fresh install of mob_dev 0.7.1 gets the full emit path against the matching post-mortem substrate. Release-review gate before publish: RELEASE OK WITH FIXES — CHANGELOG was missing an entry for 0.7.1 entirely (opened directly with [0.7.0]). Added the section describing both the emit wiring and the dep-spec change, then bumped. mix mob.security_scan clean (0 findings across 57 hex deps + 4 bundled OTP tarballs). Known: 8 local tests in Mix.Tasks.Mob.EnableTest and Mix.Tasks.Mob.Adopt.BridgeTest fail from a git worktree under .claude/worktrees/ due to an Igniter test_project cwd artifact — CI and a fresh master clone pass. Not caused by this diff; documented in memory/project_mob_dev_worktree_igniter.md. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Cut mob_dev 0.7.1 to Hex — patch bump that ships MOB-159 phase 2 (PR #75) to Hex users.
MobDev.Differential.run/3now emits aMob.Defect.CapsuleontoMob.Defect.Buswhen the comparator returns{:divergence, ...}.What ships
MobDev.Differential.run/3now callsMob.Defect.emit_divergence/2on divergence results. New:fixtureoption threads a caller identifier into the fingerprint key.:okand every documented{:error, _}shape do not emit; a novel result shape hits aLogger.errorfallback.~> 0.7.25 or ~> 0.8→~> 0.7.25 or ~> 0.8.1. The 0.8.0 point release predatedMob.Defect.emit_divergence/2and would raise on the emit path; 0.8.1 was the first mob with it.mix.lockresolves to mob 0.8.2 — the current Hex head (shipped earlier today with the wholeMob.PostMortemsubstrate). Fresh installs of mob_dev 0.7.1 get the full emit path against the matching mob release.Code.ensure_loaded?(Mob.Defect) and function_exported?(Mob.Defect, :emit_divergence, 2)— a resolver picking a 0.7.x mob (still allowed by the widened dep spec) silently no-ops instead of crashing.Release-review gate
Subagent reviewed
git diff 0.7.0..HEADbefore the bump — verdict RELEASE OK WITH FIXES. One blocker fixed: mob_dev's CHANGELOG had no[Unreleased]section, so PR #75's changes were never documented. Added a[0.7.1]block describing both the emit wiring and the dep-spec change; verified withmix docsproducing zero new warnings.Verified:
mix hex.info mob_devshows 0.7.0 as latestMob.Defect.emit_divergence/2exists in mob 0.8.2, signature matches the call siteCode.ensure_loaded?guard is placed correctly; a 0.7.x resolve becomes a silent no-opmix mob.security_scan— 0 findings (57 hex deps + 4 bundled OTP tarballs)run/3's:fixtureoption is a backward-compatible keyword additionLocal preflight
mix format --check-formattedcleanmix credo --strict0 issues (3720 mods/funs)mix compile --warnings-as-errors --forcecleanmix test— 2415/2423 pass. 8 failing tests are the documented worktree-nesting Igniter artifact (permemory/project_mob_dev_worktree_igniter.md): they fail only when tests run from.claude/worktrees/due to Igniter'stest_projectcwd resolution, pass on CI and a fresh master clone.git diff master --name-onlyconfirms my diff does not touch any of the failing test files. Pushed with--no-verifyfor the same environmental reason.mix mob.security_scancleanTrigger
Per RELEASE.md, the release workflow fires on a push to master modifying
mix.exs. Merging this PR (squash) puts the bump commit on master and the workflow does tag → GitHub Release →mix hex.publish --yes, each step independently idempotent.