Skip to content

🎨 Palette: [UX improvement] hero 섹션 접근성 이름 추가 - #240

Draft
seonghobae wants to merge 20 commits into
mainfrom
palette/label-hero-section-524531451149314304
Draft

seonghobae wants to merge 20 commits into
mainfrom
palette/label-hero-section-524531451149314304

Conversation

@seonghobae

@seonghobae seonghobae commented Sep 16, 2026

Copy link
Copy Markdown
Contributor

Current exact authority — 2026-09-20

  • exact head: 369cce7f21fc496a2acdc62fe250ebed0c6e4aee;
  • protected base: main@7c4251d52c2e8caf25aa808a766649268fe9dffa;
  • state: Draft / Proposed;
  • canonical Gap ledger: docs/product-technical-gap-baseline.md.

Repair

The hero owns aria-labelledby="hero-title", and the standard-library parser checks all 11 homepage sections and requires every label to resolve to exactly one real h1h6 target. The CHANGELOG contract also rejects literal \n- separators.

Successor 9314d2c… weakened the parser to arbitrary IDs, deleted the CHANGELOG regression contract and 130-line Gap baseline, and reverted verified Palette/CHANGELOG evidence. Five ordinary-forward commits restored the exact verified blobs. Compare from df6bdeb428fbd1ffeff91d0bc34a828b9c0e4b9c: six commits ahead, files: [].

Acceptance state

Source semantics and ledger contracts are GREEN. Security, Semgrep, and CodeQL are queued. The site still lacks current-head independent approval, all-eight-locale authority, Chromium/Firefox/WebKit, AT, touch/keyboard, 320/768/desktop, recovery/rollback, measured performance, and publication verification.

@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 Sep 16, 2026

Copy link
Copy Markdown

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: 87fa1e45-2ac1-4aa1-9846-b2fe18a71470

📥 Commits

Reviewing files that changed from the base of the PR and between 7c4251d and 270ef93.

📒 Files selected for processing (2)
  • .Jules/palette.md
  • index.html

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

hero 섹션이 aria-labelledby로 내부 h1을 참조하도록 변경되었습니다. 동일한 접근성 규칙을 설명하는 학습 로그가 추가되었습니다.

Changes

접근성 랜드마크 연결

Layer / File(s) Summary
hero 섹션과 제목 연결
index.html, .Jules/palette.md
hero 섹션에 id="hero"aria-labelledby="hero-title"를 추가했습니다. hero h1id="hero-title"를 추가했습니다. 향후 모든 section 요소를 내부 제목과 연결하는 규칙을 학습 로그에 기록했습니다.

Priority: ⬇️ Low

Estimated code review effort: 1 (Trivial) | ~5 minutes

Change: Bug fix · Severity of issue fixed: Low

Merge Risk: ⚪ Minimal · up to 97e48

This is a small, self-contained accessibility improvement with no remaining merge-blocking risk.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
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.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 제목은 hero 섹션에 접근성 이름을 추가하는 주요 변경 사항을 정확히 설명합니다. 제목의 이모지와 '[UX improvement]' 표기는 일부 부가 정보이지만, 제목의 의미와 관련성을 해치지 않습니다.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch palette/label-hero-section-524531451149314304

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.

@cwl-noema-review cwl-noema-review Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Noema LLM review

The PR correctly adds an accessible name to the hero

by introducing id="hero-title" on the

and referencing it via aria-labelledby="hero-title". This makes the hero a labeled region landmark, consistent with the accessibility guidance documented in .Jules/palette.md. No behavioral, security, or accessibility regression was found in the changed lines; the supporting documentation is accurate apart from a non-blocking date-ordering note.

Reviewed changed lines

  • index.html:73 (RIGHT): The
    now has id="hero" and aria-labelledby="hero-title", giving the section an accessible name so it is exposed as a region landmark to screen readers. The referenced id exists on the heading at line 75 RIGHT.
  • index.html:75 (RIGHT): The

    now has id="hero-title", which is the target of aria-labelledby from line 73. The id remains constant even when data-i18n="hero.title" updates the visible text, so the landmark name follows translations without desynchronization.

  • .Jules/palette.md:36 (RIGHT): Documents the learning that every
    needs a unique accessible name via aria-labelledby, including the hero section, which is consistent with the change made to index.html.
  • .Jules/palette.md:37 (RIGHT): States the action of always connecting aria-labelledby to an internal heading id for every
    . The hero change follows this action; the date 2024-10-23 is placed after the 2026-08-22 entry, which is a cosmetic ordering issue.

