Skip to content

Prove native Tabs assembly, editing and frontend persistence - #120

Merged
noeltock merged 5 commits into
mainfrom
codex/native-tabs-proof
Sep 28, 2026
Merged

noeltock merged 5 commits into
mainfrom
codex/native-tabs-proof

Conversation

@noeltock

Copy link
Copy Markdown
Member

Problem

Native Tabs were registered but lacked an explicit input contract and editor persistence proof. Closes #117.

Solution

Qualify the existing generic assembler without changing production code. The guide now supplies both native label locations and limits the claim to page content.

Behaviour Read first Proof
Complete labels, nesting, rich content and independent instances survive assembly dev/test/intent-tabs.test.ts Three headless variants pass
Frontend works before editor effects; native edits persist scripts/proof-tabs-playwright.mjs WordPress 7.1 browser run passes
Runtime proof stays outside normal unit tests vitest.wordpress.config.ts Explicit suite and existing CI artifact root

Diff

+551 −2 · 7 files · no production API change

 realize -> existing generic createBlock -> shared finalisation/gate
+ explicit Tabs fixture -> three headless round trips
+ frontend before editor -> save/reopen -> label/body edits -> save/reopen
+ two-instance ARIA/click/keyboard proof -> native WordPress control
+ ASSEMBLE.md: matching list/panel labels and page-content boundary

Testing & verification

Reviewed revision: c564240 · Node 22.23.1, WordPress 7.1, PHP 8.3.35, Chromium 149.0.7827.55.

  • npm run verify passed: 709 tests passed, four existing skips; typecheck, build, corpus hashes and package checks passed.
  • npx --no-install vitest run dev/test/intent-tabs.test.ts dev/test/intent-query.test.ts dev/test/intent.test.ts dev/test/engine-skill.test.ts dev/test/skill.test.ts passed: 23 tests. The final guide edit additionally passed both skill suites (eight tests).
  • npx --no-install vitest run --config vitest.wordpress.config.ts dev/test/proof-tabs-wordpress.test.ts passed. Initial cold container startup timed out; the retained rerun passed after completing the same owned environment. Both save/reopen pairs had equal content hashes, clean reopened state and no invalid blocks. Arrow keys moved focus; Enter/Space activated tabs, matching the native control.
  • Local receipt: /tmp/block-runner-tabs-evidence/tabs; CI retains the same evidence under its existing WordPress artifact root.
  • git diff --check ff52333 passed.

Not verified: nested Tabs, registered-block label fields/overrides, model conversion quality, manual visual acceptance or a release. No model benchmark ran.

Risk / rollout

Production assembly is unchanged. The added browser proof requires the existing WordPress/Chromium prerequisites and retains failures instead of skipping them. The label rule follows Core metadata; keyboard assertions follow Core actions.

Detection: headless or WordPress CI fails on a persistence regression. Rollback: revert this PR; no migration or published package is involved.

@noeltock
noeltock merged commit 3bc649a into main Sep 28, 2026
1 check passed
@noeltock
noeltock deleted the codex/native-tabs-proof branch September 28, 2026 06:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Intent: prove native Tabs through save and reopen

1 participant