Skip to content

v0.42.0

Choose a tag to compare

@github-actions github-actions released this 12 Jun 00:29
· 75 commits to main since this release
8436d2c

Caution

Do not enable the object cache on this version. Agent 0.42.0's drop-in (2.1.0) contains a boot recursion that exhausts the PHP worker's file descriptors on the first request after the object cache is enabled, fataling the site on every request. Update to v0.42.1 before enabling the object cache. If a site is already affected: delete wp-content/object-cache.php, restart PHP or the container (required to release leaked descriptors; deleting the file alone is not enough), update the agent to 0.42.1, then re-enable. All other 0.42.0 features are unaffected.

The object cache hardening arc (0.41.4 to 0.42.0)

This release consolidates the complete arc since v0.41.3 into one public tag. Versions 0.41.4 and 0.41.5 were never tagged publicly (0.41.4 contained a fatal fixed within the hour); the agent update channel received each step.

[0.42.0] - 2026-06-12

Fixed

  • Object cache: full behavioral parity audit against the category-leading implementation, with every accepted fix shipping alongside the test that proves it. Headline corrections: the in-request cache layer is now keyed identically to Redis, eliminating a multisite scenario where switching blogs could serve one site's cached values as another's; counter operations on missing keys now return false exactly as WordPress core does instead of fabricating values; serializer and compression settings the server cannot honor now fail loudly into safe mode with a named cause instead of silently mixing storage formats; the post-outage cache flush is rebuilt around a persisted outage marker and a Redis lock so exactly one request flushes after a genuine recovery and never during normal traffic; and install-mode detection no longer suppresses cache writes during WordPress upgrades.
  • Sixteen further contract corrections covering delete-on-missing return values, force-refresh reads on memory-only groups, write-through ordering, key validation, batched-read result ordering, back-compat property access, version-aware flush flags, multisite transient cleanup, and a guard against a performance plugin disabling our drop-in.

Added

  • Configuration drift detection. The agent now reports the fingerprint of the configuration file it is actually reading, and the dashboard flags when it diverges from the saved settings, ending the class of silent mismatch between what the control plane believes and what the site runs. Failed configuration pushes to the site now surface as a visible warning instead of being discarded.
  • Codec capability gate. Saving a configuration that requests a serializer or compression codec the site's own connection test reported as unavailable is now rejected up front with a clear message.
  • Named diagnosis for unreadable credentials files and honest cache-flush results in command-line contexts, plus complete teardown on deactivation and uninstall.
  • Four new integration-harness stages: multisite isolation, install-mode writes, file-ownership drift from command-line sessions, and outage-recovery flushing exactly once.

Migration m69 applies automatically on API boot. Agent 0.42.0 with drop-in 2.1.0; existing installs refresh automatically after the agent updates. Security reviewed (verdict ship, no findings).

[0.41.6] - 2026-06-11

Fixed

  • Object cache: the cache no longer flushes itself on every request. The recovery mechanism that clears potentially stale keys after a Redis outage misread its per-request state and treated the first successful operation of every page load as an outage recovery, wiping the entire site keyspace each request. With the cache enabled this made wp-admin dramatically slower than no cache at all: every read missed, every option re-queried the database, and all transients died per request. The flush now fires only after a genuinely recorded outage-to-recovery transition, with regression tests asserting no flush ever happens without a prior failure.
  • Object cache: non-activation diagnosis is accurate and names the culprit. The previous cause detection used a leftover substring check that misread the current drop-in and made four causes unreachable. The rewritten diagnosis distinguishes a replaced cache object (reporting the replacing class and file), an incomplete boot, a stale opcode cache, a suppression filter, an early definer (reporting its file), and missing, outdated, or foreign drop-ins, in the correct precedence order.

Added

  • A real-WordPress integration harness (docker compose: WordPress, MariaDB, Redis) that installs the built agent zip and asserts what unit tests structurally cannot: the engine actually serving as the active cache, keys surviving across requests (the direct regression net for the per-request flush bug), loose-typed plugin call shapes against the installed drop-in, heartbeat correctness in web and cron contexts, and a negative test for early cache definition. Runs nightly and on demand; not part of the default CI gate.

Agent-only release. Drop-in 2.0.2; existing installs refresh automatically after the agent updates.


What's Changed

  • feat: object cache 0.42.0 — full reference-parity contract + drift detection (+ 0.41.4-0.41.6 fix arc) by @mosamlife in #39

Full Changelog: v0.41.3...v0.42.0