Repository navigation
Closed
Description
Goal Anchor
- Outcome: Calendar의 공개 API를 정석대로 소비하면 Host 보정 없이 같은 선택 대상·편집 결과를 얻도록 기존 생태계의 정본 계약을 보강한다.
- Done: 선택/붙여넣기 대상과 입력 검증의 재현된 누락을 해결하고, Calendar Document Type의 독립 공개 경계를 확정한다. 기존 Editing API 호환 경로와 소비자를 연결하고 공통 Editing Grammar 검사, 소유자 문서, site Usage/Source, 책임 감사표까지 실제 구현과 일치시킨다.
- Don't: Core Stable 계약, 새로운 중간 runtime 계층, 시간대/DST·서버 동기화·AI·RRULE·버전 협상 같은 신규 기능을 확장하지 않는다. 기존 작업과 별도 PR 사이트 구조·프로토콜 문서와 목표 TBD를 정렬한다 #740/기본 단축키 해석을 정본 키맵과 chord로 통일한다 #734/Cut 입력 소유권을 Web 정본으로 통합하고 실패 시 원본을 보존한다 #730/편집 문법의 하이라키와 기본 Profile 계약을 구체화한다 #726/#587을 합치거나 덮어쓰지 않는다. 이번 작업의 종료점은 검증한 PR이며 merge는 포함하지 않는다.
근거와 범위
현재 main 19a96084에서 확인한 Calendar 책임 10건과 Hand 선택 상태 1건을 기준으로 한다.
- 반복 일정의 8월 3일을 hand.dispatch(selection.set)로 선택하고 제목을 바꾸면 8월 1일이 바뀐다. Hand의 선택 회차 복제 상태를 제거하고 Editor의 정본 primaryOccurrence를 소비한다. 빈 셀에 지정한 명시적 paste target은 별도 임시 입력으로 보존한다.
- editor.paste(payload)의 기본 대상이 선택 회차가 아닌 원본 event.start다. 명시적 target과 기본 target 계약을 일치시키고 직접 API/Hand/외부 selection/초기 선택 경로를 검사한다.
- calendars의 비배열, 숫자 id/title, 문자열 hidden을 생성자가 수용한다. 생략된 legacy 필드 호환은 보존하고 잘못된 타입·참조를 정본 검증에서 거절한다.
- Calendar 모델·검증·의미 연산·projection을 입력/Editing lifecycle과 독립된 Document Type 공개 소유자로 분리한다. 독립 소비 시 Editing·Selection·React peer를 요구하지 않는 @interactive-os/json-document-calendar-document 경계를 등록하고 기존 Editing root export는 호환 경로로 보존한다. 기존 순수 구현을 이전하며 중복 알고리즘은 만들지 않는다.
- 공통 gesture lifecycle은 Affordance, Calendar 전용 Intent 연결은 Editing, DOM 번역은 Web이라는 실제 경계를 감사표와 문서에 반영한다. 제품 타입을 일반 Affordance로 기계적으로 옮기지 않는다.
- 기존 공통 Editing Grammar runner에 Calendar를 연결하고 공개 사용 예제의 호출 경로를 회귀 검사한다. hands.md의 Calendar/UI Primitives 소유권 drift와 Document Type의 현재/TBD를 갱신한다.
완료 증거
- 재현 입력의 실패→통과 회귀 검사와 정상 selectOccurrence/명시 target/legacy 입력 대조군.
- Calendar Document Type 독립 import, validate/plan/project 및 Editing과의 결과 일치 검사.
- 기존 Calendar/Editing/Selection 관련 테스트, 영향 범위 타입·빌드, workspace와 문서/소스 등록 검사.
- 배포 tarball의 독립 소비 및 기존 API 호환 확인.
- 기존 Chrome profile에서 실제 Calendar 흐름과 Document Type/owner API/Usage/Source 확인.
- 감사한 책임마다 단일 소유자와 판정을 기록하고 미확인 항목을 완료로 표시하지 않는다.
- 자동 PR 전체 CI를 재도입하거나 수동 full CI를 관성적으로 실행하지 않는다. 실행하지 못한 검사는 별도로 보고한다.
Metadata
Metadata
Assignees
Labels
No labels
Activity
developer-1px commentedon Sep 9, 2026
선택/붙여넣기/Calendar 목록 검증의 실패 11건을 먼저 재현한 뒤 수정했습니다. 재현 및 기존 Hand 흐름 76개가 통과했고, Document Type 독립 계약과 공통 Calendar Editing Grammar 검사 34개도 통과했습니다. 모델·검증·의미 연산·projection의 구현은 새 정본 소유자로 이전했으며 기존 Editing export는 호환 경로로 유지합니다. 현재 직접 소비자와 문서·Usage/Source·감사표를 연결하고 있으며 전체 완료나 패키지 배포를 의미하지는 않습니다.
developer-1px commentedon Sep 9, 2026
검증 진행
developer-1px commentedon Sep 9, 2026
PR #746을 등록했습니다. 검증 revision은 d064978f이며 로컬 작업트리·원격 브랜치·PR head가 같은지 확인하고 있습니다. 실제 Calendar Usage의 calendar-operation.ts Source가 새 소유자 구현과 /docs/api/calendar-document로 연결되는 것까지 기존 Chrome에서 확인했습니다. 구현·문서·감사표 보강을 PR에 담았으며 merge와 npm publish는 수행하지 않았습니다.
fix(calendar): Document Type 정본 계약과 소비 경계를 보강한다 (#746)