문서 / docs/task-reports/foundation.md

Foundational task report

기반 작업의 RED에서 GREEN까지의 기록.

작업 범위: T001–T012
기준일: 2026-08-13 UTC
manual-impact: affected

매뉴얼 영향

전역 탐색, 릴리스 표기, 디자인 토큰과 네 공개 경로의 기본 셸이 추가되어 사이트 독자와 이후 콘텐츠 작성자에게 영향이 있다. 현재 단계의 공개 설명은 최소 placeholder이며 본문 매뉴얼은 US1에서 작성한다. 설치·검증 기준선은 docs/implementation-baseline.md에 기록했다.

RED

구현 파일을 만들기 전에 sandbox-safe Node runner로 각 계약을 실행했다.

명령 결과
node --import tsx --test tests/unit/content-schema.test.ts FAIL (exit 1) — Cannot find module '../../lib/content-schema'
node --import tsx --test tests/integration/site-shell.test.tsx FAIL (exit 1) — Cannot find module '../../app/layout'

처음 사용한 tsx --test CLI는 테스트 코드에 진입하기 전에 격리된 임시 runtime pipe에서 listen EPERM이 발생했다. 테스트 스크립트를 node --import tsx --test로 변경해 환경 오류가 아닌 실제 누락 동작의 RED를 확인했다.

코드 품질 검토 후 변경 계약도 구현 전에 RED를 확인했다.

명령 결과
node --import tsx --test tests/unit/integration-test-files.test.ts FAIL (exit 1) — Cannot find module '../../scripts/integration-test-files'
node --import tsx --test tests/unit/content-schema.test.ts FAIL (exit 1) — pending release 계약 불일치
node --import tsx --test tests/integration/site-shell.test.tsx FAIL (exit 1) — footer가 검증 대기 대신 근거 확인일 공개

GREEN

명령 결과
npm test PASS — unit 9/9, integration 5/5
node --import tsx --test tests/unit/content-schema.test.ts PASS
node --import tsx --test tests/integration/site-shell.test.tsx PASS
npm run test:integration PASS — .test.ts.test.tsx 파일 각각 수집
npm run typecheck PASS
npm run lint PASS
npm run build PASS — 최종 stage static-generation, 네 공개 경로 정적 사전 렌더
test -f .next/standalone/server.js PASS — standalone server 파일 존재, 7,307 bytes
최근 npm install 내장 감사 PASS — 취약점 0건

구현 결과

  • 안정 ID, 중복, 참조, ISO 날짜와 릴리스 메타데이터 검증기를 추가했다.
  • 네 공개 경로, 여덟 하네스 계층, 승인 문서와 정확히 일치하는 열 단계 workflow와 상태 레이블을 구조화하고 순서 계약 테스트를 추가했다.
  • 한국어 metadata, skip link, header/nav/main/footer landmark와 SSR 릴리스 정보를 제공한다.
  • T027의 실제 근거 검증 전에는 확인일을 주장하지 않고 footer에 근거 상태: 검증 대기를 SSR한다.
  • System Atlas 라이트·다크 토큰, 반응형 layout primitives, 44px 동작 대상, 가시적 focus와 reduced-motion 규칙을 적용했다.
  • 통합 테스트 runner는 shell glob에 의존하지 않고 .test.ts.test.tsx를 정렬해 실행하며 어느 확장자 클래스든 0건이면 실패한다.
  • 이후 단계 검증 스크립트는 구현 전 성공으로 오인되지 않도록 명시적 실패 stub으로 유지했다.

남은 우려

  • npm allow-scripts 정책은 unrs-resolveresbuild postinstall 검토를 요구했다. Playwright 1.62.1 갱신과 미사용 Lucide 제거 후 최근 install의 내장 감사는 취약점 0건이며 typecheck, lint와 standalone build는 모두 통과했다. 별도 fresh npm audit는 registry 네트워크 가용성에 의존한다.
  • 브라우저 acceptance와 모바일 내비게이션 disclosure는 이후 사용자 스토리 및 cross-cutting 단계 범위다.