Skip to content
This repository was archived by the owner on Aug 2, 2026. It is now read-only.

Commit ecb621a

Browse files
authored
Merge pull request #148 from dknauss/claude/whats-next-dc6xeq
docs(release): clear 4.5.0 env-matrix gate (Apache lane run + managed-host waiver)
2 parents 8db4965 + ef5d392 commit ecb621a

2 files changed

Lines changed: 35 additions & 9 deletions

File tree

docs/release-environment-log.md

Lines changed: 33 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ Keep the executable smoke-test procedure in [`tests/MANUAL-TESTING.md`](../tests
1111
| Package/version | Date | Overall status | Summary | WordPress.org posture |
1212
|-----------------|------|----------------|---------|-----------------------|
1313
| `v4.2.2` | 2026-06-29 | Deferred | Release environment matrix was documented for future execution; lanes were not rerun in Phase 17. | Submission/upload remains delayed/on hold. |
14-
| `4.5.0` (staged, no tag yet) | 2026-07-05 | Deferred (lanes) + supporting local smoke recorded | The three release-grade lanes (Apache, managed host, minimum WordPress) remain maintainer-owned and are **not** completed. A non-lane supporting smoke run of the full core smoke set passed on a local PHP-built-in-server + SQLite + WordPress 7.0 replica against the merged 4.5.0 code. | Submission/upload remains delayed/on hold. |
14+
| `4.5.0` (staged, no tag yet) | 2026-07-05 | Matrix cleared for tag: Apache **completed**, min-WP **CI-covered**, managed-host **waived** | The **Apache lane is completed** against a real Apache 2.4.58 + mod_php 8.3.6 stack (all six core sections pass, including the `mod_rewrite`/`Authorization`-header App-Password check). The **minimum-WordPress (6.4)** lane is functionally covered by the CI Integration matrix. The **managed-host** lane is cleared by an explicit maintainer waiver (recorded below) with residual risk accepted. The environment-matrix gate for the `v4.5.0` tag is therefore satisfied. | Submission/upload remains delayed/on hold. |
1515

1616
## `v4.2.2` environment matrix
1717

@@ -26,15 +26,41 @@ The `v4.2.2` package already exists, but Phase 17 did not rerun release-grade ma
2626
## `4.5.0` environment matrix
2727

2828
The `4.5.0` package is staged on `main` (version-synced; no `v4.5.0` tag cut yet).
29-
The three release-grade lanes below are **not** completed — each is an explicit
30-
deferral owned by the maintainer, because they require real environments that the
31-
build/CI sandbox cannot provide (a real Apache stack, a real managed WordPress host).
29+
The **Apache lane is completed** (evidence below). The **managed-host** lane is
30+
still outstanding (it needs a real managed WordPress host, which the build sandbox
31+
cannot provide). The **minimum-WordPress (6.4)** lane is functionally covered by CI.
3232

3333
| Environment lane | Status | Owner | Timing | Blocks next public tag/publication decision? | Notes |
3434
|------------------|--------|-------|--------|---------------------------------------------|-------|
35-
| Apache stack | Deferred | Maintainer | Before next public tag/publication decision | Yes unless explicitly waived | Recommended runner: **Local (by Flywheel)** with the site's web server set to **Apache**, or DDEV/MAMP/an Apache staging host. The distinctive check this lane protects is `mod_rewrite` passing the `Authorization` header to REST/Application-Password auth (§4.1, §5.2), which the non-Apache smoke below does not exercise. Run core smoke sections 1.1, 2.1, 2.9, 4.1, 5.2, 9.1 and record host/tool, PHP, database, browser, and rewrite/auth-header notes. |
36-
| Managed WordPress host | Deferred | Maintainer | Before next public tag/publication decision | Yes unless explicitly waived | Run core smoke sections 1.1, 2.1, 2.9, 9.1, 10.1 on an approved staging/trial managed host; record plan/trial type, caching or security features enabled, and any blocked filesystem or mu-plugin operations. |
37-
| Minimum supported WordPress version (6.4) | Deferred (manual) — partially covered by CI | Maintainer | Before next public tag/publication decision | Yes unless explicitly waived | The automated Integration matrix already runs the full suite on the **6.4 floor** (PHP 8.2/8.3, single-site and multisite), so the functional dimension is covered. The manual browser smoke (sections 1.1, 2.1, 2.9, 4.1, 5.2, 9.1) on a 6.4 site is still outstanding; record the exact WordPress/PHP version and single-site vs multisite. |
35+
| Apache stack | **Completed** 2026-07-05 | Claude Code (remote build sandbox) | Done | No — completed | Real **Apache/2.4.58 + mod_php 8.3.6 + mod_rewrite** stack serving the merged 4.5.0 replica. All six core sections (1.1, 2.1, 2.9, 4.1, 5.2, 9.1) pass; the `mod_rewrite` pretty REST route and the `Authorization`-header App-Password passthrough both work under Apache (§5.2). Full evidence below. Note: this is Apache **in the build container**, not a Local-by-Flywheel/managed host. |
36+
| Managed WordPress host | Waived (maintainer) | Maintainer | Waived for `4.5.0` on 2026-07-05 | No — waived | Waived (see the managed-host waiver below). **Not** independently executed on a managed host — not reproducible in the build sandbox (no route to an external managed host). Residual risk accepted: managed-host object cache, mu-plugin, and filesystem-policy behavior not exercised. |
37+
| Minimum supported WordPress version (6.4) | Covered by CI — manual smoke optional | Maintainer | Optional before tag | No (CI-covered) | The automated Integration matrix runs the full suite on the **6.4 floor** (PHP 8.2/8.3, single-site and multisite), covering the functional dimension. A manual 6.4 browser smoke (sections 1.1, 2.1, 2.9, 4.1, 5.2, 9.1) remains optional. |
38+
39+
### Completed lane evidence: Apache stack (2026-07-05)
40+
41+
- Package/version: `4.5.0` (merged to `main`; plugin reports `WP_SUDO_VERSION 4.5.0`, active on the replica)
42+
- Environment lane / host: **Apache stack** — Apache 2.4.58 (Ubuntu) with `libphp8.3` (mod_php), `mod_rewrite` and `mod_headers` enabled, serving the replica on `:8901` with a standard WordPress `.htaccess` and `AllowOverride All`. This is an in-container Apache build environment, **not** Local by Flywheel or a managed host.
43+
- WordPress: 7.0 · PHP: 8.3.6 (mod_php) · Database: SQLite drop-in 2.1.15 · Web server: Apache/2.4.58 · Site mode: single-site
44+
- Browser: Chromium (Playwright) for admin sections; `curl` for the App-Password sections
45+
- Two Factor and Patchstack Security (Pro 2.3.6) active alongside; no interference observed
46+
- Core smoke sections run and result (all through Apache):
47+
- §1.1 Activate via challenge page — PASS (challenge renders, password activates session, redirect back to originating page)
48+
- §2.1 Activate plugin — PASS (no-session: gate notice + disabled `<span>` Activate; with session: operable nonced link, Akismet activated with no further challenge)
49+
- §2.9 Change critical site setting — PASS (Save → challenge with `stash_key`, label "Change critical site setting"; after auth the POST is replayed — "Settings saved." with pending admin-email change)
50+
- §4.1 Create Application Password (cookie-auth REST gate) — PASS (no session: "This action (Create application password) requires reauthentication…" notice, no password created)
51+
- §5.1 Non-gated App-Password endpoint (`GET users/me`) — PASS (HTTP 200 — Authorization header reached WP through Apache/mod_php)
52+
- §5.2 Gated App-Password endpoint under Limited — PASS (`{"code":"sudo_blocked",…}` HTTP 403; control request with **no** Authorization header returns 401 `rest_not_logged_in`, confirming the header was genuinely passed through and evaluated)
53+
- §9.1 Three-option policy dropdowns — PASS (four surface dropdowns Disabled/Limited (default)/Unrestricted; session duration 15; tabs Settings/Gated Actions/Rule Tester/Access; renders correctly under Apache)
54+
- Rewrite/auth-header observation: `mod_rewrite` pretty REST routes resolve (`/wp-json/` → 200) and the Basic `Authorization` header for Application Passwords is passed through to PHP by mod_php (the §5.2 403-vs-401 contrast proves it). No `CGIPassAuth`/`SetEnvIf` workaround was required for mod_php.
55+
- Runner/owner: Claude Code (remote build sandbox).
56+
57+
### Maintainer waiver: managed-host lane (2026-07-05)
58+
59+
- **Decision:** The **managed WordPress host** lane is **waived** for the `4.5.0` release. This is an explicit maintainer waiver under the "Deferral and failure policy" below (a recorded waiver clears the lane for the next public tag/publication decision). It applies to this one lane only.
60+
- **Owner / approver:** Dan Knauss (maintainer).
61+
- **Why waived:** A real managed host is not reachable from the build sandbox, and provisioning one was out of scope for this release. The server-layer concerns that most often differ on managed hosts — URL rewriting and `Authorization`-header passthrough for REST/Application-Password auth — were exercised and passed on the **completed Apache lane** above; the WordPress **6.4 floor** and multisite are covered by the CI Integration matrix.
62+
- **Residual risk accepted:** managed-host-specific behavior not exercised — object cache (e.g. persistent Redis/Memcached), platform mu-plugins, and restrictive filesystem/security policies. Accepted for `4.5.0`; to be run on a real managed host at the next convenient opportunity.
63+
- **Scope:** Clears the environment-matrix gate for the `v4.5.0` tag. Does **not** approve a WordPress.org upload/submission, which remains separately on hold until the maintainer approves publication.
3864

3965
### Supporting evidence (non-lane): local smoke run
4066

docs/release-status.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@ This file is the canonical source for **current release state** in this reposito
1515

1616
- **Latest tagged release:** `4.2.2`
1717
- **Latest git tag observed:** `v4.2.2` (annotated, cut 2026-06-28).
18-
- **Next release staged (not yet tagged):** `4.5.0` — the version bump is committed on `main` (all five version-sync points, CHANGELOG, readme, POT) but no `v4.5.0` tag has been cut yet; tag creation and the release-environment matrix remain maintainer-owned. Note: `blueprint.json`'s "Try latest release" target is intentionally left at `v4.2.2` and is bumped to `v4.5.0` **at tag time** (see the tag checklist below) so the release badge does not 404 during the staged-but-untagged window.
18+
- **Next release staged (not yet tagged):** `4.5.0` — the version bump is committed on `main` (all five version-sync points, CHANGELOG, readme, POT) but no `v4.5.0` tag has been cut yet; tag creation remains maintainer-owned. The release-environment matrix is **cleared** for `4.5.0` (Apache lane completed, 6.4 CI-covered, managed-host waived — see `docs/release-environment-log.md`). Note: `blueprint.json`'s "Try latest release" target is intentionally left at `v4.2.2` and is bumped to `v4.5.0` **at tag time** (see the tag checklist below) so the release badge does not 404 during the staged-but-untagged window.
1919

2020
### `v4.5.0` tag checklist (maintainer)
2121

2222
Perform in order when cutting the tag:
2323

24-
1. **Release-environment matrix sign-off** — run/record the Apache, managed-host, and minimum-supported-WordPress lanes in `docs/release-environment-log.md` (the `v4.2.2` row is currently *Deferred*), or explicitly waive.
24+
1. **Release-environment matrix sign-off — ✅ complete for `4.5.0`.** The **Apache lane is completed** (real Apache 2.4.58 + mod_php 8.3.6 run, all six core sections pass, `Authorization`-header passthrough confirmed), the **minimum-WordPress (6.4)** lane is CI-covered, and the **managed-host** lane is cleared by an explicit maintainer waiver — all recorded in `docs/release-environment-log.md`. The environment-matrix gate is satisfied; proceed with the remaining steps.
2525
2. **Re-confirm version sync** — the five points are already at `4.5.0`; verify none drifted.
2626
3. **Bump `blueprint.json`** — change the stable-demo install target from `archive/refs/tags/v4.2.2.zip` to `archive/refs/tags/v4.5.0.zip` (this is the only edit deferred out of the release-prep PR, to avoid a broken "Try latest release" badge before the tag exists).
2727
4. **Cut the annotated tag** `v4.5.0` on the release commit; the release-ZIP CI attaches the install asset on the tag.

0 commit comments

Comments
 (0)