# Plugin release closure

Status: DONE — locally owned release-closure work landed; remaining go-live blockers are concurrent, external, or final-RC evidence.

## Purpose

Close the remaining **plugin release/product-readiness work that is not already owned by the concurrent `plugin-production-completion` thread**. This lane does not reimplement feature WIP that another thread owns. It turns the late-stage plugin into a truthful, reproducible, supportable release candidate for the first paying customer.

Canonical baseline at plan creation: `origin/master` @ `13d43eaa7be47ef567161ca0533cf6cadff3635f`.

## Ownership boundary

### Explicitly NOT owned here

The concurrent `docs/plans/2026-08-19-plugin-production-completion.md` lane owns all of the following. Do not touch its production/test files unless a concrete merge conflict requires a minimal reconciliation after that work lands:

1. connected-site credential provisioning in the remote E2E fixture;
2. real Worker E2E and release-regression proof for sync translation and async submit/poll/finalize/cancel;
3. ACF/Yoast accordion and translation-behavior reconciliation from `wt/modal-acf-yoast-accordions`;
4. page-fidelity implementation/regression recovery from `wt/page-fidelity-delivery` and the obsolete orchestration carrier;
5. manual-translation overwrite protection rebuilt from the preserved design/tests;
6. language-root switching, Yoast robots/sitemap ownership, Site Content schema/provisioning cleanup;
7. broad Chromium/Firefox E2E and final feature-gate execution;
8. stale E2E test-remediation work already tracked by `2026-08-15-e2e-failure-remediation.md`.

### External dependency — track, do not implement

Stripe production clearance is pending outside this repository and is expected in roughly 2–3 weeks. Stripe checkout code is WIP/blocked on that clearance. This lane MUST NOT invent a replacement payment path, restore PayPal, or treat Stripe clearance as engineering work to be solved here.

### Existing capability — protect, do not rebuild

The real translation lifecycle is an existing capability and has regression coverage (`real-translate.spec.js`, `SyncTranslationContractStandaloneTest.php`, `TranslateJobsCompletionStandaloneTest.php`, finalizer regression tests, bulk/cancel journeys). Treat a future failure as a regression. Do not redesign or rewrite this flow absent a failing current-master regression owned by the production-completion lane.

## Deliveries

### RC-01 — Correct the go-live tracker

Update `GOLIVE.md` so it reflects current owner truth:

- Stripe/checkout is `WAITING_EXTERNAL`, not an engineering unknown to be rediscovered.
- Real translation lifecycle is `WORKS / regression-protected`; final release rerun is still required but implementation is not missing.
- Remove Stripe and translation implementation from the list of work this lane should execute.
- Keep feature WIP owned by the production-completion lane marked as concurrent/WIP rather than duplicating it here.
- Keep final release evidence distinct from feature implementation.

Acceptance:
- no PayPal/license-key architecture reintroduced;
- tracker distinguishes external wait, existing capability, concurrent WIP, and unverified release evidence;
- `git diff --check` clean.

### RC-02 — Make customer-facing product copy truthful

Rewrite `readme.txt` and `README.md` from current runtime/product facts rather than historical marketing claims.

Required corrections:

1. Public product identity is **International Press Zone**, matching the plugin header and current admin UI.
2. Keep the actual runtime requirements from code/Composer: WordPress `>=6.0`, PHP `>=8.0`; do not claim PHP 8.3 as a minimum unless code changes first.
3. Remove unverified quantitative claims such as `10x faster`, `98% query reduction`, fixed cache-hit percentages, fixed latency, and unsupported scale/load numbers.
4. Remove hard-coded plan prices, support SLAs, “14-day free trial”, phone/24x7 promises, and package entitlements that are not sourced from the live commercial catalog.
5. Remove WordPress.org “search/install” instructions while this is a privately distributed commercial plugin; document ZIP install and signed in-product update flow instead.
6. Remove or qualify feature promises that are not in the frozen first-customer supported scope. Do not advertise WPML migration, WooCommerce/multi-currency, Elementor, Rank Math, white-label, team workflow, translation memory/glossary, or broad enterprise claims merely because historical code exists.
7. Keep only capabilities actually present and intended for the current commercial release: multilingual language management, translated posts/pages/strings, frontend localized routing/switching, AI translation through Press.Zone, bulk/job workflow, current account/connect surface, and integrations only once their concurrent acceptance lane is green.
8. Repair changelog chronology. Do not keep the fake/out-of-order historical `1.0.0 - 2026-01-26` entry in a `0.9.x` pre-release series.
9. Keep legal/license wording consistent with `composer.json` and the plugin header; do not silently switch license model in this task.
10. Never expose backend credentials, internal endpoints beyond what customers need, local development URLs, or test credentials.

