8.9 KiB
Brown·Orange 공통 Background Gradient 및 Gitea 작성자 정합성 — 2026-10-11
RESULT: PARTIAL. 승인된 두 Gradient의 구현·빌드·브라우저 검증은 PASS다. Guard의 패키지 범위 및 동적 스타일 NOT VERIFIED는 보존한다. Git Commit/Push 결과와 최종 SHA는 작업 최종 응답에서 기록한다.
기준과 범위
- 공식 경로
D:\디자인시스템\HMDesign-Gitea-Transfer,main, originhttps://gitea.hmac.kr/b25027/HMDesign.git. - 시작 Local/Remote HEAD
220973cf89d3f9ae66cb96dab6a66b7859026849, Working Tree 깨끗함. 시작 시각 2026-10-11 13:19:32 KST, 최초 예상 30~45분. - 범위: Theme 공개 Stop 입력 + 기존 Foundation Color Story. Runtime: React / Public Runtime Theme v1. 새 업무 화면·Navigation·Control은 없다. Pattern 선택과 키보드/focus/Label 동작 검증은 해당 없음.
- 이전 Foundation Color 기록과 Generic Status Error 기록은 당시 상태를 기록한 이력으로 보존한다.
Gradient와 공개 계약
| Stop | Palette 단계 | Brown | Orange |
|---|---|---|---|
| 0% | Dark 1 | #352D1D | #BC4C00 |
| 12% | Dark 2 | #2F281C | #883700 |
| 42% | Default | #3E3523 | #CC5200 |
| 78% | Light 2 | #897445 | #F87725 |
| 100% | Light 1 | #604F32 | #EB5F00 |
- 방향: 두 Background 모두
to bottom, Green과 동일한 5-stop 위치. - Brown 입력
color.bg.brown.stop.{0|12|42|78|100}→--hm-sem-brown-bg-stop-*→ Derived--hm-sem-bg-brown. - Orange 입력
color.bg.orange.stop.{0|12|42|78|100}→--hm-sem-orange-bg-stop-*→ Derived--hm-sem-bg-orange. - 확정 Palette와 모든 HEX가 일치한다. CSS-only 기본값은 대응 Semantic Palette를 참조하며 명시적 Runtime Stop 값이 우선한다. 새 HEX나 전체 Gradient 문자열 입력은 추가하지 않았다.
- 각 브랜드의 5개 Stop은 그룹 전체 또는 미지정만 허용한다. 특정 Stop만 바꾸려면 나머지 네 값도 함께 전달한다. 기존 Green·Primary 면·Primary border의 그룹과 순서를 보존하고 독립 그룹 두 개를 추가했다.
- 공개 계약, Default JSON, CSS Template에서 기존 스크립트로 CSS와 TypeScript 기본값을 생성했다. 94개 Runtime 입력 / 92개 Default 컬러 / 기존 radius 2개. Runtime 계약 문서.
- Foundation Color의
foundation-color--allID를 유지한다. 실제 공통 Background와 기존 Button 전용 미리보기, Stop 위치·HEX·Token·CSS Variable 및 요소의 computedbackground-image를 표시한다. 새 Stop 카드에만 폭을 보강하여 네 검증 폭에서 Token/변수가 한 줄로 식별된다.
브라우저의 실제 background-image는 다음과 같다. 브라우저는 기본 방향 to bottom을 직렬화에서 생략하며 방향은 CSS Variable에서도 확인했다.
/* Brown */
linear-gradient(rgb(53, 45, 29) 0%, rgb(47, 40, 28) 12%, rgb(62, 53, 35) 42%, rgb(137, 116, 69) 78%, rgb(96, 79, 50) 100%)
/* Orange */
linear-gradient(rgb(188, 76, 0) 0%, rgb(136, 55, 0) 12%, rgb(204, 82, 0) 42%, rgb(248, 119, 37) 78%, rgb(235, 95, 0) 100%)
보존과 검증
- 기존 JSON 컬러 82개, Default CSS 선언 141개, UI 소스 123개 보존. 기존 전체 JSON과 service partial JSON 유효성 PASS. 기존 Storybook ID 292개 보존. Foundation Color와 해당 신규 카드용 CSS 외 앱·Story·Storybook 설정 변경 없음.
- 이전 정적 Storybook 빌드와 비교해 기존 HM 계산 변수 1,153개의 값 변화 0. Green Background, Brown/Orange Button, Dashboard Header/Compact 배경·Component API·3종 Palette × 8단계·Generic Status Error
#B3261E·Destructive#D32F2F·Disabled Input Label 60% 보존. npm run generate:theme-defaults,npm run build:themesPASS. 생성 stale 검사, root/UI/CENTER typecheck, UI/CENTER package build PASS. 마지막 Story/CSS 변경 후 root typecheck와 Storybook build만 다시 확인했다.- 최종 Storybook static build PASS. 기존 큰 chunk 및 bundler callback 성능 경고는 코드 오류가 아니다. 기존 전체 Component 테스트는 반복하지 않았다.
- 브라우저 Foundation Color 실제 React 렌더 PASS. Brown/Orange Stop 순서·HEX·Palette·Canonical/CSS 변수·Swatch·표시 computed 값과 실제 요소 값 일치 PASS. 기존 Green 및 Button 전용 미리보기 유지.
- Runtime: 완전 그룹 적용, 단일 Stop/invalid 값 거부, Brown/Orange 독립성, Theme 전환, invalid fallback, Scoped 적용, Global 불변, 기존 host inline 값/priority 복원, Palette alias 변경, Reset PASS.
- 390 / 768 / 1280 / 1440px에서 문서 및 Gradient panel 가로 overflow 0, 새 Stop ID 줄바꿈 0. 각 문서/panel의 scrollWidth/clientWidth 및 scrollHeight/clientHeight 측정 보관. Foundation은 정상 문서 세로 스크롤이며 신규 숨김 알림·Navigation 없음. 브라우저 console/page error 0.
- Git diff whitespace 검사 PASS. MD 링크 검사 결과는 최종 응답에 기록한다. 실제 스크린리더·실기기 검증 NOT VERIFIED.
Guard 원본과 실행 증거
변경 범위 STORYBOOK / PARTIAL Guard를 실행했다. 이후 브라우저에서 발견한 Stop ID 줄바꿈을 수정하면서 Story/CSS 소스 해시가 변경되어 최종 상태에 대해 다시 검사했다. 정상 Component 검사 반복이나 Guard 규칙 완화는 하지 않았다.
node scripts/ai-generation-guard.mjs --target . --profile STORYBOOK --scope PARTIAL --files src/foundation/color.stories.tsx,src/foundation/foundation.css,packages/ui/src/theme/contract.ts,packages/ui/src/theme/default.css,packages/ui/src/theme/default-values.generated.ts,scripts/theme-templates/default.css,themes/default.json --json
원본 status / staticStatus: NOT VERIFIED, FAIL 0. CSS styleEvidence: STATIC PASS / RUNTIME NOT VERIFIED / DESIGN_INTENT PASS / FINAL NOT VERIFIED. 원본에 Runtime 증거가 자동 결합되지 않았으므로 결합 styleVerification은 NOT VERIFIED다.
SCOPE-001은 package 계약·생성값·Template이 증명된 소비 Storybook graph 밖이라는 경계이며 별도 package build/API/브라우저 검사로 확인했다. TOKEN-002는 동적 style/property/template 및 StoryPage className의 정적 해석 한계다. 새 Gradient·Stop의 실제 위치·색상·계산값은 별도 실행 증거로 확인했으며 다른 미실행 동적 위치까지 PASS로 확장하지 않았다. 사용자 승인 범위는 두 독립 Background와 Foundation 표시다. 원본 Guard를 덮어쓰지 않았다.
로컬 실행 원본·JSON·스크린샷은 _local/background-gradients-20261011/ 및 관련 _local/background-*.log에 보관한다. 이 디렉터리는 Git 배포 범위 밖이며 Clone 후 확인할 계약과 검증 요약은 이 문서에 남긴다.
Git Identity와 인증
- 기존 전역
user.name과 이전 Commit의 Author/Committer는 Windows PC 이름을 포함했다. 기존 이메일은 PC 호스트명으로 구성된 주소는 아니지만 공식 Gitea 기본 이메일과 달랐다. 기존 이력과 전역 설정을 보존했다. - 기존 Credential Manager의 HTTPS credential로 공식 Gitea
/api/v1/user및/api/v1/user/emails를 조회했다. 인증 계정b25027, 실제 프로필 이름김수현, 기본 이메일shkim4@samaneng.com의 primary/verified 상태를 확인했다. 인증된 Push 사용자와 Commit 작성자는 별도로 확인한다. /api/v1/user/settings의hide_email=false확인. 이메일 숨김 옵션은 존재하지만 현재 활성화되지 않았다. 서버의 정확한 noreply 주소는 확인하지 않았으며 임의 생성하지 않았다. 현재 확인된 공개 기본 이메일을 사용한다. Git Commit의 Author/Committer 이메일은 저장소 이력에 기록된다.- 현재 저장소
.git/config에만user.name=김수현,user.email=shkim4@samaneng.com적용.git var GIT_AUTHOR_IDENT와GIT_COMMITTER_IDENT도 이 값으로 해석됨을 확인했다. - 작업 프로세스의 Author/Committer 및 Git config 환경 Override는 없었다. 별도 core.hooksPath/사용자 정의 Git hook도 없었다. 현재 생성하는 Commit의 실제 메타데이터를 Commit 후 다시 확인한다.
- 원격 URL·기존 Credential Manager·인증 방식·전역 config를 변경하지 않았고 재로그인·Token 재발급·GitHub Push·이력 재작성도 하지 않았다. 인증 비밀값은 출력·파일 저장하지 않았다.
- 관련 12개 파일만 Stage, Staged Diff 검토 후 요청된
feat(theme): add brown and orange background gradients로 일반 Commit/Push한다. Commit/Push 직전 원격 main이 시작 SHA에서 변경되면 중단한다. 신규 Commit의 Gitea 계정 attribution 및 Local/Remote SHA·Working Tree는 최종 응답에서 기록한다.