@hatiolab/figure-model 0.6.6 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +49 -0
- package/README.md +8 -4
- package/dist/asset-types.d.ts +8 -13
- package/dist/asset-types.d.ts.map +1 -1
- package/dist/asset-types.js.map +1 -1
- package/dist/asset.js +4 -4
- package/dist/asset.js.map +1 -1
- package/dist/authoring-actions.js +18 -5
- package/dist/authoring-actions.js.map +1 -1
- package/dist/authoring-types.d.ts +6 -11
- package/dist/authoring-types.d.ts.map +1 -1
- package/dist/authoring-types.js.map +1 -1
- package/dist/data-interface.d.ts.map +1 -1
- package/dist/data-interface.js +8 -4
- package/dist/data-interface.js.map +1 -1
- package/dist/editor-workspace.d.ts +1 -1
- package/dist/editor-workspace.d.ts.map +1 -1
- package/dist/editor-workspace.js +2 -5
- package/dist/editor-workspace.js.map +1 -1
- package/dist/extensions.d.ts +15 -0
- package/dist/extensions.d.ts.map +1 -0
- package/dist/extensions.js +63 -0
- package/dist/extensions.js.map +1 -0
- package/dist/gate.d.ts +1 -1
- package/dist/gate.d.ts.map +1 -1
- package/dist/gate.js +28 -33
- package/dist/gate.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/input-preview.d.ts +48 -0
- package/dist/input-preview.d.ts.map +1 -0
- package/dist/{authoring-session.js → input-preview.js} +7 -63
- package/dist/input-preview.js.map +1 -0
- package/dist/kernel-version.d.ts +1 -1
- package/dist/kernel-version.js +1 -1
- package/dist/names.d.ts.map +1 -1
- package/dist/names.js +5 -1
- package/dist/names.js.map +1 -1
- package/dist/package.d.ts.map +1 -1
- package/dist/package.js +18 -15
- package/dist/package.js.map +1 -1
- package/dist/proposal.d.ts +5 -1
- package/dist/proposal.d.ts.map +1 -1
- package/dist/proposal.js +18 -5
- package/dist/proposal.js.map +1 -1
- package/dist/release-contract.d.ts +1 -1
- package/dist/release-contract.d.ts.map +1 -1
- package/dist/release-contract.js +13 -24
- package/dist/release-contract.js.map +1 -1
- package/dist/shape-edit.d.ts +1 -1
- package/dist/shape-edit.d.ts.map +1 -1
- package/dist/size-edit.d.ts +1 -1
- package/dist/size-edit.d.ts.map +1 -1
- package/docs/asset-persistence.md +6 -3
- package/docs/authoring-transactions.md +21 -19
- package/docs/capability-bindings.md +6 -3
- package/docs/common-kernel-experiment.md +3 -0
- package/docs/document-contract.md +6 -3
- package/docs/dryroom-profile-validation.md +3 -0
- package/docs/editor-integration.md +5 -2
- package/docs/full-conveyor-validation.md +5 -2
- package/docs/full-dryroom-validation.md +6 -3
- package/docs/full-forklift-validation.md +5 -2
- package/docs/full-robot-validation.md +5 -2
- package/docs/payload-collision-validation.md +5 -2
- package/docs/payload-contact-validation.md +5 -2
- package/docs/prototypes/README.md +27 -61
- package/docs/repeated-binding-validation.md +6 -3
- package/docs/review-2026-09-22.md +3 -0
- package/docs/runtime-extraction.md +9 -2
- package/docs/sample-validation-expanded.md +3 -0
- package/docs/sample-validation.md +3 -0
- package/docs/shape-contract.md +7 -5
- package/docs/spatial-contracts.md +3 -0
- package/docs/status.md +2 -1
- package/docs/storage-integration.md +6 -3
- package/docs/typed-repeat-contracts.md +3 -0
- package/package.json +9 -9
- package/dist/authoring-session.d.ts +0 -121
- package/dist/authoring-session.d.ts.map +0 -1
- package/dist/authoring-session.js.map +0 -1
- package/dist/carrier.d.ts +0 -23
- package/dist/carrier.d.ts.map +0 -1
- package/dist/carrier.js +0 -65
- package/dist/carrier.js.map +0 -1
- package/docs/prototypes/asset-samples.mjs +0 -15
- package/docs/prototypes/asset-store.mjs +0 -52
- package/docs/prototypes/asset-store.test.mjs +0 -59
- package/docs/prototypes/asset.mjs +0 -1
- package/docs/prototypes/asset.schema.json +0 -36
- package/docs/prototypes/asset.test.mjs +0 -68
- package/docs/prototypes/authoring-session.mjs +0 -1
- package/docs/prototypes/authoring-session.test.mjs +0 -65
- package/docs/prototypes/capability-plan.mjs +0 -1
- package/docs/prototypes/capability-plan.test.mjs +0 -56
- package/docs/prototypes/capability-samples.mjs +0 -23
- package/docs/prototypes/document.mjs +0 -2
- package/docs/prototypes/document.schema.json +0 -66
- package/docs/prototypes/document.test.mjs +0 -55
- package/docs/prototypes/dryroom-mesh.mjs +0 -60
- package/docs/prototypes/dryroom-mesh.test.mjs +0 -30
- package/docs/prototypes/editor-browser.mjs +0 -97
- package/docs/prototypes/editor-workspace.mjs +0 -1
- package/docs/prototypes/editor-workspace.test.mjs +0 -35
- package/docs/prototypes/feature-pattern.test.mjs +0 -131
- package/docs/prototypes/full-conveyor.mjs +0 -60
- package/docs/prototypes/full-conveyor.test.mjs +0 -61
- package/docs/prototypes/full-dryroom.mjs +0 -67
- package/docs/prototypes/full-dryroom.test.mjs +0 -54
- package/docs/prototypes/full-forklift.mjs +0 -40
- package/docs/prototypes/full-forklift.test.mjs +0 -37
- package/docs/prototypes/full-robot.mjs +0 -35
- package/docs/prototypes/full-robot.test.mjs +0 -68
- package/docs/prototypes/kernel.mjs +0 -147
- package/docs/prototypes/kernel.test.mjs +0 -144
- package/docs/prototypes/more-samples.test.mjs +0 -182
- package/docs/prototypes/payload-collision.mjs +0 -54
- package/docs/prototypes/payload-collision.test.mjs +0 -68
- package/docs/prototypes/payload-fit.mjs +0 -58
- package/docs/prototypes/payload-fit.test.mjs +0 -59
- package/docs/prototypes/render-dryroom.py +0 -60
- package/docs/prototypes/render-full-dryroom.mjs +0 -86
- package/docs/prototypes/repeated-binding.mjs +0 -13
- package/docs/prototypes/repeated-binding.test.mjs +0 -46
- package/docs/prototypes/runtime-browser.mjs +0 -76
- package/docs/prototypes/samples.test.mjs +0 -144
- package/docs/prototypes/spatial-plan.test.mjs +0 -102
- package/docs/prototypes/typed-repeat.test.mjs +0 -96
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# Figure 그래프·capability 직렬화 계약 — 실험판
|
|
2
2
|
|
|
3
|
+
> 2026-10-16 정리: 본문의 옛 시제품 실행 명령과 통과 수는 당시 기록이다. 폐기된 형식·외부 시료에 의존하는 코드는 삭제했고,
|
|
4
|
+
> 해당 소스 링크는 삭제 전 커밋을 가리킨다. 현재 실행 가능한 시험과 대체 검증 경로는 [시제품 안내](prototypes/README.md)를 따른다.
|
|
5
|
+
|
|
3
6
|
> 현재 구현·검증·제품 연결 상태는 [구현·검증 현황](status.md)을 따른다. 본문의 단계별 연구/검증 기록은 제품 전체 완료 선언이 아니다.
|
|
4
7
|
|
|
5
8
|
## 범위와 상태
|
|
@@ -8,9 +11,9 @@
|
|
|
8
11
|
|
|
9
12
|
후속 [자산 저장 envelope](asset-persistence.md)는 이 document를 감싸 설계 입력·동작 기본값·재질·팔레트·분할 품질을 함께 저장한다. document 단독 포맷과 자산 envelope의 지원 범위를 혼동하지 않는다.
|
|
10
13
|
|
|
11
|
-
- [JSON Schema draft-07](prototypes/document.schema.json)
|
|
12
|
-
- [저장·읽기·의미 검증](prototypes/document.mjs)
|
|
13
|
-
- [표면 출처 및 round-trip 테스트](prototypes/document.test.mjs)
|
|
14
|
+
- [JSON Schema draft-07](https://github.com/heartyoh/figure-model/blob/3d79ec4/docs/prototypes/document.schema.json)
|
|
15
|
+
- [저장·읽기·의미 검증](https://github.com/heartyoh/figure-model/blob/3d79ec4/docs/prototypes/document.mjs)
|
|
16
|
+
- [표면 출처 및 round-trip 테스트](https://github.com/heartyoh/figure-model/blob/3d79ec4/docs/prototypes/document.test.mjs)
|
|
14
17
|
|
|
15
18
|
```
|
|
16
19
|
{
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# 드라이룸: 비대칭 단면 → typed feature → 실제 메시 검증
|
|
2
2
|
|
|
3
|
+
> 2026-10-16 정리: 본문의 옛 시제품 실행 명령과 통과 수는 당시 기록이다. 폐기된 형식·외부 시료에 의존하는 코드는 삭제했고,
|
|
4
|
+
> 해당 소스 링크는 삭제 전 커밋을 가리킨다. 현재 실행 가능한 시험과 대체 검증 경로는 [시제품 안내](prototypes/README.md)를 따른다.
|
|
5
|
+
|
|
3
6
|
> 현재 구현·검증·제품 연결 상태는 [구현·검증 현황](status.md)을 따른다. 본문의 단계별 연구/검증 기록은 제품 전체 완료 선언이 아니다.
|
|
4
7
|
|
|
5
8
|
> **2026-09-26:** `portal-profile@1`(좌표 여덟)은 `portal-profile@2`로 바뀌었다. 입력은 폭 · 높이 · 깊이 · 기둥 두께 · 인방 두께의 다섯이고, 좌우로 가운데, 바닥에 서며, 좌표 여덟은 이 값에서 나온다. 앞 셋이 상자와 같아 크기를 따를 수 있다. 아래는 @1 때의 기록이다.
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# Figure 편집 화면 연결 검증 — 실험판
|
|
2
2
|
|
|
3
|
+
> 2026-10-16 정리: 본문의 옛 시제품 실행 명령과 통과 수는 당시 기록이다. 폐기된 형식·외부 시료에 의존하는 코드는 삭제했고,
|
|
4
|
+
> 해당 소스 링크는 삭제 전 커밋을 가리킨다. 현재 실행 가능한 시험과 대체 검증 경로는 [시제품 안내](prototypes/README.md)를 따른다.
|
|
5
|
+
|
|
3
6
|
> 현재 구현·검증·제품 연결 상태는 [구현·검증 현황](status.md)을 따른다. 본문의 단계별 연구/검증 기록은 제품 전체 완료 선언이 아니다.
|
|
4
7
|
|
|
5
8
|
## 완료 범위
|
|
@@ -7,8 +10,8 @@
|
|
|
7
10
|
저장된 Figure 자산을 공통 편집 세션으로 열고, 입력 변경을 평가된 3D 장면으로 전달하는 연결 계층을 구현했다. **제품 모델러·서버·DB에는 아직 연결하지 않았다.**
|
|
8
11
|
|
|
9
12
|
- 연결 계층: [editor-workspace.ts](../src/editor-workspace.ts) — 실험 mjs는 re-export만 유지
|
|
10
|
-
- 계약 검증: [editor-workspace.test.mjs](prototypes/editor-workspace.test.mjs)
|
|
11
|
-
- 격리 브라우저 검증: [editor-browser.mjs](prototypes/editor-browser.mjs)
|
|
13
|
+
- 계약 검증: [editor-workspace.test.mjs](https://github.com/heartyoh/figure-model/blob/3d79ec4/docs/prototypes/editor-workspace.test.mjs)
|
|
14
|
+
- 격리 브라우저 검증: [editor-browser.mjs](https://github.com/heartyoh/figure-model/blob/3d79ec4/docs/prototypes/editor-browser.mjs)
|
|
12
15
|
|
|
13
16
|
원본은 관계 그래프와 저작 입력이다. 메시를 직접 수정한 뒤 그래프로 역추정하지 않는다. 속성창과 AI는 같은 단위·역할·revision 검사 및 편집 트랜잭션을 사용한다.
|
|
14
17
|
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
# Figure 전체 컨베이어 검증 — 2026-09-21
|
|
2
2
|
|
|
3
|
+
> 2026-10-16 정리: 본문의 옛 시제품 실행 명령과 통과 수는 당시 기록이다. 폐기된 형식·외부 시료에 의존하는 코드는 삭제했고,
|
|
4
|
+
> 해당 소스 링크는 삭제 전 커밋을 가리킨다. 현재 실행 가능한 시험과 대체 검증 경로는 [시제품 안내](prototypes/README.md)를 따른다.
|
|
5
|
+
|
|
3
6
|
> 현재 구현·검증·제품 연결 상태는 [구현·검증 현황](status.md)을 따른다. 본문의 단계별 연구/검증 기록은 제품 전체 완료 선언이 아니다.
|
|
4
7
|
|
|
5
8
|
## 판정과 범위
|
|
6
9
|
|
|
7
10
|
저장소 CONVEYOR seed의 **17개 파트 유형 전체**를 실험 Figure 그래프로 작성했다. 기본 형상과 재질을 재현하면서 기존 반복 배치의 겹침을 의도적으로 제거했다. 제품 모델러 통합·애니메이션 재생·AI 저작 검증은 아직 아니다.
|
|
8
11
|
|
|
9
|
-
- 선언 및 메시 어댑터: [full-conveyor.mjs](prototypes/full-conveyor.mjs)
|
|
10
|
-
- 회귀 검사: [full-conveyor.test.mjs](prototypes/full-conveyor.test.mjs)
|
|
12
|
+
- 선언 및 메시 어댑터: [full-conveyor.mjs](https://github.com/heartyoh/figure-model/blob/3d79ec4/docs/prototypes/full-conveyor.mjs)
|
|
13
|
+
- 회귀 검사: [full-conveyor.test.mjs](https://github.com/heartyoh/figure-model/blob/3d79ec4/docs/prototypes/full-conveyor.test.mjs)
|
|
11
14
|
- 브라우저: `node docs/prototypes/render-full-dryroom.mjs --conveyor`
|
|
12
15
|
- 전체 테스트: `node --test docs/prototypes/*.test.mjs`
|
|
13
16
|
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# Figure 전체 DRY_ROOM 검증 — 2026-09-21
|
|
2
2
|
|
|
3
|
+
> 2026-10-16 정리: 본문의 옛 시제품 실행 명령과 통과 수는 당시 기록이다. 폐기된 형식·외부 시료에 의존하는 코드는 삭제했고,
|
|
4
|
+
> 해당 소스 링크는 삭제 전 커밋을 가리킨다. 현재 실행 가능한 시험과 대체 검증 경로는 [시제품 안내](prototypes/README.md)를 따른다.
|
|
5
|
+
|
|
3
6
|
> 현재 구현·검증·제품 연결 상태는 [구현·검증 현황](status.md)을 따른다. 본문의 단계별 연구/검증 기록은 제품 전체 완료 선언이 아니다.
|
|
4
7
|
|
|
5
8
|
## 판정
|
|
@@ -9,9 +12,9 @@
|
|
|
9
12
|
## 범위와 재현 방법
|
|
10
13
|
|
|
11
14
|
- 원본: `operato-application/packages/operato-figure/server/seed/figure-samples.json`의 DRY_ROOM.
|
|
12
|
-
- 전체 선언: [full-dryroom.mjs](prototypes/full-dryroom.mjs).
|
|
13
|
-
- 테스트: [full-dryroom.test.mjs](prototypes/full-dryroom.test.mjs).
|
|
14
|
-
- 브라우저 실험: [render-full-dryroom.mjs](prototypes/render-full-dryroom.mjs).
|
|
15
|
+
- 전체 선언: [full-dryroom.mjs](https://github.com/heartyoh/figure-model/blob/3d79ec4/docs/prototypes/full-dryroom.mjs).
|
|
16
|
+
- 테스트: [full-dryroom.test.mjs](https://github.com/heartyoh/figure-model/blob/3d79ec4/docs/prototypes/full-dryroom.test.mjs).
|
|
17
|
+
- 브라우저 실험: [render-full-dryroom.mjs](https://github.com/heartyoh/figure-model/blob/3d79ec4/docs/prototypes/render-full-dryroom.mjs).
|
|
15
18
|
- 실행: `node --test docs/prototypes/*.test.mjs`, `node docs/prototypes/render-full-dryroom.mjs`.
|
|
16
19
|
|
|
17
20
|
브라우저 스크립트는 이 개발 환경의 설치된 Three.js·Playwright·Chrome을 사용한다. 별도 임시 loopback 서버를 열고 종료하며 제품 서버·DB·자산·의존성 설정을 변경하지 않는다. 경로는 개발 환경에 종속되어 있다.
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
# Figure 전체 포크리프트 검증 — 2026-09-21
|
|
2
2
|
|
|
3
|
+
> 2026-10-16 정리: 본문의 옛 시제품 실행 명령과 통과 수는 당시 기록이다. 폐기된 형식·외부 시료에 의존하는 코드는 삭제했고,
|
|
4
|
+
> 해당 소스 링크는 삭제 전 커밋을 가리킨다. 현재 실행 가능한 시험과 대체 검증 경로는 [시제품 안내](prototypes/README.md)를 따른다.
|
|
5
|
+
|
|
3
6
|
> 현재 구현·검증·제품 연결 상태는 [구현·검증 현황](status.md)을 따른다. 본문의 단계별 연구/검증 기록은 제품 전체 완료 선언이 아니다.
|
|
4
7
|
|
|
5
8
|
## 판정
|
|
6
9
|
|
|
7
10
|
저장소 FORKLIFT seed의 **20개 파트 전체**와 lift/reach/drive를 실험 Figure 그래프로 작성했다. 기본 형상 재현과 동시 상태 갱신 검증을 통과했다. 실제 제품 모델러·시간 재생기·적재 기능·충돌/안전성까지 완료한 것은 아니다.
|
|
8
11
|
|
|
9
|
-
- [전체 선언](prototypes/full-forklift.mjs)
|
|
10
|
-
- [테스트](prototypes/full-forklift.test.mjs)
|
|
12
|
+
- [전체 선언](https://github.com/heartyoh/figure-model/blob/3d79ec4/docs/prototypes/full-forklift.mjs)
|
|
13
|
+
- [테스트](https://github.com/heartyoh/figure-model/blob/3d79ec4/docs/prototypes/full-forklift.test.mjs)
|
|
11
14
|
- 실행: `node --test docs/prototypes/*.test.mjs`
|
|
12
15
|
- 브라우저: `node docs/prototypes/render-full-dryroom.mjs --forklift`
|
|
13
16
|
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# Figure 전체 로봇암 검증 — 2026-09-21
|
|
2
2
|
|
|
3
|
+
> 2026-10-16 정리: 본문의 옛 시제품 실행 명령과 통과 수는 당시 기록이다. 폐기된 형식·외부 시료에 의존하는 코드는 삭제했고,
|
|
4
|
+
> 해당 소스 링크는 삭제 전 커밋을 가리킨다. 현재 실행 가능한 시험과 대체 검증 경로는 [시제품 안내](prototypes/README.md)를 따른다.
|
|
5
|
+
|
|
3
6
|
> 현재 구현·검증·제품 연결 상태는 [구현·검증 현황](status.md)을 따른다. 본문의 단계별 연구/검증 기록은 제품 전체 완료 선언이 아니다.
|
|
4
7
|
|
|
5
8
|
## 판정
|
|
@@ -8,8 +11,8 @@
|
|
|
8
11
|
|
|
9
12
|
## 구현과 재현
|
|
10
13
|
|
|
11
|
-
- [전체 선언 및 어댑터](prototypes/full-robot.mjs)
|
|
12
|
-
- [검증 테스트](prototypes/full-robot.test.mjs)
|
|
14
|
+
- [전체 선언 및 어댑터](https://github.com/heartyoh/figure-model/blob/3d79ec4/docs/prototypes/full-robot.mjs)
|
|
15
|
+
- [검증 테스트](https://github.com/heartyoh/figure-model/blob/3d79ec4/docs/prototypes/full-robot.test.mjs)
|
|
13
16
|
- `node --test docs/prototypes/*.test.mjs`
|
|
14
17
|
- `node docs/prototypes/render-full-dryroom.mjs --robot`
|
|
15
18
|
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
# 적재물 대 모델 전체 부품 충돌 검사 — 실험 v1
|
|
2
2
|
|
|
3
|
+
> 2026-10-16 정리: 본문의 옛 시제품 실행 명령과 통과 수는 당시 기록이다. 폐기된 형식·외부 시료에 의존하는 코드는 삭제했고,
|
|
4
|
+
> 해당 소스 링크는 삭제 전 커밋을 가리킨다. 현재 실행 가능한 시험과 대체 검증 경로는 [시제품 안내](prototypes/README.md)를 따른다.
|
|
5
|
+
|
|
3
6
|
> 현재 구현·검증·제품 연결 상태는 [구현·검증 현황](status.md)을 따른다. 본문의 단계별 연구/검증 기록은 제품 전체 완료 선언이 아니다.
|
|
4
7
|
|
|
5
8
|
## 범위
|
|
6
9
|
|
|
7
|
-
[실행 코드](prototypes/payload-collision.mjs)는 공간/접촉 검사 결과에 별도 collision 판정을 더한다. **현재 상태의 payload 대 모든 모델 부품**을 검사한다. 모델 부품 상호 간 충돌, 다른 외부 자산, 움직이는 경로 전체의 연속 충돌, 물리 안정성은 범위 밖이다. 따라서 '전역 충돌 완성'이라고 부르지 않는다.
|
|
10
|
+
[실행 코드](https://github.com/heartyoh/figure-model/blob/3d79ec4/docs/prototypes/payload-collision.mjs)는 공간/접촉 검사 결과에 별도 collision 판정을 더한다. **현재 상태의 payload 대 모든 모델 부품**을 검사한다. 모델 부품 상호 간 충돌, 다른 외부 자산, 움직이는 경로 전체의 연속 충돌, 물리 안정성은 범위 밖이다. 따라서 '전역 충돌 완성'이라고 부르지 않는다.
|
|
8
11
|
|
|
9
12
|
접촉 대상으로 선언된 포크도 충돌 검사에서 제외하지 않는다. 면 접촉과 내부 관통을 구분한다. 기존 geometry·capability 선언·제품 서버는 바꾸지 않는다.
|
|
10
13
|
|
|
@@ -26,7 +29,7 @@ OBB(회전 상자) 간 정적 분리축 검사(SAT)를 사용한다. 양쪽 상
|
|
|
26
29
|
|
|
27
30
|
## 검증
|
|
28
31
|
|
|
29
|
-
[테스트](prototypes/payload-collision.test.mjs):
|
|
32
|
+
[테스트](https://github.com/heartyoh/figure-model/blob/3d79ec4/docs/prototypes/payload-collision.test.mjs):
|
|
30
33
|
|
|
31
34
|
- 분리/접촉/관통/완전 포함, 허용 오차 경계, AABB가 겹치지만 OBB는 분리된 경우.
|
|
32
35
|
- 일반적인 3D 회전의 결정적 난수 **1,000쌍**을 기존 Three.js OBB 구현과 대조: 교차174·분리826, 전부 일치. 두 구현은 같은 SAT 원리를 사용하므로 수학적 전 범위 증명이 아니다.
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
# 적재물 공간·평면 접촉 검사 — 실험 v1
|
|
2
2
|
|
|
3
|
+
> 2026-10-16 정리: 본문의 옛 시제품 실행 명령과 통과 수는 당시 기록이다. 폐기된 형식·외부 시료에 의존하는 코드는 삭제했고,
|
|
4
|
+
> 해당 소스 링크는 삭제 전 커밋을 가리킨다. 현재 실행 가능한 시험과 대체 검증 경로는 [시제품 안내](prototypes/README.md)를 따른다.
|
|
5
|
+
|
|
3
6
|
> 현재 구현·검증·제품 연결 상태는 [구현·검증 현황](status.md)을 따른다. 본문의 단계별 연구/검증 기록은 제품 전체 완료 선언이 아니다.
|
|
4
7
|
|
|
5
8
|
## 구현 범위
|
|
6
9
|
|
|
7
|
-
[검사 코드](prototypes/payload-fit.mjs)는 기존 capability compiler를 내부에서 실행한다. 외부에서 조작한 표면 결과를 받아 인증하지 않는다. 이번 단계에서 지원하는 것은 **상자 적재물 바닥과 box 부품의 top 평면**이다. 전체 물리·충돌·안전성 solver는 아니다.
|
|
10
|
+
[검사 코드](https://github.com/heartyoh/figure-model/blob/3d79ec4/docs/prototypes/payload-fit.mjs)는 기존 capability compiler를 내부에서 실행한다. 외부에서 조작한 표면 결과를 받아 인증하지 않는다. 이번 단계에서 지원하는 것은 **상자 적재물 바닥과 box 부품의 top 평면**이다. 전체 물리·충돌·안전성 solver는 아니다.
|
|
8
11
|
|
|
9
12
|
입력은 binding ID, 물체 종류와 점유 snapshot, 양의 상자 치수(mm), binding 좌표계 기준 중심(mm), Y축 회전각(deg)이다. 기울어진 적재물, 임의 메시, 곡면 받침, 파지 접촉은 이 검사 범위 밖이다. 모든 추가 필드와 잘못된 값은 거부한다.
|
|
10
13
|
|
|
@@ -37,7 +40,7 @@ binding의 centered-box region이 있을 때만 검사한다. 회전된 payload
|
|
|
37
40
|
|
|
38
41
|
## 검증 결과
|
|
39
42
|
|
|
40
|
-
[테스트](prototypes/payload-fit.test.mjs):
|
|
43
|
+
[테스트](https://github.com/heartyoh/figure-model/blob/3d79ec4/docs/prototypes/payload-fit.test.mjs):
|
|
41
44
|
|
|
42
45
|
- 포크 길이3 × 상승3 × 내밈3 × 적재물 yaw3 = **81개 상태**의 양쪽 포크 접촉.
|
|
43
46
|
- 회전0에서는 포크 하나당 교차 면적 `90 × forkLength`mm²와 일치.
|
|
@@ -1,73 +1,39 @@
|
|
|
1
|
-
#
|
|
1
|
+
# 실행 가능한 설계 시험과 연구 기록
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
2026-10-16에 이 폴더의 모든 `*.test.mjs`를 실행했다. 세 파일은 통과했고, 18개 파일은 누락된 외부 시료·모듈로
|
|
4
|
+
시작하지 못했으며 `spatial-plan.test.mjs`의 7개 시험은 폐기된 형상 연산자로 실패했다.
|
|
5
|
+
외부 시료 `figure-samples.json`을 복구해도 현재 커널이 거절하는 옛 형식에 의존하므로, 해당 시제품과 전용 도우미·스키마를 삭제했다.
|
|
6
|
+
옛 형식 실행기나 호환 계층을 복원하지 않는다. 삭제 전 코드는 [0.6.7의 시제품 폴더](https://github.com/heartyoh/figure-model/tree/3d79ec4/docs/prototypes)에 남아 있다.
|
|
5
7
|
|
|
6
|
-
|
|
7
|
-
[연산·형상 계약과 미지원 범위](../operator-contracts.md)를 참조한다.
|
|
8
|
+
## 유지하는 시험
|
|
8
9
|
|
|
9
|
-
|
|
10
|
-
`node --test docs/prototypes/semantics.test.mjs`는 부착식과 반복식을 독립 검사한다.
|
|
11
|
-
기존 커널을 r3에 맞게 구현했다는 의미가 아니다.
|
|
10
|
+
`npm run test:prototypes` 또는 `node --test docs/prototypes/*.test.mjs`로 실행한다. `npm test`에도 포함된다.
|
|
12
11
|
|
|
13
|
-
|
|
12
|
+
- `layout.test.mjs`: 배치 계산의 독립적인 수학적 예제 18개.
|
|
13
|
+
- `semantics.test.mjs`: 부착 변환과 반복 배치의 독립적인 수학적 예제 3개.
|
|
14
|
+
- `typed-plan.test.mjs`: 현재 그래프 컴파일러를 호출하는 단위·scalar 계약 시험 9개.
|
|
14
15
|
|
|
15
|
-
|
|
16
|
+
앞의 두 파일은 제품 구현 자체의 회귀 시험이 아니다. `typed-plan.mjs`는 현재 컴파일러의 re-export이며 별도 실행기를 갖지 않는다.
|
|
16
17
|
|
|
17
|
-
|
|
18
|
-
범위·213개 크기/상태 조합·반례·미지원 항목은
|
|
19
|
-
[공통 커널 실험 기록](../common-kernel-experiment.md)을 따른다.
|
|
20
|
-
제품 Figure 구현이나 전체 샘플 변환 완료가 아니다.
|
|
18
|
+
## 현재 구현의 검증 경로
|
|
21
19
|
|
|
22
|
-
|
|
20
|
+
옛 시제품 시험을 현재 구현의 근거로 사용하지 않는다.
|
|
23
21
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
22
|
+
| 영역 | 현재 소스·시험 |
|
|
23
|
+
| --- | --- |
|
|
24
|
+
| 자산 형식·저장·기본값 캡처 | [asset-types.ts](../../src/asset-types.ts), [asset.ts](../../src/asset.ts), [asset.test.ts](../../src/asset.test.ts), [asset-entrances.test.ts](../../src/asset-entrances.test.ts) |
|
|
25
|
+
| 문서·JSON 입력 경계 | [document.ts](../../src/document.ts), [document-entrances.test.ts](../../src/document-entrances.test.ts), [json.test.ts](../../src/json.test.ts) |
|
|
26
|
+
| 그래프·형상·깊은 의존성 | [graph.test.ts](../../src/graph.test.ts), [shape-ops.test.ts](../../src/shape-ops.test.ts), [state-dimension.test.ts](../../src/state-dimension.test.ts) |
|
|
27
|
+
| 편집·undo/redo | [editor-workspace.test.ts](../../src/editor-workspace.test.ts), [edit-side-effects.test.ts](../../src/edit-side-effects.test.ts) |
|
|
28
|
+
| 적재 자리 판정 | [item-seats.test.ts](../../src/item-seats.test.ts), [slot-places.test.ts](../../src/slot-places.test.ts) |
|
|
28
29
|
|
|
29
|
-
|
|
30
|
+
이 표는 옛 payload 접촉·충돌 실험의 기능이 전부 제품으로 이관됐다는 뜻이 아니다. 독립 파일 저장소와 브라우저 렌더 실험도
|
|
31
|
+
현재 제품의 DB·브라우저 통합 시험을 대신하지 않는다.
|
|
30
32
|
|
|
31
|
-
|
|
32
|
-
package.json, 의존성, 서버, 소비자 runtime을 변경하지 않는다.
|
|
33
|
+
## 별도 환경이 필요한 연구 자료
|
|
33
34
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
- `shapeassembly-probe.py`와 결과 JSON: 외부 고정 revision의 연구용 interpreter를 호출한 기록.
|
|
36
|
+
[재현 문서](../shapeassembly-reproduction.md)의 checkout과 가상환경이 필요하다.
|
|
37
|
+
- `linear-comparison.py`: `kiwisolver==1.4.9`가 필요한 독립 비교 실험. 실행 조건은 파일 머리말에 있다.
|
|
37
38
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
## 확인한 것
|
|
41
|
-
|
|
42
|
-
- capped grow/shrink의 제한·가중 배분·공간 보존: seed 고정 800개 조합.
|
|
43
|
-
- 100개 문 폭에서 외곽 여백·중앙 간격·완전 개방 시 내측 끝점.
|
|
44
|
-
- 고정 크기, gap 초과, 단일/빈 목록, fr 최소/최대, auto 다중 span.
|
|
45
|
-
- 회전한 정렬 기준점의 일치와 전역 강체 변환에 대한 일관성.
|
|
46
|
-
- min/max 전환의 구간별 동작, 비율 합계와 gap의 overflow.
|
|
47
|
-
- 값 DAG의 순서 불변성, 순환/중복 writer/알 수 없는 참조 거절.
|
|
48
|
-
|
|
49
|
-
초기 문 이동량 W/2는 중앙 gap/2만큼 더 이동하는 오류였다.
|
|
50
|
-
열린 문 안쪽 끝이 정확히 개구부 끝에 놓이는 독립 기대값으로 오류를 검출했고,
|
|
51
|
-
정확한 이동량 (W-gap)/2로 문서와 예제를 함께 수정했다.
|
|
52
|
-
|
|
53
|
-
## 확인하지 않은 것
|
|
54
|
-
|
|
55
|
-
- production schema/compiler 또는 실제 3D 엔진의 실행.
|
|
56
|
-
- 모든 축·모든 shape·중첩 컨테이너 전체 조합의 올바름.
|
|
57
|
-
- 실제 드라이룸/롤 프레스 자산의 수정 결과.
|
|
58
|
-
- 전체 지원 치수 범위의 형식 증명, float 오차의 보수적 인증.
|
|
59
|
-
- 모든 회전의 geometry 포함, 면 접촉, 관절 충돌, 미적 품질.
|
|
60
|
-
- 실제 CPU/GPU/메모리 성능이나 사용자 작업 시간 개선.
|
|
61
|
-
|
|
62
|
-
autoTracks는 intrinsic 기여 단계만, gridFr는 fr 배분 단계만 검증한다.
|
|
63
|
-
완전한 Grid evaluator나 validator로 재사용해서는 안 된다.
|
|
64
|
-
evaluateValues도 최소 DAG 예제이며 제품 수준 schema·오류 보고·깊이 제한을 갖추지 않았다.
|
|
65
|
-
wall-clock test 실행 시간은 제품 레이아웃 성능으로 보고하지 않는다.
|
|
66
|
-
|
|
67
|
-
## 다음 검증 순서
|
|
68
|
-
|
|
69
|
-
1. 정본 schema와 실제 geometry provider의 intrinsic/feature 계약 고정.
|
|
70
|
-
2. 중첩 Measure/Allocate/Arrange 통합 evaluator 및 독립 기준 결과 비교.
|
|
71
|
-
3. v2 자산의 고정 revision fixture를 확보해 외형·관절·발행 계약 비교.
|
|
72
|
-
4. renderer에서 중복 scale/shear/장면 잔류 없이 전체 layout 원자 교체 검증.
|
|
73
|
-
5. UI/AI 동일 transaction의 preview·apply·undo·저장 E2E와 비용 실측.
|
|
39
|
+
이 연구 자료는 `test:prototypes`와 `npm test`에 포함되지 않는다.
|
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
# 반복 요소의 기능/표면 참조 — 실험 검증
|
|
2
2
|
|
|
3
|
+
> 2026-10-16 정리: 본문의 옛 시제품 실행 명령과 통과 수는 당시 기록이다. 폐기된 형식·외부 시료에 의존하는 코드는 삭제했고,
|
|
4
|
+
> 해당 소스 링크는 삭제 전 커밋을 가리킨다. 현재 실행 가능한 시험과 대체 검증 경로는 [시제품 안내](prototypes/README.md)를 따른다.
|
|
5
|
+
|
|
3
6
|
> 현재 구현·검증·제품 연결 상태는 [구현·검증 현황](status.md)을 따른다. 본문의 단계별 연구/검증 기록은 제품 전체 완료 선언이 아니다.
|
|
4
7
|
|
|
5
8
|
## 이번 구현
|
|
6
9
|
|
|
7
10
|
전체 컨베이어의 반복 롤러를 선택하고 그 실제 끝면을 binding pose와 contact 후보로 사용할 수 있도록 했다. 반복 template를 별도 메시로 만들거나 선택한 항목을 한 번 더 렌더링하지 않는다.
|
|
8
11
|
|
|
9
|
-
- [예제](prototypes/repeated-binding.mjs)
|
|
10
|
-
- [테스트](prototypes/repeated-binding.test.mjs)
|
|
11
|
-
- [capability compiler](prototypes/capability-plan.mjs)
|
|
12
|
+
- [예제](https://github.com/heartyoh/figure-model/blob/3d79ec4/docs/prototypes/repeated-binding.mjs)
|
|
13
|
+
- [테스트](https://github.com/heartyoh/figure-model/blob/3d79ec4/docs/prototypes/repeated-binding.test.mjs)
|
|
14
|
+
- [capability compiler](https://github.com/heartyoh/figure-model/blob/3d79ec4/docs/prototypes/capability-plan.mjs)
|
|
12
15
|
|
|
13
16
|
현재 선언 버전은 `r3-capability-3`이다. pose는 기존 transform 출력 ID 또는 `{placement, feature}` 중 하나다. 후자는 실제 표면 출처 검사와 같은 경로로 처리한다. V1/V2 입력은 묵시적으로 바꾸지 않고 거부한다. 제품 데이터 마이그레이션을 수행한 것은 아니다.
|
|
14
17
|
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# Figure 평가 — figure 레인, 2026-09-22
|
|
2
2
|
|
|
3
|
+
> 2026-10-16 정리: 본문의 옛 시제품 실행 명령과 통과 수는 당시 기록이다. 폐기된 형식·외부 시료에 의존하는 코드는 삭제했고,
|
|
4
|
+
> 해당 소스 링크는 삭제 전 커밋을 가리킨다. 현재 실행 가능한 시험과 대체 검증 경로는 [시제품 안내](prototypes/README.md)를 따른다.
|
|
5
|
+
|
|
3
6
|
figure-model 0.1.32 (`54d30c2`) 기준. 문서를 읽고 판단한 것이 아니라 **돌려서 확인한 것**을 적는다.
|
|
4
7
|
확인에 쓴 명령은 항목마다 적어 두었다.
|
|
5
8
|
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# Figure 런타임 정식 소스 이관 — 그래프·capability·자산
|
|
2
2
|
|
|
3
|
+
> 2026-10-16 정리: 본문의 옛 시제품 실행 명령과 통과 수는 당시 기록이다. 폐기된 형식·외부 시료에 의존하는 코드는 삭제했고,
|
|
4
|
+
> 해당 소스 링크는 삭제 전 커밋을 가리킨다. 현재 실행 가능한 시험과 대체 검증 경로는 [시제품 안내](prototypes/README.md)를 따른다.
|
|
5
|
+
|
|
3
6
|
> 현재 구현·검증·제품 연결 상태는 [구현·검증 현황](status.md)을 따른다. 본문의 단계별 연구/검증 기록은 제품 전체 완료 선언이 아니다.
|
|
4
7
|
|
|
5
8
|
> 최신 작업 기준: [단일 체계 전환](cutover.md). 아래의 버전별 제품 연결 방향은 과거 작업 기록이며, 향후 설계 조건에서 제외한다.
|
|
@@ -78,7 +81,11 @@
|
|
|
78
81
|
|
|
79
82
|
## 편집 트랜잭션·workspace 이관
|
|
80
83
|
|
|
81
|
-
`src/authoring-session.ts`와 `src/editor-workspace.ts`를
|
|
84
|
+
이관 당시 `src/authoring-session.ts`와 `src/editor-workspace.ts`를 추가하고, 두 생성 함수와 요청·반환 타입을 패키지 루트에서 제공했다.
|
|
85
|
+
두 모듈은 `any` 없이 strict 설정으로 검사했다. 하위 평가기의 내부 Dynamic 경계까지 제거한 것은 아니다.
|
|
86
|
+
|
|
87
|
+
2026-10-16에 사용하지 않는 입력 세션 API와 해당 프로토타입·시험을 삭제했다. 현재 수정 번호·적용·읽기·undo/redo는
|
|
88
|
+
편집 작업 공간이 관리하고, 입력 미리보기는 내부 함수로만 남는다. 아래는 이관 당시의 계약과 검증 기록이다.
|
|
82
89
|
|
|
83
90
|
유지한 편집 계약:
|
|
84
91
|
|
|
@@ -93,7 +100,7 @@ workspace 이관 당시 검증: 소스 테스트 **451개**, 실험 테스트 **
|
|
|
93
100
|
|
|
94
101
|
별도로 격리 편집 UI에서 포크1275mm 수정 → HTTP 파일 저장 → 로봇 전환 → 저장본 복원 → 빈 화면의 경로를 다시 통과했다. page error0개. 생성된 편집 화면과 빈 캔버스 스크린샷을 직접 확인했다. 이 UI는 제품 서버가 아니며 테스트 후 임시 저장 파일을 정리한다.
|
|
95
102
|
|
|
96
|
-
### 편집 계층의
|
|
103
|
+
### 이관 당시 편집 계층의 제한
|
|
97
104
|
|
|
98
105
|
- 선언된 입력값 편집과 상자 추가 트랜잭션을 지원한다. 구조 변경과 입력 변경은 workspace의 동일 undo/redo 이력에 포함된다. 다른 primitive 추가·삭제·재질·관계 편집은 남아 있다.
|
|
99
106
|
- context는 한 workspace 안의 열기 세대다. 전역 자산 ID·사용자 권한·영속 대화 세션 ID를 대체하지 않는다.
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# Figure 샘플 검증 확대 — 16종
|
|
2
2
|
|
|
3
|
+
> 2026-10-16 정리: 본문의 옛 시제품 실행 명령과 통과 수는 당시 기록이다. 폐기된 형식·외부 시료에 의존하는 코드는 삭제했고,
|
|
4
|
+
> 해당 소스 링크는 삭제 전 커밋을 가리킨다. 현재 실행 가능한 시험과 대체 검증 경로는 [시제품 안내](prototypes/README.md)를 따른다.
|
|
5
|
+
|
|
3
6
|
> 현재 구현·검증·제품 연결 상태는 [구현·검증 현황](status.md)을 따른다. 본문의 단계별 연구/검증 기록은 제품 전체 완료 선언이 아니다.
|
|
4
7
|
|
|
5
8
|
2026-09-20. [1차 검사](sample-validation.md)의 후속이다.
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# Figure 실제 샘플 대입 검증 — 2026-09-20
|
|
2
2
|
|
|
3
|
+
> 2026-10-16 정리: 본문의 옛 시제품 실행 명령과 통과 수는 당시 기록이다. 폐기된 형식·외부 시료에 의존하는 코드는 삭제했고,
|
|
4
|
+
> 해당 소스 링크는 삭제 전 커밋을 가리킨다. 현재 실행 가능한 시험과 대체 검증 경로는 [시제품 안내](prototypes/README.md)를 따른다.
|
|
5
|
+
|
|
3
6
|
> 현재 구현·검증·제품 연결 상태는 [구현·검증 현황](status.md)을 따른다. 본문의 단계별 연구/검증 기록은 제품 전체 완료 선언이 아니다.
|
|
4
7
|
|
|
5
8
|
후속: [제품 시드 전체 + fixture 2종, 총 16종 확대 검증](sample-validation-expanded.md).
|
package/docs/shape-contract.md
CHANGED
|
@@ -59,9 +59,11 @@ What the kernel does now, where it differs from the text below, and why. Branch
|
|
|
59
59
|
be fastened to, it is not a surface a binding holds things on, and its preview is a line.
|
|
60
60
|
- **Commands built:** `set-section-corner` and `set-cavity` (§7). An edit that takes away a face something refers to
|
|
61
61
|
is refused with `FEATURE_MAPPING_REQUIRED`. Mapping to another face is not built yet.
|
|
62
|
-
- **The one-time rewrite:** `scripts/rewrite-shapes.ts` and `scripts/rewrite-shapes-files.ts
|
|
63
|
-
|
|
64
|
-
|
|
62
|
+
- **The one-time rewrite:** `scripts/rewrite-shapes.ts` and `scripts/rewrite-shapes-files.ts` wrote a file only when
|
|
63
|
+
every body's world box and pose agreed with the old kernel's (0.1.95) at the drawn values, at half and twice the
|
|
64
|
+
size, and at each state input's ends. All 24 fixtures agreed. The scripts were removed after migration. A read-only check on 2026-10-16 found no old
|
|
65
|
+
shape operators in 65 production drafts, 6 release records, the templates or the fixtures.
|
|
66
|
+
The scripts are available in history at `a3ed90a`.
|
|
65
67
|
- **Q10 (ruled 2026-09-29, "make it large enough"):** the node limit is 8192 (`FIGURE_DOCUMENT_NODE_LIMIT`), a fence against malformed documents; the 1 MiB limit binds first. No start shorthand.
|
|
66
68
|
A start node per part took two stored figures, of 493 and 497 nodes, past 512. The alternative is a `start` left out
|
|
67
69
|
for a centred push, which is a stored shorthand and a change of format.
|
|
@@ -344,8 +346,8 @@ triangulation and a full re-evaluation of the figure at 64, 256 and 1024 points
|
|
|
344
346
|
|
|
345
347
|
## 7. Commands
|
|
346
348
|
|
|
347
|
-
|
|
348
|
-
in one step.
|
|
349
|
+
The modeller sends these commands through the editor workspace, which checks the context and revision, applies
|
|
350
|
+
atomically, and undoes in one step. AI proposals and templates use the same authoring commands (ADR-0100 decision 6).
|
|
349
351
|
|
|
350
352
|
| command | what it changes |
|
|
351
353
|
| -------------------------------------------------------------------- | ------------------------------------------------------------------------------------ |
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# Figure 타입·공간 그래프 통합 실험
|
|
2
2
|
|
|
3
|
+
> 2026-10-16 정리: 본문의 옛 시제품 실행 명령과 통과 수는 당시 기록이다. 폐기된 형식·외부 시료에 의존하는 코드는 삭제했고,
|
|
4
|
+
> 해당 소스 링크는 삭제 전 커밋을 가리킨다. 현재 실행 가능한 시험과 대체 검증 경로는 [시제품 안내](prototypes/README.md)를 따른다.
|
|
5
|
+
|
|
3
6
|
> 현재 구현·검증·제품 연결 상태는 [구현·검증 현황](status.md)을 따른다. 본문의 단계별 연구/검증 기록은 제품 전체 완료 선언이 아니다.
|
|
4
7
|
|
|
5
8
|
후속: [드라이룸 실제 단면·메시 검증](dryroom-profile-validation.md).
|
package/docs/status.md
CHANGED
|
@@ -20,4 +20,5 @@
|
|
|
20
20
|
- 제품 서버 localhost:3300 은 이 형식으로 돈다(figure-model 0.1.92 · things-scene 10.1.60 · tf 10.1.75).
|
|
21
21
|
- 시험: `npm test`(타입 검사 + `src/*.test.ts`). 부품 지우기·복제의 부작용 시험은
|
|
22
22
|
`src/edit-side-effects.test.ts` — 도형 16 개의 모든 부품을 지우고 복제해 나머지가 그대로인지 본다.
|
|
23
|
-
-
|
|
23
|
+
- 날짜가 붙은 검증 문서는 당시 기록이다. 2026-10-16에 폐기된 시제품을 정리했고, 현재 유지하는 30개 시험은
|
|
24
|
+
`npm run test:prototypes`로 실행하며 `npm test`에도 포함한다. [시제품 안내](prototypes/README.md)를 따른다.
|
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
# Figure 저장 API 경계와 파일 영속화 검증
|
|
2
2
|
|
|
3
|
+
> 2026-10-16 정리: 본문의 옛 시제품 실행 명령과 통과 수는 당시 기록이다. 폐기된 형식·외부 시료에 의존하는 코드는 삭제했고,
|
|
4
|
+
> 해당 소스 링크는 삭제 전 커밋을 가리킨다. 현재 실행 가능한 시험과 대체 검증 경로는 [시제품 안내](prototypes/README.md)를 따른다.
|
|
5
|
+
|
|
3
6
|
> 현재 구현·검증·제품 연결 상태는 [구현·검증 현황](status.md)을 따른다. 본문의 단계별 연구/검증 기록은 제품 전체 완료 선언이 아니다.
|
|
4
7
|
|
|
5
8
|
## 이번 단계의 결과
|
|
6
9
|
|
|
7
10
|
격리 편집 화면의 메모리 저장을 **HTTP 요청 → 의미 검증 → 파일 저장 → 저장 확인**으로 변경했다. 저장한 자산은 파일에서 다시 열며, 별도 Node 프로세스에서도 복원한다. 실제 제품의 GraphQL API·DB·기존 자산은 변경하지 않았다.
|
|
8
11
|
|
|
9
|
-
- [파일 저장소](prototypes/asset-store.mjs)
|
|
10
|
-
- [저장·충돌·별도 프로세스 복원 테스트](prototypes/asset-store.test.mjs)
|
|
11
|
-
- [브라우저 연결](prototypes/editor-browser.mjs)
|
|
12
|
+
- [파일 저장소](https://github.com/heartyoh/figure-model/blob/3d79ec4/docs/prototypes/asset-store.mjs)
|
|
13
|
+
- [저장·충돌·별도 프로세스 복원 테스트](https://github.com/heartyoh/figure-model/blob/3d79ec4/docs/prototypes/asset-store.test.mjs)
|
|
14
|
+
- [브라우저 연결](https://github.com/heartyoh/figure-model/blob/3d79ec4/docs/prototypes/editor-browser.mjs)
|
|
12
15
|
|
|
13
16
|
## 왜 기존 저장 API에 바로 연결하지 않았는가
|
|
14
17
|
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# 반복 조립체의 typed graph 통합
|
|
2
2
|
|
|
3
|
+
> 2026-10-16 정리: 본문의 옛 시제품 실행 명령과 통과 수는 당시 기록이다. 폐기된 형식·외부 시료에 의존하는 코드는 삭제했고,
|
|
4
|
+
> 해당 소스 링크는 삭제 전 커밋을 가리킨다. 현재 실행 가능한 시험과 대체 검증 경로는 [시제품 안내](prototypes/README.md)를 따른다.
|
|
5
|
+
|
|
3
6
|
> 현재 구현·검증·제품 연결 상태는 [구현·검증 현황](status.md)을 따른다. 본문의 단계별 연구/검증 기록은 제품 전체 완료 선언이 아니다.
|
|
4
7
|
|
|
5
8
|
상태: 독립 실험. 제품 런타임·원본 시드·DB 변경 없음.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hatiolab/figure-model",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"description": "The figure format (figure-asset-1): a kernel that evaluates a figure from its declared relations, the authoring commands a modeller and an AI share, the release gate and the score.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"figure",
|
|
@@ -15,12 +15,12 @@
|
|
|
15
15
|
"author": "heartyoh@hatiolab.com",
|
|
16
16
|
"repository": {
|
|
17
17
|
"type": "git",
|
|
18
|
-
"url": "git+https://github.com/
|
|
18
|
+
"url": "git+https://github.com/heartyoh/figure-model.git"
|
|
19
19
|
},
|
|
20
20
|
"bugs": {
|
|
21
|
-
"url": "https://github.com/
|
|
21
|
+
"url": "https://github.com/heartyoh/figure-model/issues"
|
|
22
22
|
},
|
|
23
|
-
"homepage": "https://github.com/
|
|
23
|
+
"homepage": "https://github.com/heartyoh/figure-model#readme",
|
|
24
24
|
"type": "module",
|
|
25
25
|
"sideEffects": false,
|
|
26
26
|
"main": "dist/index.js",
|
|
@@ -48,15 +48,15 @@
|
|
|
48
48
|
"version": "node scripts/sync-kernel-version.mjs && git add src/kernel-version.ts",
|
|
49
49
|
"build": "tsc -p tsconfig.build.json",
|
|
50
50
|
"check": "tsc -p tsconfig.json --noEmit",
|
|
51
|
-
"test": "npm run check && FIGURE_FREEZE_COMPILED=1 node --test src/*.test.ts",
|
|
52
|
-
"test:coverage:slot-layout": "node --test --experimental-test-coverage --test-coverage-include=src/slot-layout.ts --test-coverage-include=src/slot-places.ts --test-coverage-lines=100 --test-coverage-branches=95 --test-coverage-functions=95 src/slot-layout.test.ts src/slot-places.test.ts",
|
|
53
|
-
"test:rewrite": "node --test scripts/*.test.ts",
|
|
51
|
+
"test": "npm run check && FIGURE_FREEZE_COMPILED=1 node --test src/*.test.ts && npm run test:prototypes",
|
|
52
|
+
"test:coverage:slot-layout": "FIGURE_FREEZE_COMPILED=1 node --test --experimental-test-coverage --test-coverage-include=src/slot-layout.ts --test-coverage-include=src/slot-places.ts --test-coverage-lines=100 --test-coverage-branches=95 --test-coverage-functions=95 src/slot-layout.test.ts src/slot-places.test.ts",
|
|
54
53
|
"test:released": "node --test scripts/released-kernel.check.ts",
|
|
55
|
-
"test:coverage": "node --test --experimental-test-coverage --test-coverage-lines=
|
|
54
|
+
"test:coverage": "FIGURE_FREEZE_COMPILED=1 node --test --experimental-test-coverage --test-coverage-lines=97 --test-coverage-branches=90 --test-coverage-functions=96 src/*.test.ts",
|
|
56
55
|
"format": "prettier --write \"src/**/*.ts\" \"docs/**/*.md\" \"*.md\" \"*.json\"",
|
|
57
56
|
"format:check": "prettier --check \"src/**/*.ts\" \"docs/**/*.md\" \"*.md\" \"*.json\"",
|
|
58
57
|
"clean": "rm -rf dist",
|
|
59
|
-
"prepublishOnly": "npm run clean && npm run check && npm test && npm run build"
|
|
58
|
+
"prepublishOnly": "npm run clean && npm run check && npm test && npm run build",
|
|
59
|
+
"test:prototypes": "node --test docs/prototypes/*.test.mjs"
|
|
60
60
|
},
|
|
61
61
|
"devDependencies": {
|
|
62
62
|
"@types/node": "^26.4.1",
|