Skip to content

v2.4.3 - wire-layer MCP audit + 3 contract-drift fixes

Choose a tag to compare

@nicourrutia98 nicourrutia98 released this 28 Jul 16:15

v2.4.3 — wire-layer MCP audit + 3 contract-drift fixes

Date: 2026-07-28
Schema: v20 (unchanged across v2.4.x; v2.4.3 is test cleanup only)
Canonical tool count: 35 (unchanged — zero production code changes)
Commit: 198b92b

What this release does

v2.4.3 is the wire-layer hygiene audit the operator-approved roadmap
originally scoped as "vibe_spec/vibe_publish MCP wrapper fix".

The audit found that the original Form B JSON re-parse bug was
already fixed in F36 (v1.2.1, 2026-07-16)
— verified by the F36
wire tests passing against the v2.4.x binary. v2.4.3 ships the
actual hygiene fixes the audit revealed.

Three wire-layer bugs fixed

Bug A — TestWire_F37F38F39F40_BootAgainstDirtyDB schema drift

The dirty-boot test seeded a constitutions table with the OLDER
schema (is_active column instead of enabled). Production
migration v2 standardised on enabled. The watchdog SQL queries
enabled, so booting against the dirty DB crashed with
SQL logic error: no such column: enabled.

Fix: updated the test's constitutions schema to match the current
production schema (label, source, file_path, parsed_json,
sha256, enabled, activated_at, UNIQUE constraint). The test
still validates F37/F38/F39/F40 boot resilience scenarios.

Bug B — TestWire_HealthPingShape canonical count contract drift

Test asserted registry.canonical_tools == 29, frozen at v2.0.0
contract. v2.1.0 added AGENT_MEMORY namespace (5 tools); v2.3.0
added agent_memory_recall. Current canonical is 35.

Fix: updated assertion to expect 35. The contract documentation
was already updated in v2.3.0 — this propagates the contract update
to the remaining test.

Bug C — TestWire_RuntimeToolEnumeration tools/list contract drift

Test asserted tools/list returns 29 (un-armed) or 32 (armed),
frozen at v2.0.0. Current is 35 (un-armed) or 38 (armed).

Fix: updated wantUnarmed = 35 and wantArmed = 38. File-header
contract doc updated.

Why update tests, not production code (Bug A)

The dirty DB scenario is SIMULATED by the test. Real users always
run migrations in order; the production schema has been enabled-
based since v2 in early 2026. Adding a defensive fallback path
(enabled OR is_active) would mask future schema drift rather
than expose it. Minimal blast radius: update the test, keep
production code clean.

CHANGELOG cleanup

Updated the v2.3.0 "Process note" (describing the pre-F36 Form B
workaround) to reflect that F36 fixed it in v1.2.1 and the
workaround is no longer needed. Documentation drift fix.

Tests (all wire tests pass)

TestWire_F33_VibePublishHappyPath                  PASS
TestWire_INV8_DefaultDSNRespectsIsolation          PASS
TestWire_F35_TypeMismatchSurfacesFieldPath         PASS
TestWire_F36_VibeSpecAcceptsTasksAsArray           PASS  (regression guard for F36)
TestWire_F36_VibeSpecAcceptsTasksAsStringifiedArray PASS  (regression guard for F36)
TestWire_F37F38F39F40_BootAgainstDirtyDB           PASS  (Bug A fix)
TestWire_F37_DuplicateColumnDuringBoot             PASS
TestWire_HealthPingShape                           PASS  (Bug B fix)
TestWire_HealthPingLatency                         PASS
TestWire_INFRA002_ParseTasksFieldSurfacesFormAndCause  PASS
TestWire_RuntimeToolEnumeration                    PASS  (Bug C fix)

TestBridge7_* (4 tests) flaky under load (transport timeout when
cold-booting stdio subprocess + full suite in flight). All pass in
isolation. Same flake as v2.4.0/1/2 — not related to v2.4.3.

Drift governance

dark_memory_judge(eval_type=drift_judge) returned verdict=aligned
confidence 0.95 (evaluation 423). Release approved.

What v2.4.3 does NOT do (deliberate scope)

  1. Does not change the watchdog SQL to be schema-tolerant.
    Production code is clean; the dirty DB is a test scenario.
  2. Does not refactor F36's parseTasksField. The F36 dual-form
    dispatch (Form A vs Form B) is well-tested and stable.
  3. Does not add new tools or schema migrations. Zero production
    code changes. Tool count remains 35. Schema v20 unchanged.

Upgrade notes

  • Wire contract unchanged. Tool count remains 35.
  • Zero schema migration.
  • Existing v2.4.2 callers see no behavioral change.

Checksums (SHA-256)

dark-mem-mcp.exe      6FF3A109492241B5D76313BCB91AE90E083A24F559220B0A3CE22C68F1AF5849  25619968 bytes
dark-mem-cli.exe      17893DD6CC483C549B513222E1CA8149FD00904F2B1C68C56B09CB174C8C37F3  20588544 bytes
dark-mem-inspect.exe  FAC9E7778DEE94C820BD482D5E9B9D7924975397DDB2BB5B9AC7AC62064F33DD  20133376 bytes

Verified by dark-mem-inspect --versiondark-mem-inspect 2.4.3.

Carrying forward from v2.4.x

  • 35 canonical tools (no new tool in v2.4.3)
  • Schema v20 unchanged across v2.4.x
  • v2.4.0 drift_judge enrichment unchanged
  • v2.4.1 agent_id plumbing unchanged
  • v2.4.2 brand/compliance enrichment unchanged