0001 · 범위와 적합성
상태: 제안 · 명세 버전: 0.1.0-draft
제품 경계
스피논은 같은 앱 작성 소스를 웹 DOM과 모바일 GPU UI 경로로 빌드하는 프레임워크다. 모바일은 브라우저 문서·DOM 전체·Web API 전체를 구현하지 않는다. 대신 Rust UI 트리에 연결하는 제한된 DOM API façade를 제안하며, 후보와 미정 계약은 모바일 DOM 호환 명세에 둔다. Android와 iOS의 일반 UI 노드는 각각의 플랫폼 뷰와 1:1로 대응하지 않는다. WebView는 명시적인 별도 컴포넌트다.
React, Vue, Svelte는 서로 다른 작성 문법과 상태 관리 방식을 가진다. 스피논의 공통 계약은 태그 의미, 지원 CSS, 이벤트, 호스트 명령이다. 첫 적합성 대상은 React·Vite·단일 모바일 번들이다. 다른 프레임워크와 번들러는 각각 별도 적합성 대상이다.
지원 표기
목표 범위와 현재 적합성 상태는 별도 열로 기록한다. 구현 전에 정하는 첫 수직 구현의 포함·제외·미정 범위는 제품의 지원 판정이 아니다. 아래 표기는 구현 결과를 판정할 때 사용한다.
일부 CSS 선언이나 이벤트를 조용히 무시한 화면을 지원으로 표시해서는 안 된다. 지원표에는 최소한 플랫폼, 프레임워크 어댑터, 엔진·번들 형식 버전, 입력, 기대 결과, 오류, 접근성 결과를 기록한다.
첫 범위 표를 작성할 때는 기능마다 첫 수직 구현 목표: 포함/제외/미정과 현재 적합성: 미검증/지원/차이/미지원/미정을 분리한다. 제외하기로 결정했어도 진단이 구현되지 않았다면 현재 상태는 미검증으로 남기고, 근거 없는 미지원 판정을 붙이지 않는다.
적합성의 최소 단위
- 화면: 텍스트 내용, 노드 순서, 크기·위치, 이미지 실패 표시와 접근성 이름을 확인한다. 웹과 모바일의 폰트 픽셀 차이는 별도로 기록한다.
- 입력: 터치·키보드·보조 기술 활성화가 해당 이벤트를 내고, 제거된 핸들러가 다시 호출되지 않는지 확인한다.
- 비동기: JS 호출, 호스트 콜백, 마이크로태스크, 커밋과 화면 표시의 순서를 구분한다.
- 수명: 회전·백그라운드 복귀·표면 재생성 뒤 노드·콜백·GPU 자원이 일관된지 확인한다.
- 진단: 미지원 태그·속성·CSS·API의 위치와 이유를 개발자가 알 수 있다.
미정
시각적 허용 오차, 브라우저 기본 스타일과의 차이 허용치, 정확한 스펙 버전 정책, 플랫폼별 최소 OS 버전은 첫 실기기 수직 구현 전에 정한다. 이 값이 없으면 100% 웹 호환 또는 성능 우위를 주장하지 않는다.