Skip to content

test(input): add multilingual browser input baseline - #380

Draft
seonghobae wants to merge 30 commits into
fix/atomic-controlled-sync-200from
test/cjk-input-assurance-376
Draft

test(input): add multilingual browser input baseline#380
seonghobae wants to merge 30 commits into
fix/atomic-controlled-sync-200from
test/cjk-input-assurance-376

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

Refs #376.

Purpose

Draft real-browser input-assurance child for #201. This lane owns browser harness/spec/config evidence only and does not write or re-own src/** production semantics.

Exact live stack

Decision-time state after non-destructive parent synchronization:

  • protected shipped truth: main@128a239f8b71ca16add4b9e15e21752d1ad63ff0;
  • parent PR fix(data-integrity): keep controlled value sync atomic #201 branch/head: fix/atomic-controlled-sync-200@3fd5157b9e9919800983d3bedce769d7a905c4ff;
  • exact child head: c994a250bf7b5e628540ddd971f5eae6cd102582;
  • parent -> child comparison: 30 ahead / 0 behind, merge base = exact parent head;
  • the synchronization commit has first parent predecessor child b89b38e22c10d01d2462b22361e4bc20b08f9ba0 and second parent exact fix(data-integrity): keep controlled value sync atomic #201 head 3fd5157b9e9919800983d3bedce769d7a905c4ff; no force push or destructive rebase was used;
  • child remains Draft, open and mechanically mergeable against its exact parent branch;
  • formal submitted reviews: 0; unresolved review threads: 0;
  • net child delta remains exactly seven browser-assurance files:
    • tests/browser/input-harness.html;
    • tests/browser/input-harness.ts;
    • tests/browser/playwright.config.ts;
    • tests/browser/specs/composition-clipboard.browser.spec.ts;
    • tests/browser/specs/composition-native-form.browser.spec.ts;
    • tests/browser/specs/read-only-clipboard.browser.spec.ts;
    • tests/browser/specs/touch-clipboard.browser.spec.ts.

This snapshot is not durable status truth. Refetch all refs, ancestry, writers, reviews and checks before any later lifecycle action.

Parent-overlap resolution

The only path changed both by the parent movement and this child was tests/browser/playwright.config.ts. The parent had expanded its narrow desktop selector from clipboard/print to clipboard/focus/print. This child deliberately keeps the stronger executable discovery contract /\.browser\.spec\.ts$/u, which subsumes the parent's focus inclusion and prevents committed browser specs from becoming structurally undiscoverable. The other six child paths do not overlap the parent movement.

Assurance scope

This child exercises committed multilingual/CJK and grapheme input, synthetic composition lifecycle, composition/clipboard interactions, native-form serialization, active-composition teardown/remount, read-only clipboard behavior, touch/pointer/focus geometry and reflow behavior, and loopback-only browser harness requests. It is browser-emulation/component evidence only; it does not establish physical-device OS-IME, real iOS Safari/Android Chrome, durable save, authorization, transport, tenancy, durable persistence, or host network-policy guarantees.

The causal production repairs for composition/read-only and controlled-value behavior are owned by parent #201. Copying those repairs into this browser-only child would create a competing source writer.

False-green repair

A predecessor contained composition-native-form.browser.spec.ts while its inherited Playwright selector selected only a narrow clipboard/print subset. That spec was structurally undiscoverable, so file presence could not be treated as execution evidence.

This child changes the desktop-engine selector in tests/browser/playwright.config.ts to /\.browser\.spec\.ts$/u. Every committed *.browser.spec.ts on this branch is therefore selected by Chromium, Firefox and WebKit, while clipboard.consensus.spec.ts remains isolated in the dependent consensus project. The child also makes the native-form/composition journeys fail closed on non-loopback browser requests: only 127.0.0.1:4173 is permitted, rejected origins are recorded, and the record must remain empty after each journey.

Exact-current-head verification

For unchanged exact child head c994a250bf7b5e628540ddd971f5eae6cd102582 against exact parent 3fd5157b9e9919800983d3bedce769d7a905c4ff:

  • repository CI run 32946978193: completed / success;
  • all six CI jobs completed success, including build-and-test, browser evidence, and Office on Python 3.11/3.12/3.13/3.14;
  • browser job 98109708820 checked out exact contributor head c994a250bf7b5e628540ddd971f5eae6cd102582, immediately passed Verify exact checkout, installed Playwright 1.62.0 pinned Chromium/Firefox/WebKit revisions, and ran 130 / 130 passing tests;
  • emitted cross-engine evidence binds runId=32946978193:1:c994a250bf7b5e628540ddd971f5eae6cd102582 and the same exact headSha;
  • build-and-test completed typecheck, 100% owned-production coverage, library build, packed-package verification, and demo build on the exact head;
  • Office matrix completed dependency consistency, 100% docstring/branch coverage, wheel and packaged schema/license gates on the exact head;
  • formal submitted reviews remain 0 and unresolved inline threads remain 0.

Predecessor child run 32894832083 remains historical only and is not transferred. Security/SAST/organization evidence not generated for this stacked Draft is absent and therefore non-passing for any lifecycle claim that would require it. Pending, queued, skipped-required, cancelled, absent, neutral, failed, stale, predecessor, status-only, model-only, wrong-checkout, synthetic-source or otherwise vacuous evidence does not pass.

Remaining #376 acceptance

This Draft does not close #376. Remaining acceptance includes authorized real OS-IME/candidate journeys; controlled-value plus autosave/revision interactions during composition; collaboration-near-composition behavior; broader toolbar/dialog/hydration cases; stronger mobile target-size/no-hover/focus/zoom/reflow assurance on accepted devices; and periodic authorized real-device evidence before claiming iOS Safari or Android Chrome support.

Ownership / governance boundary

No transport, authentication, authorization, tenancy, durable persistence, credentials, model/provider, network, Yjs-provider, durable audit, deployment, migration, retention, or durable PDF authority moves into Inkspan through this lane. Keep this PR Draft behind #201 and the protected release-acceptance boundary. Before any lifecycle transition, refetch exact parent/head/live protected base, ancestry/mergeability, changed refs/active writers, live governance, exact-current workflow/job evidence including checkout SHAs, formal reviews and unresolved threads. Do not self-approve, weaken gates, transfer predecessor evidence, fabricate mobile/IME support, or represent this Draft as protected-main shipped truth.

Refs #376. Add cross-engine committed-input fidelity coverage plus a bounded synthetic composition lifecycle probe without claiming real OS IME or mobile-device support.
@coderabbitai

coderabbitai Bot commented Aug 20, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@seonghobae
seonghobae changed the base branch from main to fix/atomic-controlled-sync-200 August 21, 2026 14:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

priority: medium Normal-priority or P2 work status: draft Draft pull request type: test Test coverage, fixtures, fuzzing, or validation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

test(input): add cross-engine CJK IME, touch, and mobile editing assurance

1 participant