코어 이론
@sectile/core는 화면을 그리지 않습니다. 항목의 관계와 상호작용 상태를 값으로 표현하고, 현재 상태와 의미 사건을 받아 다음 상태와 순서 있는 명령을 계산합니다.
명령은 포커스 이동이나 스크롤 같은 효과를 실행하라는 요청이지, 효과 자체가 아닙니다. DOM·Terminal·Vue가 각 환경에서 명령을 해석하므로 Core의 계산은 실행 환경과 무관하게 검증할 수 있습니다.
- 모델
- 항목의 관계와 유효한 값
Sequence · Range · Grid · Tree - 현재 상태
- 상호작용이 기억하는 사실
Cursor · Selection · Expansion · Text - 의미 사건
- 사용자가 의도한 변화
Move · Select · Expand · Edit - 정책
- 허용 조건과 경계 동작
Eligibility · Boundary · Activation
applyEvent결정적 상태 전이같은 입력 · 같은 결과 · 외부 효과 없음current = item:2+event = move-nextcurrent = item:3+focus(item:3)@sectile/dom · @sectile/terminal · @sectile/vue모델은 항목 관계와 유효한 값을, 상태는 현재 위치·선택·펼침·텍스트처럼 기억할 사실을 정의합니다. 사건은 move-next, select, insert-text처럼 사용자의 의도를 표현하고, 정책은 사용 가능 여부와 경계 동작처럼 제품마다 달라지는 선택을 명시합니다.
전이가 성공하면 새 불변 상태와 명령 목록을 함께 반환합니다. 실패하면 형식이 있는 오류를 반환하고 기존 상태와 명령을 바꾸지 않습니다.
공통 어휘
Core는 순서, 범위, 격자, 계층을 항목 관계의 기본형으로 사용합니다. 여기에 현재 위치, 선택, 펼침, 텍스트를 독립된 상태로 조합합니다. 한 모델이 한 가지 사실만 소유하므로 현재 위치를 옮겨도 선택을 유지할지, 함께 옮길지를 컴포넌트 정책으로 분명하게 정할 수 있습니다.
컴포넌트는 이 재료를 결정적인 상태 전이로 묶습니다. 날짜와 달력 계산은 @sectile/temporal, 표 형식 데이터 상호작용은 @sectile/tabular, 화면 영역과 항목 배치는 @sectile/virtual이 맡습니다.
공개 명세를 읽는 법
Core의 공개 문서는 API 이름만 나열하지 않습니다. 어떤 값을 만들 수 있는지, 어떤 연산과 관찰 결과가 있는지, 그리고 구현이 지켜야 할 법칙·실패·비용을 함께 정의합니다.
- 값어떤 값이 유효한가?
- 상태와 모델의 형태, 식별자와 허용 범위를 정의합니다.
- 연산무엇을 할 수 있는가?
- 생성과 조회, 사건에 따른 상태 전이를 정의합니다.
- 관찰밖에서 무엇을 볼 수 있는가?
- 상태, 명령, 조회 결과처럼 검증 가능한 결과를 정합니다.
- 법칙항상 무엇이 참이어야 하는가?
- 모든 유효한 값과 전이가 지켜야 할 불변 조건입니다.
- 실패무엇이 왜 실패하는가?
- 잘못된 입력과 정상적인 결과 없음은 서로 다른 값으로 구분합니다.
- 비용자원을 얼마나 쓰는가?
- 시간, 메모리와 입력 크기의 상한도 계약에 포함합니다.
같은 공개 입력 흐름에서 상태, 명령, 조회 결과와 실패가 같고 모든 법칙과 비용 상한을 지키면 내부 구현이 달라도 같은 모델로 볼 수 있습니다.
조합이 기본 단위다
목록 상자는 순서에 현재 위치와 선택을 더하고, 콤보박스는 순서·텍스트·팝업 상태를 함께 씁니다. 계층 격자는 계층과 격자 좌표에 펼침·현재 위치·선택·편집 상태를 결합합니다. 조합 원리에서 각 컴포넌트가 어떤 사실을 소유하고 어떻게 원자적으로 갱신하는지 확인할 수 있습니다.