Acceptance:
- grep finds no stale `Multilingual Press Zone`, hard-coded `$99/$299/$999`, `10x faster`, or free-trial/SLA claims in the two customer-facing files;
- stable tag/header/version remain consistent;
- no unsupported install path is promised;
- docs remain useful enough for a paying customer to install and start onboarding.

### RC-02B — Retire stale legal/commercial templates

The `legal/` drafts contain obsolete product identity, payment-provider, customer license-key, fixed-price, trial/refund, support-SLA, and categorical compliance claims. Replace them with architecture-aligned internal drafts/checklists rather than guessing new legal terms.

Requirements:

- use International Press Zone identity;
- remove retired payment/license-key facts and hard-coded pricing/SLA/trial values;
- describe current Connect/site-credential and translation-content data flows accurately at a high level;
- record Stripe as pending external clearance;
- remove categorical GDPR/compliance/security assertions not backed by current production evidence;
- mark every legal file as draft/internal until qualified legal/business review;
- make legal/privacy approval an explicit go-live requirement.

Acceptance: no stale product/payment/license/pricing/SLA claims remain in `legal/*.md`; no document presents itself as approved legal advice or verified compliance.

### RC-03 — Freeze a first-customer supported-scope matrix

Create `docs/launch/FIRST-CUSTOMER-SCOPE.md` with three states:

- `SUPPORTED` — part of the first-sale promise and therefore must have acceptance evidence before release;
- `CONDITIONAL` — supported only when the named integration/customer-stack condition is present and its dedicated acceptance lane is green;
- `DEFERRED` — may exist in code but is not promised for this first commercial release.

At minimum classify:

- install/activate/update;
- language CRUD/default language;
- post/page translation;
- string translation;
- sync AI translation;
- async/bulk translation and cancel;
- frontend localized URLs/language switcher;
- account/connect status;
- Stripe purchase/billing as `CONDITIONAL / WAITING_EXTERNAL` until clearance;
- ACF and Yoast as conditional on the concurrent reconciliation lane;
- manual-translation protection and page fidelity as required once concurrent work lands;
- WPML migration;
- Site Content/templates/navigation/synced patterns;
- WooCommerce/multi-currency;
- Elementor / Rank Math;
- team workflow/assignment/analytics;
- translation memory/glossary;
- multisite/broad third-party compatibility.

The matrix is a release contract, not a roadmap. Anything `DEFERRED` must not be sold as production-ready in RC-02.

Acceptance:
- every major claim removed/kept in RC-02 maps to a matrix row;
- no historical plan status alone makes a feature `SUPPORTED`;
- concurrent WIP remains visibly conditional until its lane lands and passes.

### RC-04 — Add a deterministic release-readiness preflight

Reuse existing tools; do not create a second distribution builder or deployment system.

Implement a small non-mutating `tools/release-preflight.mjs` plus focused tests. It must:

1. require a clean Git checkout;
2. read and compare plugin header version, `IPZ_VERSION`, `readme.txt` stable tag, and distribution manifest expectations using the existing version parser rather than duplicate regex logic where possible;
3. verify required release tools/files exist (`factory-gate.sh`, `build-distribution.mjs`, `verify-local.mjs`, distribution manifest, rollback/release docs);
4. verify customer-facing docs contain the canonical product name and reject known retired architecture phrases in the active release surface (`PayPal`, customer license-key onboarding, `Multilingual Press Zone`) while allowing historical plan archives outside the release surface;
5. report concurrent blockers without mutating source: Stripe clearance, production-completion feature lanes, and final browser/runtime proof;
6. emit a concise machine-readable JSON result with `pass`, `blocking`, `waiting_external`, and `concurrent` groups;
7. exit non-zero only for deterministic local release defects, not for an external Stripe wait or still-running named concurrent lanes.

This is a preflight, not the final release gate. The final release still uses the existing factory gate, distribution builder/verification, ZIP runtime verifier, sanctioned browser E2E, and backend update/package path.

Acceptance:
- focused Node tests cover version mismatch, dirty tree, retired customer-facing wording, missing release tool, and clean preflight;
- no version bump or artifact build occurs during preflight;
- no network access occurs.