Adversarial validation

  • index.html:73 (RIGHT) falsified: aria-labelledby="hero-title" on the section references a missing id, yielding an empty accessible name. — index.html:73 RIGHT sets aria-labelledby="hero-title" and index.html:75 RIGHT adds id="hero-title" to the

    . The reference resolves to an existing element within the section.

  • index.html:73 (RIGHT) falsified: Adding id="hero" to the section collides with another element id or a CSS selector, altering layout or behavior. — The diff introduces id="hero" only at index.html:73 RIGHT; no other id="hero" or #hero selector appears in the changed files, and the existing CSS targets the .hero class, which is unchanged.
  • index.html:75 (RIGHT) falsified: Dynamic translation of the

    content could cause the aria-labelledby reference to become stale or point to a renamed id. — aria-labelledby references the constant id "hero-title" (index.html:73 RIGHT), which remains unchanged even when data-i18n="hero.title" updates the visible text. The accessible name therefore always follows the translated heading.

  • Residual risk: No blocking issue found. The aria-labelledby reference resolves to an existing, stable id; no id collision or CSS conflict is introduced by id="hero"; and the accessible name remains synchronized with dynamic translations because it references a constant id rather than static text. Residual risk is limited to the cosmetic non-chronological palette entry.

Findings

  • [low] .Jules/palette.md:37 (RIGHT): The palette entry dated 2024-10-23 is placed after the 2026-08-22 entry, making the log non-chronological. This is cosmetic and does not affect functionality.
  • Result: APPROVE
  • Head SHA: 270ef93922977e6af01c89cf27788ed6c861eb92
  • Reviewer credential: noema-review-github-app-refresh
  • Actor: cwl-noema-review[bot]

@seonghobae seonghobae added enhancement New feature or request priority: medium Normal-priority or P2 work labels Sep 19, 2026 — with ChatGPT Codex Connector
@seonghobae
seonghobae marked this pull request as draft September 19, 2026 21:57

Copy link
Copy Markdown
Contributor Author

Exact-head design assurance — 2026-09-20

Exact head: 4cb6969d88a392563503c8041578cc92691ec46a.

The previous test admitted only sections that already had an id, so an anonymous hero section could bypass the landmark contract. The repository-owned standard-library parser now covers every section and requires each aria-labelledby target to resolve to exactly one real h1h6 id. The exact-source probe finds 11 sections / 11 labels / 11 heading targets / 0 missing relationships.

Palette guidance now uses the evidence date 2026-09-20, covers h1h6, and distinguishes source contracts from browser/AT evidence. CHANGELOG and the new PRD/TRD/UML/ERD/Context Map/Gap baseline are bound to the lane.

Fresh exact-head Security 35471978169, Semgrep 35471978230, and CodeQL 35471978178 are queued/pending. The approval targets 270ef93922977e6af01c89cf27788ed6c861eb92, not this head. The site has ko/en resources only; real-browser/AT/touch/responsive/recovery/performance evidence is absent. Draft remains correct.

@seonghobae seonghobae left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Exact-head documentation defect at 4cb6969d88a392563503c8041578cc92691ec46a.

CHANGELOG.md currently contains a literal \n inside the first Unreleased list item:

...증거는 구분합니다.\n- **제품 안내 정합성**...

So Markdown renders the following release item as text in the same bullet rather than as a distinct list item. That breaks the code-current release ledger this PR explicitly establishes, even though the hero source contract itself is plausible.

RED: parse/render the current CHANGELOG and assert the two Unreleased entries are two list items, not one text node containing the characters \\n-. Include this in the same exact-head docs contract so future scripted edits cannot reintroduce escaped newlines.

GREEN: replace the literal escape with an actual line break and keep the existing semantic text unchanged. Do not treat the source-only landmark contract as delivery completion; the PR body correctly keeps Chromium/Firefox/WebKit, AT, responsive/locale, current-head hosted checks, independent approval, and actual GitHub Pages publication verification open.

Current status: UI source semantics PASS candidate; Release/TRACEABILITY documentation Gate FAIL until the malformed CHANGELOG is repaired.

Copy link
Copy Markdown
Contributor Author

Exact-head release-ledger repair — 2026-09-20

Exact head: df6bdeb428fbd1ffeff91d0bc34a828b9c0e4b9c.

RED 56783a2aa95a53ecece1d95ddcb1d0e8f9008f6e fixed the contract before production and reproduced one literal \\n- separator. GREEN 818d38088fb22408185a987074161aba9dbb399b replaced only that escape with a real line break. Current source has zero literal separators and 32 real \n- list-item boundaries. The canonical Gap ledger now binds the finding and action.

Fresh exact-head Security 35474731145, Semgrep 35474731169, and CodeQL 35474731170 are queued. The approval is stale and required browser/AT/responsive/eight-locale/publication evidence is absent; Draft remains correct.

Copy link
Copy Markdown
Contributor Author

Concurrent regression RCA — 2026-09-20

Exact head: 369cce7f21fc496a2acdc62fe250ebed0c6e4aee.

Successor 9314d2c… weakened the landmark parser, deleted the CHANGELOG contract and 130-line Gap baseline, and reverted verified evidence. Five ordinary-forward commits restored the exact blobs. Compare from df6bdeb… is six commits ahead with files: []. Fresh exact-head Checks are queued; browser/AT/responsive/eight-locale evidence remains open.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request priority: medium Normal-priority or P2 work

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant