Skip to content

Bump to 0.7.1 — MobDev.Differential emits divergences to the defect bus - #76

Merged
GenericJam merged 1 commit into
masterfrom
worktree-mob_dev-0.7.1-release
Sep 11, 2026
Merged

GenericJam merged 1 commit into
masterfrom
worktree-mob_dev-0.7.1-release

Conversation

@GenericJam

Copy link
Copy Markdown
Owner

Cut mob_dev 0.7.1 to Hex — patch bump that ships MOB-159 phase 2 (PR #75) to Hex users. MobDev.Differential.run/3 now emits a Mob.Defect.Capsule onto Mob.Defect.Bus when the comparator returns {:divergence, ...}.

What ships

  • MobDev.Differential.run/3 now calls Mob.Defect.emit_divergence/2 on divergence results. New :fixture option threads a caller identifier into the fingerprint key. :ok and every documented {:error, _} shape do not emit; a novel result shape hits a Logger.error fallback.
  • Dep spec widened ~> 0.7.25 or ~> 0.8~> 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; 0.8.1 was the first mob with it.
  • mix.lock resolves to mob 0.8.2 — the current Hex head (shipped earlier today with the whole Mob.PostMortem substrate). Fresh installs of mob_dev 0.7.1 get the full emit path against the matching mob release.
  • Guarded emit via 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..HEAD before 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 with mix docs producing zero new warnings.

Verified:

  • version-sanity — 0.7.1 not on Hex, mix hex.info mob_dev shows 0.7.0 as latest
  • cross-repo — Mob.Defect.emit_divergence/2 exists in mob 0.8.2, signature matches the call site
  • graceful-degrade — the Code.ensure_loaded? guard is placed correctly; a 0.7.x resolve becomes a silent no-op
  • mix mob.security_scan — 0 findings (57 hex deps + 4 bundled OTP tarballs)
  • public-surface delta — zero net-new public functions; run/3's :fixture option is a backward-compatible keyword addition

Local preflight

  • mix format --check-formatted clean
  • mix credo --strict 0 issues (3720 mods/funs)
  • mix compile --warnings-as-errors --force clean
  • mix test — 2415/2423 pass. 8 failing tests are the documented worktree-nesting Igniter artifact (per memory/project_mob_dev_worktree_igniter.md): they fail only when tests run from .claude/worktrees/ due to Igniter's test_project cwd resolution, pass on CI and a fresh master clone. git diff master --name-only confirms my diff does not touch any of the failing test files. Pushed with --no-verify for the same environmental reason.
  • mix mob.security_scan clean

Trigger

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.

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>
@GenericJam
GenericJam merged commit 21ba7f0 into master Sep 11, 2026
3 checks passed
@GenericJam
GenericJam deleted the worktree-mob_dev-0.7.1-release branch September 11, 2026 22:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant