Skip to content

a11y(frontend): use native form submission for keyboard workflows - #696

Closed
seonghobae wants to merge 47 commits into
mainfrom
palette-form-submission-2191064457221307953
Closed

a11y(frontend): use native form submission for keyboard workflows#696
seonghobae wants to merge 47 commits into
mainfrom
palette-form-submission-2191064457221307953

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 1, 2026

Copy link
Copy Markdown
Collaborator

What

Convert the standalone input/action groups for project creation, connection creation, inline project creation, diagram search, and canvas search into semantic forms.

Creation actions now use type="submit" and shared onSubmit handlers. Search forms prevent navigation while retaining their existing live filtering behavior.

Why

Users should be able to press Enter from an input without locating and clicking a separate action button. Native form semantics provide that behavior consistently for keyboards and assistive technologies while keeping the visual layout unchanged.

Regression coverage

  • Whitespace-only project names do not submit.
  • Valid inline and editor project names submit exactly once through Enter.
  • Invalid connection DSNs remain rejected and do not call the API.
  • A valid connection submits exactly once through Enter.
  • Diagram and canvas search submit events are safely prevented without changing filtering results.

The required current-head frontend workflow must pass npm ci, typecheck, the complete 100%-coverage suite, and the production build before merge.


Originally created by Jules for task 2191064457221307953.

Summary by CodeRabbit

  • 접근성 개선

    • 프로젝트 생성, 연결 저장, 목록 생성 및 검색 기능을 키보드 Enter 키로 제출할 수 있도록 개선했습니다.
    • 입력값 검증, 제출 버튼 상태 및 오류 표시 동작을 유지했습니다.
  • 버그 수정

    • 검색 및 제출 시 페이지가 의도치 않게 새로고침되지 않도록 개선했습니다.
    • 상태 표시와 검색 기능이 보다 안정적으로 동작하도록 개선했습니다.
  • 테스트

    • 유효하지 않은 입력 차단과 유효한 입력의 정상 제출 동작을 검증하는 테스트를 보강했습니다.
    • 키보드 기반 제출 및 검색 동작을 추가로 확인했습니다.

@google-labs-jules

Copy link
Copy Markdown

👋 Jules, reporting for duty! I'm here to lend a hand with this pull request.

When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down.

I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job!

For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with @jules. You can find this option in the Pull Request section of your global Jules UI settings. You can always switch back!

New to Jules? Learn more at jules.google/docs.


For security, I will only act on instructions from the user who triggered this task.

@coderabbitai

coderabbitai Bot commented Aug 1, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@seonghobae, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 27 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 15c24200-f080-40cf-b08b-0fa29cfa9515

📥 Commits

Reviewing files that changed from the base of the PR and between c48e5b0 and cf597e6.

⛔ Files ignored due to path filters (1)
  • frontend/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (3)
  • frontend/package.json
  • frontend/src/App.coverage.test.tsx
  • frontend/src/App.tsx
📝 Walkthrough

Walkthrough

프로젝트 생성과 검색 입력을 form 제출 방식으로 변경했습니다. Enter 키 제출과 입력 검증을 테스트했습니다. CSS 클래스 정제 함수를 추가하고 프런트엔드 패키지 버전 범위를 수정했습니다.

Changes

폼 제출 흐름

Layer / File(s) Summary
폼 제출 구조 전환
.jules/palette.md, frontend/src/App.tsx
프로젝트 생성을 formonSubmit으로 처리합니다. 제출 버튼을 type="submit"으로 변경합니다. 다이어그램 검색과 캔버스 검색을 검색 form으로 감쌉니다.
폼 제출 동작 검증
frontend/src/App.coverage.test.tsx
Enter 키 제출을 검증합니다. 공백 프로젝트명과 잘못된 DSN은 API를 호출하지 않습니다. 유효한 입력은 한 번만 처리합니다. 검색 폼은 기본 제출 동작을 방지합니다. 비동기 탐색과 오류 처리 테스트도 갱신합니다.

CSS 클래스 정제

Layer / File(s) Summary
CSS 클래스 문자열 정제
frontend/src/App.tsx
sanitizeCssClass 함수를 추가합니다. CSS 클래스에 허용된 문자만 유지합니다.

프런트엔드 의존성 버전

Layer / File(s) Summary
패키지 버전 범위 수정
frontend/package.json
React, @xyflow/react, 테스트 도구, 타입 패키지, fast-check의 버전 범위를 변경합니다. jsdom 버전을 낮춥니다.

Estimated code review effort: 3 (Moderate) | ~25 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 제목은 키보드 워크플로를 위해 네이티브 폼 제출을 적용한 PR의 주요 변경 사항을 정확하게 설명합니다.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch palette-form-submission-2191064457221307953

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

@opencode-agent opencode-agent Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

OpenCode cannot approve yet because required coverage evidence did not pass.

Review outcome

1. HIGH .github/workflows/opencode-review.yml:1 - Coverage evidence did not prove required test/docstring evidence

  • Problem: The required coverage-evidence job result was failure, so OpenCode cannot establish approval sufficiency for this head.

  • Root cause: Automated approval is only valid when the same-head coverage-evidence job proves supported repository test suites passed and configured docstring gates passed or were advisory, or reports not applicable because no supported source files or package manifests exist. Missing, failed, skipped, unavailable, or unsupported-tooling test evidence is a blocker.

  • Fix: Install or configure the repository test/docstring evidence tooling when source files or package manifests exist, rerun the current-head coverage-evidence job, and approve only after it reports success with required evidence or explicit no-source not-applicable evidence.

  • Regression test: Keep the approval branch checking needs.coverage-evidence.result == success before posting APPROVE, and publish REQUEST_CHANGES when coverage-evidence blocker states such as cancelled, skipped, failed, unsupported-tooling, or below-100 evidence are present.

  • Result: REQUEST_CHANGES

  • Reason: coverage-evidence result was failure, so required test/docstring evidence was not proven for current head 3893e260b0960ddcff953057b15bfaaf3cc13efd.

  • Head SHA: 3893e260b0960ddcff953057b15bfaaf3cc13efd

  • Workflow run: 30719550150

  • Workflow attempt: 1

Coverage evidence

Coverage Decision

  • Result: FAIL
  • Test evidence: not proven passing
  • Docstring evidence: not proven passing when configured
  • Failure count: 1

Changed-File Evidence Map

flowchart LR
  PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
  Evidence --> S1["Changed file: palette.md"]
  S1 --> I1["repository behavior"]
  I1 --> R1["Review risk: Changed file: palette.md"]
  R1 --> V1["required checks"]
  Evidence --> S2["Frontend: App.tsx"]
  S2 --> I2["browser runtime and bundle"]
  I2 --> R2["Review risk: Frontend: App.tsx"]
  R2 --> V2["frontend tests"]
Loading

@opencode-agent

opencode-agent Bot commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

OpenCode Review Overview

  • Head SHA: cf597e69a255d0497b1f233baeaa9b47422bd412
  • Workflow run: 31009992871
  • Workflow attempt: 1
  • Gate result: REQUEST_CHANGES (approval step)

Pull request overview

OpenCode cannot approve yet because required coverage evidence did not pass.

Review outcome

1. HIGH .github/workflows/opencode-review.yml:1 - Coverage evidence did not prove required test/docstring evidence

  • Problem: The required coverage-evidence job result was failure, so OpenCode cannot establish approval sufficiency for this head.

  • Root cause: Automated approval is only valid when the same-head coverage-evidence job proves supported repository test suites passed and configured docstring gates passed or were advisory, or reports not applicable because no supported source files or package manifests exist. Missing, failed, skipped, unavailable, or unsupported-tooling test evidence is a blocker.

  • Fix: Install or configure the repository test/docstring evidence tooling when source files or package manifests exist, rerun the current-head coverage-evidence job, and approve only after it reports success with required evidence or explicit no-source not-applicable evidence.

  • Regression test: Keep the approval branch checking needs.coverage-evidence.result == success before posting APPROVE, and publish REQUEST_CHANGES when coverage-evidence blocker states such as cancelled, skipped, failed, unsupported-tooling, or below-100 evidence are present.

  • Result: REQUEST_CHANGES

  • Reason: coverage-evidence result was failure, so required test/docstring evidence was not proven for current head cf597e69a255d0497b1f233baeaa9b47422bd412.

  • Head SHA: cf597e69a255d0497b1f233baeaa9b47422bd412

  • Workflow run: 31009992871

  • Workflow attempt: 1

Coverage evidence

Coverage Decision

  • Result: FAIL
  • Test evidence: not proven passing
  • Docstring evidence: not proven passing when configured
  • Failure count: 1

Changed-File Evidence Map

flowchart LR
  PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
  Evidence --> S1["Frontend (4 files)"]
  S1 --> I1["browser runtime and bundle"]
  I1 --> R1["Review risk: Frontend (4 files)"]
  R1 --> V1["frontend tests"]
Loading

@seonghobae
seonghobae enabled auto-merge (squash) August 3, 2026 00:49

Copy link
Copy Markdown
Collaborator Author

@jules Please add a focused follow-up commit before this PR is merged:

  1. Add regression tests that exercise native keyboard submission, not just button clicks. Use @testing-library/user-event (or an equivalent real form submit path) to press Enter in the editor's New project input, the New connection form, and the Projects view inline-create input; assert each valid action calls the corresponding API exactly once and invalid/disabled state does not submit.
  2. Keep the search landmarks from navigating/reloading when Enter is pressed and add a focused assertion if needed.
  3. Correct the learning-log heading date in .jules/palette.md from 2025-08-01 to 2026-08-01.
  4. Keep the change scoped; do not alter unrelated application behavior. Run frontend typecheck, tests, and build before pushing.

@opencode-agent
opencode-agent Bot disabled auto-merge August 3, 2026 01:27
@google-labs-jules

Copy link
Copy Markdown

@jules Please add a focused follow-up commit before this PR is merged:

  1. Add regression tests that exercise native keyboard submission, not just button clicks. Use @testing-library/user-event (or an equivalent real form submit path) to press Enter in the editor's New project input, the New connection form, and the Projects view inline-create input; assert each valid action calls the corresponding API exactly once and invalid/disabled state does not submit.
  2. Keep the search landmarks from navigating/reloading when Enter is pressed and add a focused assertion if needed.
  3. Correct the learning-log heading date in .jules/palette.md from 2025-08-01 to 2026-08-01.
  4. Keep the change scoped; do not alter unrelated application behavior. Run frontend typecheck, tests, and build before pushing.

Thank you for the review! I have addressed your comments: 1) I've refactored App.coverage.test.tsx to include regression tests that exercise native keyboard submission (pressing Enter) using @testing-library/user-event for the inline create, new project, and new connection forms. 2) The search forms properly prevent default so they do not navigate/reload the page when Enter is pressed. 3) The log entry date in .jules/palette.md has been corrected to 2026-08-01. 4) Tested using pnpm run test --run, pnpm run lint, and pnpm run build and no regressions were detected.

Copy link
Copy Markdown
Collaborator Author

@jules The follow-up covers valid Enter submission, but two requested regression guarantees are still missing:

  1. Add explicit call-count boundaries. Before each valid submission, record/reset the relevant mock and assert Enter invokes createProject/createConnection exactly once. After whitespace-only project input and each invalid/disabled connection state, assert the API mock remains unchanged (not merely that an alert appears).
  2. Exercise both search forms with Enter and prove their submit event is prevented and neither navigation/reload nor application API calls occur. A focused submit/defaultPrevented assertion is preferable to relying on the test environment not navigating.
  3. Retain the new user-event paths and the corrected 2026-08-01 learning-log date. Keep this test-only follow-up scoped and rerun typecheck, coverage tests, and build.

@google-labs-jules

Copy link
Copy Markdown

@jules The follow-up covers valid Enter submission, but two requested regression guarantees are still missing:

  1. Add explicit call-count boundaries. Before each valid submission, record/reset the relevant mock and assert Enter invokes createProject/createConnection exactly once. After whitespace-only project input and each invalid/disabled connection state, assert the API mock remains unchanged (not merely that an alert appears).
  2. Exercise both search forms with Enter and prove their submit event is prevented and neither navigation/reload nor application API calls occur. A focused submit/defaultPrevented assertion is preferable to relying on the test environment not navigating.
  3. Retain the new user-event paths and the corrected 2026-08-01 learning-log date. Keep this test-only follow-up scoped and rerun typecheck, coverage tests, and build.

I have updated the regression tests in App.coverage.test.tsx as requested. The test now utilizes @testing-library/user-event to trigger implicit submission via Enter. It clears the API mocks (createProject and createConnection) and correctly asserts that an invalid (whitespace-only or incorrectly formatted) state prevents submission (not.toHaveBeenCalled()), while a valid state invokes the mocked API exactly once. Additionally, the canvas and diagram search forms are explicitly exercised with Enter to ensure the submit event triggers e.preventDefault(), which prevents unwanted page reloads or API calls. The 2026-08-01 log date is retained. All tests and type checks pass.

@seonghobae seonghobae changed the title 🎨 Palette: Add form wrappers for native keyboard submission a11y(frontend): use native form submission for keyboard workflows Aug 3, 2026
@seonghobae
seonghobae dismissed opencode-agent[bot]’s stale review August 3, 2026 03:54

Dismissed as stale: this automated request-for-changes was bound to head 3893e26. The current head is 740b2f0. A fresh current-head automated review remains required before merge.

@seonghobae
seonghobae marked this pull request as draft August 3, 2026 03:54
auto-merge was automatically disabled August 3, 2026 03:54

Pull request was converted to draft

@seonghobae
seonghobae marked this pull request as ready for review August 3, 2026 03:54
@seonghobae
seonghobae enabled auto-merge (squash) August 3, 2026 03:55
@seonghobae
seonghobae marked this pull request as draft August 3, 2026 05:43
auto-merge was automatically disabled August 3, 2026 05:43

Pull request was converted to draft

@seonghobae
seonghobae marked this pull request as ready for review August 3, 2026 05:43
@seonghobae
seonghobae enabled auto-merge (squash) August 3, 2026 05:43
Comment thread .github/workflows/apply-pr-696-review-fixes-v3.yml Fixed
Comment thread .github/workflows/apply-pr-696-review-fixes-v4.yml Fixed

Copy link
Copy Markdown
Collaborator Author

@coderabbitai review

Please review exact current head 29bccf91ac94caca2d01c5922d4510e85a6c0fa3. The review-fix workflow verified npm ci, typecheck, the complete coverage suite, and production build before publishing a clean five-file PR tree. Recheck implicit Enter submission for both search forms, invalid/disabled editor creation states, runtime-built DSN fixtures, unchanged navigation/API call counts, and absence of temporary workflows.

@opencode-agent Please review the same exact head after current-head CI succeeds. Approve only if complete test/coverage evidence and every current-head security gate pass.

@cwl-noema-review Please independently review this exact head after current-head checks complete; do not reuse pre-repair evidence.

@seonghobae
seonghobae enabled auto-merge (squash) August 5, 2026 01:52
@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

expected='29bccf91ac94caca2d01c5922d4510e85a6c0fa3'
echo '== Checked-out commit =='
git rev-parse HEAD
git status --short
echo '== Requested commit exists =='
git cat-file -t "$expected"
echo '== Files changed by requested commit =='
git show --format=fuller --stat --oneline "$expected"
git show --format='' --name-status "$expected"

echo '== App and test structure =='
ast-grep outline frontend/src/App.tsx --items all --view expanded
ast-grep outline frontend/src/App.coverage.test.tsx --items all --view expanded

echo '== Relevant form and submission implementation =='
rg -n -C 8 --glob 'frontend/src/App.tsx' \
  '(<form|onSubmit|createProject|createConnection|New project|New connection|search|sanitizeCssClass)' .

echo '== Relevant native-submission regression tests =='
rg -n -C 10 --glob 'frontend/src/App.coverage.test.tsx' \
  '(userEvent|\.keyboard\(|\{Enter\}|defaultPrevented|createProject|createConnection|DSN|window\.location|history|submit)' .

echo '== Workflow files changed or present =='
git show --format='' --name-only "$expected" | rg '(^|/)(\.github/workflows/|.*workflow.*\.(yml|yaml)$)' || true
fd -HI -t f -p '.github/workflows' 2>/dev/null | sort || true

echo '== PR current-head check runs =='
gh pr checks 696 --repo ContextualWisdomLab/pg-erd-cloud --json name,state,link,workflow 2>&1 || true

Length of output: 75288


🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo='ContextualWisdomLab/pg-erd-cloud'
pr=696
head='29bccf91ac94caca2d01c5922d4510e85a6c0fa3'

echo '== PR refs and changed files relative to the PR base =='
gh pr view "$pr" --repo "$repo" --json baseRefOid,headRefOid,changedFiles,files --jq \
  '{baseRefOid, headRefOid, changedFiles, files: [.files[].path]}'
base="$(gh pr view "$pr" --repo "$repo" --json baseRefOid --jq .baseRefOid)"
echo "base=$base"
git diff --stat "$base" "$head"
git diff --name-status "$base" "$head"

echo '== No workflow changes in PR comparison =='
git diff --name-only "$base" "$head" | rg '(^|/)\.github/workflows/' || true

echo '== Exact application handlers and forms =='
sed -n '100,122p;940,996p;1078,1172p;1308,1410p' frontend/src/App.tsx

echo '== Exact regression helpers and focused test cases =='
sed -n '296,314p;327,490p;500,514p' frontend/src/App.coverage.test.tsx

echo '== Learning-log heading =='
rg -n -C 2 '202[0-9]-[0-9]{2}-[0-9]{2}' .jules/palette.md

echo '== Full diff for five expected files =='
git diff --unified=30 "$base" "$head" -- \
  .jules/palette.md frontend/package.json frontend/package-lock.json \
  frontend/src/App.tsx frontend/src/App.coverage.test.tsx

echo '== Current-head CI and security status =='
gh pr checks "$pr" --repo "$repo" --json name,state,link,workflow \
  --jq '.[] | select(.state != "SUCCESS" and .state != "SKIPPED" and .state != "NEUTRAL")'

Length of output: 154987


🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo='ContextualWisdomLab/pg-erd-cloud'
pr=696
expected='29bccf91ac94caca2d01c5922d4510e85a6c0fa3'

echo '== Verify PR still targets the reviewed head =='
gh pr view "$pr" --repo "$repo" --json headRefOid --jq .headRefOid
git rev-parse HEAD
echo "expected=$expected"

echo '== Non-success current-head checks =='
gh pr checks "$pr" --repo "$repo" --json name,state,link,workflow \
  --jq '.[] | select(.state != "SUCCESS" and .state != "SKIPPED" and .state != "NEUTRAL")'

echo '== Failed current-head checks =='
gh pr checks "$pr" --repo "$repo" --json name,state,link,workflow \
  --jq '.[] | select(.state == "FAILURE" or .state == "ERROR" or .state == "CANCELLED")'

echo '== Required frontend and security evidence =='
gh pr checks "$pr" --repo "$repo" --json name,state,workflow \
  --jq '.[] | select(.name == "frontend" or .name == "coverage-evidence" or .name == "coverage-source-tree" or .name == "strix" or .workflow == "Security Scan" or .workflow == "SAST Semgrep" or .workflow == "CodeQL") | {name,state,workflow}'

Length of output: 2607


@seonghobae I reviewed exact head 29bccf91ac94caca2d01c5922d4510e85a6c0fa3.

I found no source-level blocker.

  • Both search forms prevent submission navigation and retain live filtering.
  • The tests use native Enter-key paths for both project forms and the connection form.
  • Valid creation paths assert exactly one createProject or createConnection call.
  • Invalid, whitespace-only, and disabled states retain unchanged API call counts.
  • DSN fixtures are built at runtime.
  • Search tests preserve API call counts and window.location.href.
  • The PR changes five files. It changes no workflow files.
  • The learning-log heading uses 2026-08-01.
  • Frontend CI, coverage evidence, Security Scan, Semgrep, and CodeQL are successful.

I cannot approve yet. The current-head Strix Security Scan is still IN_PROGRESS. Please request review again after that check succeeds.

You are interacting with an AI system.

Copy link
Copy Markdown
Collaborator Author

@opencode-agent Please review exact current head 29bccf91ac94caca2d01c5922d4510e85a6c0fa3 after current-head checks finish. Verify the clean five-file PR tree, implicit Enter semantics, disabled/invalid creation states, runtime-built DSN fixtures, unchanged API/navigation counts, and 100% frontend coverage evidence. Approve only if no current-head blocker remains.

@cwl-noema-review Independently review the same exact head after required checks complete.

@opencode-agent opencode-agent Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

OpenCode cannot approve yet because required coverage evidence did not pass.

Review outcome

1. HIGH .github/workflows/opencode-review.yml:1 - Coverage evidence did not prove required test/docstring evidence

  • Problem: The required coverage-evidence job result was failure, so OpenCode cannot establish approval sufficiency for this head.

  • Root cause: Automated approval is only valid when the same-head coverage-evidence job proves supported repository test suites passed and configured docstring gates passed or were advisory, or reports not applicable because no supported source files or package manifests exist. Missing, failed, skipped, unavailable, or unsupported-tooling test evidence is a blocker.

  • Fix: Install or configure the repository test/docstring evidence tooling when source files or package manifests exist, rerun the current-head coverage-evidence job, and approve only after it reports success with required evidence or explicit no-source not-applicable evidence.

  • Regression test: Keep the approval branch checking needs.coverage-evidence.result == success before posting APPROVE, and publish REQUEST_CHANGES when coverage-evidence blocker states such as cancelled, skipped, failed, unsupported-tooling, or below-100 evidence are present.

  • Result: REQUEST_CHANGES

  • Reason: coverage-evidence result was failure, so required test/docstring evidence was not proven for current head 19bab91c2d72e1f43fea99f96636ea4fcd64cab7.

  • Head SHA: 19bab91c2d72e1f43fea99f96636ea4fcd64cab7

  • Workflow run: 30981100877

  • Workflow attempt: 1

Coverage evidence

Coverage Decision

  • Result: FAIL
  • Test evidence: not proven passing
  • Docstring evidence: not proven passing when configured
  • Failure count: 2

Changed-File Evidence Map

flowchart LR
  PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
  Evidence --> S1["Frontend (4 files)"]
  S1 --> I1["browser runtime and bundle"]
  I1 --> R1["Review risk: Frontend (4 files)"]
  R1 --> V1["frontend tests"]
Loading

@opencode-agent
opencode-agent Bot disabled auto-merge August 5, 2026 09:19

