feat(runtime): align React event prop bindings - #14
Conversation
|
Independent advisory review at exact head |
|
Delivery boundary at exact remote head
The PR remains draft and not merge-ready. No check, approval, merge, deployment, or release is being inferred. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: e1bdf16189
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
integrate-your-mind
left a comment
There was a problem hiding this comment.
Reviewed exact head 1188761f0a4b05a9f0f1825c82f4bec74ee4268d.
The earlier onFileCapture regression is fixed by limiting Capture suffix stripping to the React allowlist and the explicit repeated-suffix form. The listener keying also handles bubble/capture coexistence, phase changes, replacement, and removal correctly. I found no new P0–P2 source defect in the four changed paths.
This is not an approval or merge signal: the exact head has no GitHub workflow run, so runtime, typecheck, build, and full-test proof remain open.
| This matrix was reviewed against the current official React documentation on | ||
| 2026-07-28 and the Ferrite source and tests at the repository head. The labels | ||
| mean: | ||
|
|
There was a problem hiding this comment.
Pin this evidence to immutable revisions. Both “current official React documentation” and “repository head” move after this file lands, and the React source link below targets main, so the date alone does not let a reader reproduce which contracts were checked. Please name a React tag/commit and this Ferrite SHA, or remove the review-at-head claim.
Summary
onDoubleClickto nativedblclickCaptureprops with native capture-phase listenersCurrent disposition
FIX_NOW / ready for review, not merge eligible.
1188761f0a4b05a9f0f1825c82f4bec74ee4268dcodex/pr13-site-integration-proof@dc2ab5e0103ad06aab9e07ac8bc8cf563bab3644CLEAN/ mergeable as a Git diff onlyCaptureThe remote head fixes that P2 at the parser boundary: custom
onFileCaptureremains nativefilecapture, whileonFileCaptureCaptureexplicitly requests capture-phasefilecapture. The regression asserts both wrong-event silence and correct-event delivery across initial binding, replacement, and removal. The outdated thread remains open until executable exact-head proof exists; no review thread is being silently resolved from source inspection alone.Scope and dependency
This PR is stacked on the older
codex/pr13-site-integration-proofbranch. Its comparison is limited to:README.mddocs/react-compatibility.mdpackages/runtime/src/dom-base.tspackages/runtime/test/dom.test.mjsPR #13's actual current head is
a7a5f7f50dafd2a0a3eaab301ab570d787deac2d; this dependent PR must be reconciled and re-proven only after PR #13 reaches a terminal disposition. No rebase, retarget, or source mutation is included in this metadata refresh.It does not modify release scripts, server-action security, Cloudflare, observability, uploads, or publication behavior.
Reproduced original defects
Before the compatibility slice:
onDoubleClickregistereddoubleclick, so nativedblclickproduced no call.onClickCaptureregisteredclickcapture, so it did not participate in capture ordering.The formerly actionable P2 showed that parsing every trailing
Captureas a phase modifier would reinterpret the native custom eventfilecapture; the remote fix is intentionally covered by discriminating wrong/right-event regressions.Evidence and exact-head gaps
Independent exact-head source review of
1188761: ACCEPT, with no P0-P2 finding.Static checks at the exact remote head:
git diff --check: passnode --check packages/runtime/test/dom.test.mjs: passorigin/codex/react-compatibility..HEAD: no leaksCurrent missing proof:
No stale, denied, local-only, or earlier-SHA run is being relabeled as current CI evidence.
Compatibility boundary
Ferrite remains not drop-in React compatible. This slice aligns selected event prop names and phase selection only. Event objects remain native, listeners remain per-element, and Ferrite does not implement React synthetic delegation or
onChangenormalization.React capture names intentionally take precedence.
onClickCapturemeans capture-phaseclick; it cannot mean a bubbling custom event namedclickcapture. Unknown names such asonFileCaptureretain native custom-event behavior.onFileCaptureCaptureexplicitly opts that custom event into capture phase.onMouseEnterCaptureandonPointerEnterCaptureare not claimed as React two-phase capture props and retain custom-event mapping.Risk and rollback
Risk is limited to DOM listener registration, replacement, and removal. Rollback is a normal revert of the focused event commits; there is no migration, persistent data, configuration, deployment, or release state. The PR must not merge until its dependency is reconciled, the outdated P2 is proven closed by executable evidence, and all exact-head technical and repository review requirements are satisfied.