### RC-05 — Define the final artifact/install/upgrade/update/rollback evidence contract

Create `docs/launch/RELEASE-EVIDENCE.md` as the exact checklist/receipt schema for the final RC after concurrent feature work lands.

It must require and record:

1. exact source commit and matching backend deployment commit;
2. full factory-gate receipt;
3. exact built ZIP path, version, byte size, SHA-256, runtime content digest, and manifest verification;
4. clean ZIP install + activation via the existing `verify-local.mjs` path;
5. upgrade from the immediately previous supported release with preservation checks for languages, translations, settings, connection metadata, and manual customer edits;
6. signed update/package check, download, tamper rejection, installation, and installed-version/hash proof against the canonical backend;
7. rollback artifact identity and tested restore procedure;
8. required Chromium+Firefox first-customer journeys from the production-completion lane;
9. explicit `WAITING_EXTERNAL` section for Stripe clearance so an unapproved payment processor cannot be accidentally marked complete;
10. one final GO/NO-GO line with no ambiguous partial pass.

Acceptance:
- every release-proof item in `GOLIVE.md` maps to this evidence contract;
- the contract references existing tooling instead of inventing duplicate commands;
- no dev1/production deployment is performed by this documentation task.

### RC-06 — Reconcile `GOLIVE.md` with landed evidence

After RC-02..RC-05 and after any concurrent production-completion commits that land during this lane:

- rebase/merge current `origin/master` through normal repository tooling;
- update only criteria whose evidence changed;
- mark concurrent items `WORKS` only from their landed receipts/tests;
- leave Stripe `WAITING_EXTERNAL` until actual clearance/proof arrives;
- recalculate the scoreboard from criterion lines, not prose estimates;
- remove the old percentage-complete estimate if it cannot be mechanically defended.

Acceptance:
- `GOLIVE.md` is current against final landed master at the time of this lane's close;
- no item is checked from code inspection alone where runtime evidence is required.

## Execution order

1. Land this plan to `origin/master` before implementation.
2. RC-01 tracker correction.
3. RC-02 customer-facing product truth.
4. RC-03 supported-scope matrix.
5. RC-04 release preflight + tests.
6. RC-05 release evidence contract.
7. Reconcile current `origin/master`, then RC-06.
8. Run applicable deterministic gates for files changed by this lane and land through `~/.claude/bin/land`.

## Stop conditions

Do not wait for Stripe clearance in this lane. Do not start or duplicate page-fidelity, manual-lock, ACF/Yoast, Worker E2E, Site Content, language-root, sitemap, or broad E2E implementation. If those concurrent changes land, consume their receipts only during RC-06.

## Current receipt — 2026-08-19

- RC-01 implemented: GOLIVE distinguishes Stripe `WAITING_EXTERNAL`, existing regression-protected translation, concurrent feature WIP, and final release evidence.
- RC-02 implemented: customer-facing README/readme rewritten to current International Press Zone identity and runtime facts; stale fixed pricing, trial/SLA, unsupported quantitative performance, WordPress.org-search, and broad unverified integration claims removed.
- RC-02B implemented: stale legal/commercial templates replaced with current-architecture internal drafts; fixed pricing/trials/SLAs, retired payment/license-key instructions, and categorical GDPR compliance claims removed pending qualified review.
- RC-03 implemented: `docs/launch/FIRST-CUSTOMER-SCOPE.md` created with SUPPORTED / CONDITIONAL / DEFERRED / WAITING_EXTERNAL release contract.
- RC-04 implemented: non-mutating `tools/release-preflight.mjs` plus focused tests. Tests pass 6/6 for clean state, version mismatch, dirty tree, retired customer wording, retired legal wording, and missing release tool.
- RC-05 implemented: `docs/launch/RELEASE-EVIDENCE.md` defines exact final-RC factory/browser/artifact/install/upgrade/update/rollback/Stripe receipt requirements using existing tooling.
- RC-06 complete at `origin/master` `7df9ea27c2de64ff92917125a02ce5e9ce11774a`: no newer concurrent production-completion evidence had landed at close. GOLIVE baseline and scoreboard are reconciled to current master; page fidelity, manual protection, ACF/Yoast, Worker E2E, and other owned concurrent work remain explicitly outside this lane.
- Clean committed-tree `node tools/release-preflight.mjs` returned `pass: true`, version `0.9.67`, zero deterministic blockers, two Stripe `WAITING_EXTERNAL` criteria, and one ACTIVE concurrent production-completion lane.