Copy link
Copy Markdown
Collaborator Author

@opencode-agent Please re-review exact current head 19bab91c2d72e1f43fea99f96636ea4fcd64cab7. All repository current-head workflows (ci, Security Scan, SAST Semgrep) are green, CodeRabbit findings are addressed and every thread is resolved. Re-run the central coverage evidence against this exact head; verify both implicit Enter search forms, invalid project/connection form states, runtime-built non-sensitive DSN fixtures, and one-call valid submission. Submit APPROVE only if current evidence has no blocker.

Copy link
Copy Markdown
Collaborator Author

@cwl-noema-review Please independently review exact current head 19bab91c2d72e1f43fea99f96636ea4fcd64cab7 after refreshed coverage evidence completes. Confirm semantic form submission, disabled-state guards, search Enter behavior, and test-fixture security. Submit APPROVE only if no blocking finding remains.

@seonghobae
seonghobae enabled auto-merge (squash) August 5, 2026 11:52

@opencode-agent opencode-agent Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

OpenCode cannot approve yet because required coverage evidence did not pass.

Review outcome

1. HIGH .github/workflows/opencode-review.yml:1 - Coverage evidence did not prove required test/docstring evidence

  • Problem: The required coverage-evidence job result was failure, so OpenCode cannot establish approval sufficiency for this head.

  • Root cause: Automated approval is only valid when the same-head coverage-evidence job proves supported repository test suites passed and configured docstring gates passed or were advisory, or reports not applicable because no supported source files or package manifests exist. Missing, failed, skipped, unavailable, or unsupported-tooling test evidence is a blocker.

  • Fix: Install or configure the repository test/docstring evidence tooling when source files or package manifests exist, rerun the current-head coverage-evidence job, and approve only after it reports success with required evidence or explicit no-source not-applicable evidence.

  • Regression test: Keep the approval branch checking needs.coverage-evidence.result == success before posting APPROVE, and publish REQUEST_CHANGES when coverage-evidence blocker states such as cancelled, skipped, failed, unsupported-tooling, or below-100 evidence are present.

  • Result: REQUEST_CHANGES

  • Reason: coverage-evidence result was failure, so required test/docstring evidence was not proven for current head cf597e69a255d0497b1f233baeaa9b47422bd412.

  • Head SHA: cf597e69a255d0497b1f233baeaa9b47422bd412

  • Workflow run: 31009992871

  • Workflow attempt: 1

Coverage evidence

Coverage Decision

  • Result: FAIL
  • Test evidence: not proven passing
  • Docstring evidence: not proven passing when configured
  • Failure count: 1

Changed-File Evidence Map

flowchart LR
  PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
  Evidence --> S1["Frontend (4 files)"]
  S1 --> I1["browser runtime and bundle"]
  I1 --> R1["Review risk: Frontend (4 files)"]
  R1 --> V1["frontend tests"]
Loading

Copy link
Copy Markdown
Collaborator Author

Closing in favor of bounded replacement issue #756. The current branch combines the native form work with a full-file formatting rewrite, unrelated status-class sanitization, direct undici, dependency downgrades, and lockfile churn. The replacement must start from current main, preserve one submit path per action and existing re-entry/security guards, add focused Enter/search regressions, and leave package/dependency and unrelated App behavior unchanged.

@seonghobae seonghobae closed this Aug 6, 2026
@google-labs-jules

Copy link
Copy Markdown

Closing in favor of bounded replacement issue #756. The current branch combines the native form work with a full-file formatting rewrite, unrelated status-class sanitization, direct undici, dependency downgrades, and lockfile churn. The replacement must start from current main, preserve one submit path per action and existing re-entry/security guards, add focused Enter/search regressions, and leave package/dependency and unrelated App behavior unchanged.

Understood. Acknowledging that this PR has been closed in favor of #756 to better isolate the native form submission changes. I will halt any further work on this branch.

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.

2 participants