# Dev1 Yoast language fatal — repair

**Audience:** AI coding agents first.
**Status:** DONE
**Task ID:** 14
**Source request:** On 2026-08-14 the owner reported dev1’s main page broken by `Call to undefined function InternationalPressZone\Compatibility\ipz_get_current_language()` in `includes/Compatibility/YoastSEOIntegration.php:279`, requested a fix and redeploy, and prohibited testing on dev1.
**Outcome:** Remove Yoast’s calls to undefined legacy helper functions, cover the failure locally, deploy the repaired release to dev1, and run no functional/browser tests against dev1.
**Preserved WIP:** Repair landed on `origin/master` as `55d0b70d7`; shared-checkout WIP remained untouched.
**Constraints:** Change only Yoast compatibility language/translation resolution and its regression coverage. Use injected `TranslationBridge`; do not create global compatibility helpers or change unrelated integrations. Build and test locally. Dev1 interaction is limited to the canonical deployer’s required upload, activation/version, admin-shell, and byte-integrity checks. Never test dev1. Do not touch dev3 or production.

**Acceptance criteria:**
- `YoastSEOIntegration` contains no call to `ipz_get_current_language()` or `ipz_get_content_manager()`.
- Current language and translation lookup use its injected `TranslationBridge`; missing bridge fails closed by returning original values/pieces.
- A deterministic local regression test exercises the reported path and proves no undefined-function fatal.
- Applicable PHPUnit, PHPCS, PHPStan, distribution build, and archive verification pass cleanly.
- Canonical deployment reports the new version active on dev1 and byte-verifies declared assets; no additional dev1 request/test runs.
- Release metadata, fix, tests, and final receipt land through the guarded repository lander.

**Execution steps:** Inspect existing Yoast and bridge seams; implement the minimal replacement; add regression coverage; run local gates; build canonical release; deploy without dev1 testing; update receipt; commit and land.

**Current receipt:** Root cause confirmed: Yoast called two functions that have no definition anywhere in the plugin despite receiving a fully initialized `TranslationBridge` from `Core\Plugin`. Both calls now use the injected bridge, and absence of the bridge returns original metadata/schema unchanged. Local regression coverage exercises the reported OpenGraph path and null-bridge behavior. PHPUnit passes 80 tests/298 assertions; PHPStan reports no errors after removing the two now-stale Yoast baseline entries; Composer audit reports no advisories; changed-file pre-commit gates, helper-removal, and `git diff --check` pass. The canonical builder created `international-press-zone-0.9.55.zip` from source commit `2413ff3bb89456b4e51ab1d026cca94c24936c1d`, containing 193 runtime files with SHA-256 `3f341002e53efd233f4a58c7b96b85d7db50fcdcf04475d29db8c7aaebeedd70`. The canonical deployer replaced active dev1 version 0.9.54 without deactivation, confirmed 0.9.55 active, and byte-verified every declared admin asset. Per owner instruction, no main-page, functional, browser, or other post-deployment test ran on dev1. The guarded lander merged the repair to `origin/master` as `55d0b70d7`; its release gate advanced repository metadata to 0.9.56, while the deployed 0.9.55 archive contains the same landed repair. Dev3 and production were untouched.

**Follow-up receipt (2026-08-14, dead compatibility scaffolding):** Provenance traced: `Compatibility/` originated in the abandoned `multilingual-press-zone` plugin (Feb 2026) and was copied wholesale into `international-press-zone` in March 2026. `YoastSEOIntegration` stayed unwired until `a237885ee` ("Ship multilingual site entry routing") registered it in `Core\Plugin`, which is when its dormant undefined-function calls became the reported fatal. Owner approved keeping the Yoast integration as a product feature and deleting the never-wired remainder. `CompatibilityInterface` was retained: `ACFIntegration` implements it and `tests/unit/API/PostsControllerEstimateStandaloneTest.php` requires it. Deleted `CompatibilityManager.php`, `ElementorIntegration.php`, and `WooCommerceIntegration.php`, none of which any live code path referenced; `CompatibilityManager` instantiated classes (`ContactForm7Integration`, `CustomPostTypeSupport`, `CustomTaxonomySupport`, `GravityFormsIntegration`) that exist nowhere in the plugin. Removed their two `tools/ui-php-surfaces.mjs` entries, 3 PHPCS baseline entries, and 30 PHPStan baseline blocks. PHPUnit exits 0 with only the pre-existing `tests/known-failing.txt` set; PHPStan reports no errors; `ui-gate` reports ok. The canonical builder produced `international-press-zone-0.9.57.zip` (191 runtime files, SHA-256 `da3c41a8df2483cf08c9884ae0e0065d7e1778676a4ffa50f3e90e9e1f0ff8bd`) and the canonical deployer confirmed 0.9.57 active on dev1 with every declared admin asset byte-verified. Release `0.9.56` carrying the Yoast repair deployed and landed immediately prior. No functional, browser, or smoke test ran against dev1; dev3 and production untouched.

**Next executable action:** None. Yoast repair and dead-scaffolding removal are both deployed to dev1 and landed on `origin/master`.
