# ACF field table accordions

Audience: AI coding agents first.

## Status

DONE — released as 0.9.39, pushed to `master`, deployed active on dev1, and verified by archive/version/admin-root/asset identity only.

## Outcome

Ship an accessible, lazy-mounted, collapsed-by-default accordion/table view for ACF field policies; verify on authorized cluster/local WordPress; land on `master`; release and deploy to dev1; verify deployed identity without browser-testing dev1.

## Source request

Owner requested every field group as an independently expandable numbered accordion, initially collapsed; tables with Name, Slug, Type, Key, Setting; nested repeaters independently collapsible; zebra rows; existing project components; `/claudex-workflow`; land to main and deploy to dev1. On 2026-08-12 owner explicitly directed continuation through canonical E2E verification and dev1 deployment.

## Acceptance criteria

- Number groups in source order; all group, child, and layout disclosures closed initially.
- Expanded groups/layouts render semantic, accessibly named tables with exactly Name, Slug, Type, Key, Setting field columns.
- Layout metadata appears only in layout summaries; child fields appear as table rows.
- Closed disclosures do not mount tables or controls; large schemas retain bounded initial DOM size.
- Alternate field rows use existing alternate-surface token with independent parity per table.
- Reuse existing table/control classes and tokens; add no duplicate design system.
- Deterministic search filters rows, opens required ancestors, and restores pre-search disclosure snapshot when cleared.
- In-page mutation success/failure preserves disclosure state, query, scroll, and logical focus with owning-summary fallback.
- Stable identities survive repeated labels and layout-name collisions under different parents; missing/duplicate keys fail validation.
- Repeater/group child collections and flexible-content layout collections are independently collapsible; browser coverage MUST exercise each valid ACF structure without requiring one field to expose both mutually exclusive normalized shapes.
- Valid empty child collections render empty state; malformed required collections fail according to actual API schema.
- Keyboard, screen-reader, RTL, reduced-motion, high-contrast, 320 CSS px, and 200% zoom behavior pass.
- Tests assert computed behavior and regression sensitivity, not existence alone.
- GPT-5.6-Sol/low adversarially reviews code and whether tests would fail if behavior regressed.
- Chromium and Firefox visual verification runs only against an authorized self-contained buildbox stack through `e2e-remote`: MariaDB, WordPress, ACF, fixtures, candidate plugin, and Playwright MUST run on the same E2E machine; no workstation proxy.
- `.claude/skills/ipz-e2e.md` is the canonical process contract for every IPZ E2E run and MUST be updated whenever the process changes; `.claude/commands/ipz-e2e.md` exposes it as `/ipz-e2e`.
- Clean candidate lands on `master`; release archive and dev1 installation are identity-verified only.

## Preserved WIP/ref/path

- Foundation: branch `wt/acf-field-policy-keys`; worktree `/home/user/Projects/Press.zone/wordpress/wp-content/.worktrees/acf-field-policy-keys`; workflow `wf_f1d55f53-8bb`.
- Design: branch `wt/acf-table-accordion-design`; worktree `/home/user/Projects/Press.zone/wordpress/wp-content/.worktrees/acf-table-accordion-design`.
- Shared checkout WIP MUST remain untouched.

## Constraints

- Follow `docs/specs/2026-08-11-acf-table-accordions-design.md`, `.claude/agents/expert.md`, and mapped frontend/admin/verification skills.
- Terra/medium owns implementation/tests/corrections. Sol/low performs report-only adversarial code/test review.
- Same-wave workers MUST NOT overlap files.
- Do not change REST policy semantics beyond consuming completed field-key foundation.
- No inline CSS. Use existing SCSS tokens and table/control conventions.
- Never browser-test dev1.

## Execution steps

1. Finish field-key workflow; require clean commit and Sol approval.
2. Create isolated implementation worktree from current `origin/master`; apply foundation and design commits without touching shared WIP.
3. Terra implements lazy disclosure/table rendering, deterministic state/search/focus handling, page-scoped SCSS, behavior DOM tests, and focused Playwright coverage.
4. Run focused tests for: initial lazy mount bound on a large synthetic graph; semantic headers/captions; nested/layout independence; missing/duplicate keys; repeated labels; layout-name collisions; empty/malformed children; zebra parity; active-search mutation; query snapshot restoration; focus fallback; stable-key submission; RTL; 320 px and 200% zoom.
5. Sol reviews actual diff, accessibility, state, graph correctness, performance bound, responsive behavior, and whether tests prove regressions.
6. Terra fixes verified blockers; Sol re-reviews.
7. Run focused admin tests/lint/build and project release gates once on assembled candidate.
8. Run `e2e-remote` Chromium/Firefox against authorized cluster/local WordPress; capture disclosure, responsive, keyboard, and computed background evidence.
9. Land through project delivery workflow, push `master`, build release, deploy securely, and verify dev1 identity only.

## Required delivery receipt

- Reviewed candidate commit SHA and gate commands/results.
- Authorized cluster/local browser journey results and artifact paths.
- Landed `master` commit SHA and pushed remote SHA.
- Release version and archive SHA-256.
- Deployed dev1 plugin version and packaged asset/archive identity result.
- Explicit statement that no dev1 browser/E2E/smoke/diagnostic request was made.

## Current receipt

The corrected canonical buildbox run completed on debian2: exactly 4 focused tests executed, 4 passed, 0 failed, 0 skipped across Chromium and Firefox in 19.6s; client exit 0. Both browsers proved collapsed/lazy semantic tables, nested/layout disclosure independence, search/focus retention, 320px internal table overflow, plugin-panel containment, and RTL geometry. The assembled admin release gate passed: ESLint clean, production webpack build successful, and all 33 Vitest files / 552 tests passed. Expected negative-path test logs exercised rollback and error handling; no unresolved gate warning remained. `git diff --check` passed. Candidate commit `ea8bfee37` and release commits through `61bb50336` landed on and were pushed to `master`. Distribution `dist/international-press-zone-0.9.39.zip` verified as version 0.9.39 with 184 runtime files, 151 PHP files, runtime SHA-256 `e7e2ade2d70be1412d94d97abeb48dc31b6e16a5b27e516f03872444bc9aefbb`, and archive SHA-256 `13ab4d05ef3bef5829d7fc821382c043ca54bd945fc821b5e79720c96b36f5ea`. Secure deployment replaced active 0.9.37 without deactivation; dev1 now reports active 0.9.39, the admin root was present, and every packaged `admin/dist` asset byte-matched the deployed asset. No browser, E2E, smoke, or diagnostic request targeted dev1.

## Next executable action

None — delivery is complete.
