Files
HMDesign/docs/reports/publisher-a11y-guard-2026-10-10.md
T

6.4 KiB
Raw Blame History

퍼블리셔·접근성·Guard 선택 개선 — 2026-10-10

RESULT: 요청한 수정과 선택 검증 PASS. 교차 모델 미완료 실험, 전체 접근성 인증은 NOT VERIFIED. 기준 HEAD는 f78cc206a5a9af6b61c42cfb989ed26fbe9da948. 기존 READ-ONLY 보고서·검증 JSON은 수정 전에 별도로 보존하고 변경 후 SHA256 일치를 확인했다.

실제 수정

파일 변경
.storybook/manager.css 기존 펼침 그룹 selector의 배경만 검정 20% → 8%. 선택 면의 20% inset, hover/focus·메뉴 JS·공통 Token 보존
packages/ui/src/theme/lnb.css, docs/patterns/lnb.md 오른쪽 Green LNB의 기존 8% 유지. 오래된 20% 주석 수정, Manager/Component 적용 범위 설명
packages/ui/src/theme/combobox.css, date-picker.css 흰 Trigger의 빈 값 안내를 기존 보조 텍스트 Semantic에 연결. 기본 #999/흰색 2.85:1 → #6e6759/흰색 5.60:1. 공통 Theme·Token 값, 선택값·아이콘·disabled opacity 보존
docs/components/combobox.md, date-picker.md 현재 mapping 설명. 과거 실측 기록은 당시 기록으로 보존
scripts/guard-requirements.mjs, guard-requirements.test.mjs 명시한 액션 이름 허용 목록을 검사하는 별도 도구와 5개 회귀 테스트. 미요청 정적 CSV/다운로드 액션 FAIL; 동적 이름/불완전 정책/오래된 fingerprint는 NOT VERIFIED
docs/guidelines/ai-generation-guard.md, navigation-single-mode.md 보조 검사 사용법·한계, T04 정상 혼합 거부 응답과 별도 평가 기준

원본 Guard status/issues 및 기존 회귀 테스트 본문은 변경하지 않았다. 정책 예외·새 공통 Token·Story ID·업무 화면 생성은 추가하지 않았다.

실제 실행한 검사

  • 변경 전/후 실제 Storybook: 왼쪽 펼침 그룹 rgba(0,0,0,0.08), 오른쪽 Green LNB color(srgb 0 0 0 / 0.08), opacity 1. CSSOM에서 그룹 selector의 적용 규칙·priority 확인. 펼침 면의 20% 잔여 적용 없음. 선택 inset의 20%는 요청 범위 밖의 기존 효과다.
  • 선택·hover·focus computed style 변경 전/후 일치. 선택/펼침/접힘, 검색 결과 및 tag filter 열기 통과. 변경 전/후와 최종 빌드 화면 PNG 직접 확인.
  • 최종 Storybook Combobox/DatePicker 각각 390/768/1280/1440: 안내 문구 대비 5.60395679:1, 가로 overflow·중복 ID 없음, Enter로 popup 열기·Escape 닫기·trigger focus 복귀 통과. 선택값/disabled opacity/배경/아이콘은 변경 전후 일치.
  • 신규 요구사항 검사 5/5 PASS. Theme 연결에 영향받는 기존 Guard 테스트 8/8 PASS(55개는 선택 실행에서 skip). 기존 전체 80개를 다시 실행한 결과로 표현하지 않는다.
  • 최종 통합 상태 UI package build(선언 Typecheck 포함), root Vite build, Storybook build 각 1회 PASS. root의 기존 chunk size 경고는 잔여 경고다. Story ID 292 → 292, 추가/삭제 0.
  • Git diff whitespace 검사, 공통 Guard/검사 소스·package-lock hash 일치 및 보존 자료 hash 일치 확인.

재사용한 검사

기존 별도 교차 모델 실험의 logs/baseline-regression.log는 동일 기준 SHA에서 Guard63/Evidence5/Component9/Theme3 총 80/80 PASS다. 검증 ledger·검사 소스·의존성 hash를 확인해 변경과 관계없는 범위의 회귀 증거로 재사용했다. CSS mapping 변경 영역은 새 브라우저 검사와 선택 Guard 8개로 보완했다. 최종 소스 전체에 80개를 다시 실행했다고 보고하지 않는다.

READ-ONLY 단계의 root/UI/CENTER/publisher Typecheck, 기능 C2C5/PT1PT2/R1~R3, 나머지 퍼블리셔 대표 Story·운영 화면 검증은 변경된 메뉴·안내 문구와 관계없는 범위에서 재사용했다. TSX/API/tsconfig·의존성은 변경하지 않았다. UI 선언 검사는 최종 package build에서 수행했다. 전체 Typecheck·모든 앱/292개 Story Runtime은 반복하지 않았다.

교차 모델 작업표 복원

원본 D:\디자인시스템\HMDesign-AI-CrossModel-Test의 requirements·reports·evaluation·모델별 산출물을 읽어 다음 매핑을 복원했다. requirements frozen hash와 성공 화면 4개의 source/contract fingerprint는 각 원본 실험 사본에서 일치한다.

모델/요청 effort 테스트 Typecheck/Build/4폭 Runtime 원본 Guard 연결
claude-sonnet-5 medium T01 PASS NOT VERIFIED(CSS intent)
claude-sonnet-5 medium T03 PASS PASS
claude-sonnet-5 high T01 PASS NOT VERIFIED(CSS intent)
claude-sonnet-5 high T02 PASS PASS

high T01은 실제 평가 가능한 산출물이 있으나 원래 세션의 정상 완료로 세지 않는다. 이 4개를 다시 생성하지 않았다. 원본 실험 사본의 유효한 증거를 현재 수정된 HM 계약 전체의 인증으로 일반화하지 않는다. 기존 점수·원본 판정을 덮어쓰지 않았다.

나머지 20개 조합(운영 화면 16개 + 정책 T04 4개)은 NOT VERIFIED 작업표로 별도 보존했다. 모든 T05/T06, GPT 두 effort의 모든 항목, Claude medium T02/high T03 및 T04가 포함된다. T04는 생성 성공률·평균 디자인 점수에서 제외한다. 기존 24개 세션 한도는 소진됐으며 이번 추가 외부 모델 세션은 0개다. 새 승인 전 실행하지 않는다.

미검증·한계

전체 WCAG/스크린리더 발화/실기기 touch/전체 Theme·상태의 대비, 전체 292 Story Runtime은 NOT VERIFIED. 현재 대비 PASS는 기본 Theme의 활성 빈 값 Trigger에 한정한다. Input 등 공통 placeholder Token은 변경하지 않았으며 전체 placeholder 대비를 해결했다고 주장하지 않는다.

요구사항 도구는 명시적 정책과 static literal Button/button/link 이름만 검사한다. wrapper/namespace/동적 액션/API 호출의 의미와 자유 형식 요구사항은 별도 검토가 필요하다. 보조 PASS는 원본 Guard의 CSS intent·Runtime 미검증을 제거하지 않는다. 실험 환경·모델 품질·전체 디자인 점수 개선을 추정하지 않는다.

원본 READ-ONLY 보고서와 이번 PNG/JSON/log/교차 모델 작업표는 Codex 작업의 publisher-readonly-audit/minimal-lnb-fix에 보존한다. 공식 Gitea 접근·수정 없음. GitHub 일반 push의 최종 commit/remote SHA는 제출 응답과 별도 로컬 결과에 기록한다.

Started At: 2026-10-10 19:37:37 KST. Estimated Duration: 60–90분. 완료 시각·실제 시간·Variance는 최종 제출 응답에 기록한다.