@hatiolab/figure-model 0.1.30 → 0.1.31

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.
Files changed (143) hide show
  1. package/README.md +2 -0
  2. package/dist/index.d.ts +12 -0
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +11 -0
  5. package/dist/index.js.map +1 -1
  6. package/dist/release-contract.d.ts +2 -2
  7. package/dist/release-contract.d.ts.map +1 -1
  8. package/dist/release-contract.js +45 -3
  9. package/dist/release-contract.js.map +1 -1
  10. package/dist/types.d.ts +15 -4
  11. package/dist/types.d.ts.map +1 -1
  12. package/dist/types.js +15 -4
  13. package/dist/types.js.map +1 -1
  14. package/dist/v3-asset-types.d.ts +116 -0
  15. package/dist/v3-asset-types.d.ts.map +1 -0
  16. package/dist/v3-asset-types.js +2 -0
  17. package/dist/v3-asset-types.js.map +1 -0
  18. package/dist/v3-asset.d.ts +8 -0
  19. package/dist/v3-asset.d.ts.map +1 -0
  20. package/dist/v3-asset.js +135 -0
  21. package/dist/v3-asset.js.map +1 -0
  22. package/dist/v3-authoring-session.d.ts +119 -0
  23. package/dist/v3-authoring-session.d.ts.map +1 -0
  24. package/dist/v3-authoring-session.js +132 -0
  25. package/dist/v3-authoring-session.js.map +1 -0
  26. package/dist/v3-capabilities.d.ts +3 -0
  27. package/dist/v3-capabilities.d.ts.map +1 -0
  28. package/dist/v3-capabilities.js +221 -0
  29. package/dist/v3-capabilities.js.map +1 -0
  30. package/dist/v3-contract.d.ts +7 -0
  31. package/dist/v3-contract.d.ts.map +1 -0
  32. package/dist/v3-contract.js +12 -0
  33. package/dist/v3-contract.js.map +1 -0
  34. package/dist/v3-create.d.ts +25 -0
  35. package/dist/v3-create.d.ts.map +1 -0
  36. package/dist/v3-create.js +50 -0
  37. package/dist/v3-create.js.map +1 -0
  38. package/dist/v3-document.d.ts +5 -0
  39. package/dist/v3-document.d.ts.map +1 -0
  40. package/dist/v3-document.js +31 -0
  41. package/dist/v3-document.js.map +1 -0
  42. package/dist/v3-editor-workspace.d.ts +334 -0
  43. package/dist/v3-editor-workspace.d.ts.map +1 -0
  44. package/dist/v3-editor-workspace.js +130 -0
  45. package/dist/v3-editor-workspace.js.map +1 -0
  46. package/dist/v3-graph-types.d.ts +91 -0
  47. package/dist/v3-graph-types.d.ts.map +1 -0
  48. package/dist/v3-graph-types.js +2 -0
  49. package/dist/v3-graph-types.js.map +1 -0
  50. package/dist/v3-graph.d.ts +5 -0
  51. package/dist/v3-graph.d.ts.map +1 -0
  52. package/dist/v3-graph.js +631 -0
  53. package/dist/v3-graph.js.map +1 -0
  54. package/dist/v3-json.d.ts +13 -0
  55. package/dist/v3-json.d.ts.map +1 -0
  56. package/dist/v3-json.js +94 -0
  57. package/dist/v3-json.js.map +1 -0
  58. package/dist/v3-part-edit.d.ts +12 -0
  59. package/dist/v3-part-edit.d.ts.map +1 -0
  60. package/dist/v3-part-edit.js +53 -0
  61. package/dist/v3-part-edit.js.map +1 -0
  62. package/docs/assembly-constraints-v3.md +141 -0
  63. package/docs/prototypes/README.md +73 -0
  64. package/docs/prototypes/render-dryroom.py +60 -0
  65. package/docs/prototypes/render-full-dryroom.mjs +86 -0
  66. package/docs/prototypes/shapeassembly-probe-results.json +325 -0
  67. package/docs/prototypes/shapeassembly-probe.py +84 -0
  68. package/docs/prototypes/v3-asset-samples.mjs +15 -0
  69. package/docs/prototypes/v3-asset-store.mjs +52 -0
  70. package/docs/prototypes/v3-asset-store.test.mjs +59 -0
  71. package/docs/prototypes/v3-asset.mjs +1 -0
  72. package/docs/prototypes/v3-asset.schema.json +44 -0
  73. package/docs/prototypes/v3-asset.test.mjs +68 -0
  74. package/docs/prototypes/v3-authoring-session.mjs +1 -0
  75. package/docs/prototypes/v3-authoring-session.test.mjs +65 -0
  76. package/docs/prototypes/v3-capability-plan.mjs +1 -0
  77. package/docs/prototypes/v3-capability-plan.test.mjs +56 -0
  78. package/docs/prototypes/v3-capability-samples.mjs +23 -0
  79. package/docs/prototypes/v3-document.mjs +2 -0
  80. package/docs/prototypes/v3-document.schema.json +66 -0
  81. package/docs/prototypes/v3-document.test.mjs +55 -0
  82. package/docs/prototypes/v3-dryroom-mesh.mjs +60 -0
  83. package/docs/prototypes/v3-dryroom-mesh.test.mjs +30 -0
  84. package/docs/prototypes/v3-editor-browser.mjs +97 -0
  85. package/docs/prototypes/v3-editor-workspace.mjs +1 -0
  86. package/docs/prototypes/v3-editor-workspace.test.mjs +35 -0
  87. package/docs/prototypes/v3-feature-pattern.test.mjs +131 -0
  88. package/docs/prototypes/v3-full-conveyor.mjs +60 -0
  89. package/docs/prototypes/v3-full-conveyor.test.mjs +61 -0
  90. package/docs/prototypes/v3-full-dryroom.mjs +67 -0
  91. package/docs/prototypes/v3-full-dryroom.test.mjs +54 -0
  92. package/docs/prototypes/v3-full-forklift.mjs +40 -0
  93. package/docs/prototypes/v3-full-forklift.test.mjs +37 -0
  94. package/docs/prototypes/v3-full-robot.mjs +35 -0
  95. package/docs/prototypes/v3-full-robot.test.mjs +68 -0
  96. package/docs/prototypes/v3-kernel.mjs +147 -0
  97. package/docs/prototypes/v3-kernel.test.mjs +144 -0
  98. package/docs/prototypes/v3-layout.test.mjs +281 -0
  99. package/docs/prototypes/v3-linear-comparison.py +183 -0
  100. package/docs/prototypes/v3-more-samples.test.mjs +182 -0
  101. package/docs/prototypes/v3-payload-collision.mjs +54 -0
  102. package/docs/prototypes/v3-payload-collision.test.mjs +68 -0
  103. package/docs/prototypes/v3-payload-fit.mjs +58 -0
  104. package/docs/prototypes/v3-payload-fit.test.mjs +59 -0
  105. package/docs/prototypes/v3-repeated-binding.mjs +13 -0
  106. package/docs/prototypes/v3-repeated-binding.test.mjs +46 -0
  107. package/docs/prototypes/v3-runtime-browser.mjs +76 -0
  108. package/docs/prototypes/v3-samples.test.mjs +144 -0
  109. package/docs/prototypes/v3-semantics.test.mjs +55 -0
  110. package/docs/prototypes/v3-spatial-plan.test.mjs +102 -0
  111. package/docs/prototypes/v3-typed-plan.mjs +3 -0
  112. package/docs/prototypes/v3-typed-plan.test.mjs +70 -0
  113. package/docs/prototypes/v3-typed-repeat.test.mjs +96 -0
  114. package/docs/v3-asset-persistence.md +66 -0
  115. package/docs/v3-authoring-transactions.md +57 -0
  116. package/docs/v3-capability-bindings.md +109 -0
  117. package/docs/v3-common-kernel-experiment.md +116 -0
  118. package/docs/v3-core-semantics.md +303 -0
  119. package/docs/v3-cutover.md +27 -0
  120. package/docs/v3-design.md +388 -0
  121. package/docs/v3-document-contract.md +55 -0
  122. package/docs/v3-dryroom-profile-validation.md +87 -0
  123. package/docs/v3-editor-integration.md +59 -0
  124. package/docs/v3-full-conveyor-validation.md +69 -0
  125. package/docs/v3-full-dryroom-validation.md +55 -0
  126. package/docs/v3-full-forklift-validation.md +41 -0
  127. package/docs/v3-full-robot-validation.md +64 -0
  128. package/docs/v3-layout-system.md +318 -0
  129. package/docs/v3-minimal-model.md +255 -0
  130. package/docs/v3-operator-contracts.md +148 -0
  131. package/docs/v3-payload-collision-validation.md +42 -0
  132. package/docs/v3-payload-contact-validation.md +56 -0
  133. package/docs/v3-repeated-binding-validation.md +42 -0
  134. package/docs/v3-research-review.md +160 -0
  135. package/docs/v3-runtime-extraction.md +107 -0
  136. package/docs/v3-sample-validation-expanded.md +106 -0
  137. package/docs/v3-sample-validation.md +97 -0
  138. package/docs/v3-shapeassembly-reproduction.md +99 -0
  139. package/docs/v3-spatial-contracts.md +84 -0
  140. package/docs/v3-status.md +41 -0
  141. package/docs/v3-storage-integration.md +58 -0
  142. package/docs/v3-typed-repeat-contracts.md +79 -0
  143. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v3-graph.js","sourceRoot":"","sources":["../src/v3-graph.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export type V3JsonValue = null | boolean | number | string | V3JsonValue[] | {
2
+ [key: string]: V3JsonValue;
3
+ };
4
+ /** Experimental resource limits, not a product storage quota. */
5
+ export declare const V3_JSON_MAX_BYTES: number;
6
+ export declare const V3_JSON_MAX_DEPTH = 64;
7
+ /** Identical UTF-8 accounting in browsers and Node, including lone surrogates. */
8
+ export declare function v3Utf8ByteLength(text: string): number;
9
+ /** Reject values JSON.stringify would silently discard or transform. Does not invoke getters. */
10
+ export declare function assertV3Json(value: unknown): asserts value is V3JsonValue;
11
+ /** Strict JSON transport only; this is NOT V3 model/asset semantic validation. */
12
+ export declare function parseV3Json(text: string): V3JsonValue;
13
+ //# sourceMappingURL=v3-json.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v3-json.d.ts","sourceRoot":"","sources":["../src/v3-json.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,WAAW,EAAE,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAA;CAAE,CAAA;AAE3G,iEAAiE;AACjE,eAAO,MAAM,iBAAiB,QAAc,CAAA;AAC5C,eAAO,MAAM,iBAAiB,KAAK,CAAA;AAMnC,kFAAkF;AAClF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,iGAAiG;AACjG,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,WAAW,CA+BzE;AAED,kFAAkF;AAClF,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CA0BrD"}
@@ -0,0 +1,94 @@
1
+ import { V3ContractError } from "./v3-contract.js";
2
+ /** Experimental resource limits, not a product storage quota. */
3
+ export const V3_JSON_MAX_BYTES = 1024 * 1024;
4
+ export const V3_JSON_MAX_DEPTH = 64;
5
+ function fail(code, detail) {
6
+ throw new V3ContractError(code, 'document', detail);
7
+ }
8
+ /** Identical UTF-8 accounting in browsers and Node, including lone surrogates. */
9
+ export function v3Utf8ByteLength(text) {
10
+ return new TextEncoder().encode(text).byteLength;
11
+ }
12
+ /** Reject values JSON.stringify would silently discard or transform. Does not invoke getters. */
13
+ export function assertV3Json(value) {
14
+ const active = new Set();
15
+ function visit(current, depth) {
16
+ if (depth > V3_JSON_MAX_DEPTH)
17
+ fail('DOCUMENT_LIMIT', 'nesting exceeds 64');
18
+ if (current === null || typeof current === 'string' || typeof current === 'boolean')
19
+ return;
20
+ if (typeof current === 'number') {
21
+ if (!Number.isFinite(current))
22
+ fail('JSON_VALUE', 'nonfinite number');
23
+ return;
24
+ }
25
+ if (typeof current !== 'object')
26
+ fail('JSON_VALUE', 'only JSON values are allowed');
27
+ if (active.has(current))
28
+ fail('JSON_VALUE', 'cycle');
29
+ const array = Array.isArray(current);
30
+ if (!array && Object.getPrototypeOf(current) !== Object.prototype)
31
+ fail('JSON_VALUE', 'plain objects required');
32
+ active.add(current);
33
+ const descriptors = Object.getOwnPropertyDescriptors(current);
34
+ for (const key of Reflect.ownKeys(descriptors)) {
35
+ if (array && key === 'length')
36
+ continue;
37
+ if (typeof key !== 'string')
38
+ fail('JSON_VALUE', 'symbols unsupported');
39
+ const descriptor = descriptors[key];
40
+ if (!descriptor.enumerable || !Object.hasOwn(descriptor, 'value')) {
41
+ fail('JSON_VALUE', 'hidden properties and accessors unsupported');
42
+ }
43
+ if (array && !(/^(0|[1-9][0-9]*)$/.test(key) && Number(key) < current.length)) {
44
+ fail('JSON_VALUE', 'extra array property');
45
+ }
46
+ visit(descriptor.value, depth + 1);
47
+ }
48
+ if (array && Object.keys(current).length !== current.length)
49
+ fail('JSON_VALUE', 'sparse array');
50
+ active.delete(current);
51
+ }
52
+ visit(value, 0);
53
+ }
54
+ /** Strict JSON transport only; this is NOT V3 model/asset semantic validation. */
55
+ export function parseV3Json(text) {
56
+ if (typeof text !== 'string')
57
+ fail('JSON_VALUE', 'text required');
58
+ // Cheap UTF-16 length bound avoids allocating an encoded copy of huge requests.
59
+ if (text.length > V3_JSON_MAX_BYTES || v3Utf8ByteLength(text) > V3_JSON_MAX_BYTES) {
60
+ fail('DOCUMENT_LIMIT', 'over 1 MiB');
61
+ }
62
+ let parsed;
63
+ try {
64
+ parsed = JSON.parse(text);
65
+ }
66
+ catch {
67
+ fail('JSON_SYNTAX', 'invalid JSON');
68
+ }
69
+ // Syntax is checked above. Scan tokens to reject duplicate decoded keys, including escaped aliases.
70
+ const stack = [];
71
+ for (const token of text.matchAll(/"(?:\\.|[^"\\])*"|[{}\[\],:]|[^\s{}\[\],:"]+/g)) {
72
+ const value = token[0], top = stack.at(-1);
73
+ if (value === '{')
74
+ stack.push({ keys: new Set(), expectingKey: true });
75
+ else if (value === '[')
76
+ stack.push({});
77
+ else if (value === '}' || value === ']')
78
+ stack.pop();
79
+ else if (value === ',' && top?.keys)
80
+ top.expectingKey = true;
81
+ else if (value.startsWith('"') && top?.expectingKey && top.keys) {
82
+ const key = JSON.parse(value);
83
+ if (top.keys.has(key))
84
+ fail('JSON_DUPLICATE_KEY', key);
85
+ top.keys.add(key);
86
+ top.expectingKey = false;
87
+ }
88
+ if (stack.length > V3_JSON_MAX_DEPTH + 1)
89
+ fail('DOCUMENT_LIMIT', 'nesting exceeds 64');
90
+ }
91
+ assertV3Json(parsed);
92
+ return parsed;
93
+ }
94
+ //# sourceMappingURL=v3-json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v3-json.js","sourceRoot":"","sources":["../src/v3-json.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { V3Asset, V3Material } from './v3-asset-types.ts';
2
+ export type V3PartEdit = {
3
+ kind: 'set-material';
4
+ target: string;
5
+ material: V3Material;
6
+ } | {
7
+ kind: 'remove-part';
8
+ target: string;
9
+ };
10
+ /** Pure, validated structural edit. References are never silently retargeted or cascaded. */
11
+ export declare function editV3Part(source: V3Asset, edit: V3PartEdit): V3Asset;
12
+ //# sourceMappingURL=v3-part-edit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v3-part-edit.d.ts","sourceRoot":"","sources":["../src/v3-part-edit.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAG9D,MAAM,MAAM,UAAU,GAAG;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,UAAU,CAAA;CAAE,GACnF;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAE3C,6FAA6F;AAC7F,wBAAgB,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAsCrE"}
@@ -0,0 +1,53 @@
1
+ import { compileV3Asset } from "./v3-asset.js";
2
+ import { V3ContractError } from "./v3-contract.js";
3
+ /** Pure, validated structural edit. References are never silently retargeted or cascaded. */
4
+ export function editV3Part(source, edit) {
5
+ compileV3Asset(source);
6
+ const asset = structuredClone(source), model = asset.document.model;
7
+ const look = asset.appearance.find(a => a.target === edit.target);
8
+ if (!look)
9
+ throw new V3ContractError('TARGET_ABSENT', 'part', edit.target);
10
+ if (edit.kind === 'set-material')
11
+ look.material = structuredClone(edit.material);
12
+ else if (edit.kind === 'remove-part') {
13
+ const part = model.nodes.find(n => n.id === edit.target);
14
+ if (!part || part.op !== 'place@1')
15
+ throw new V3ContractError('EDIT_TARGET', edit.target, 'remove an explicit placement, not a repeated template');
16
+ const outputs = new Set(Object.values(part.outputs));
17
+ // Other graph nodes and capability declarations are roots. Deletion must not invalidate them.
18
+ const references = (value) => typeof value === 'string' ? [value] :
19
+ Array.isArray(value) ? value.flatMap(references) : value && typeof value === 'object' ? Object.values(value).flatMap(references) : [];
20
+ const bound = new Set(references(asset.document.capabilities));
21
+ if (model.nodes.some(n => n.id !== part.id && n.args.some(ref => outputs.has(ref))) || [...outputs].some(ref => bound.has(ref))) {
22
+ throw new V3ContractError('PART_REFERENCED', part.id, 'another graph node or capability references this placement');
23
+ }
24
+ model.nodes = model.nodes.filter(n => n.id !== part.id);
25
+ asset.appearance = asset.appearance.filter(a => a.target !== part.id);
26
+ // Prune only upstream values belonging exclusively to the removed placement.
27
+ const pending = [...part.args];
28
+ while (pending.length) {
29
+ const ref = pending.pop();
30
+ if (bound.has(ref) || model.nodes.some(n => n.args.includes(ref) || Object.values(n.params ?? {}).includes(ref)))
31
+ continue;
32
+ const writer = model.nodes.find(n => Object.values(n.outputs).includes(ref));
33
+ if (writer) {
34
+ const refs = Object.values(writer.outputs);
35
+ if (asset.appearance.some(a => a.target === writer.id) || refs.some(r => bound.has(r) || model.nodes.some(n => n.id !== writer.id && (n.args.includes(r) || Object.values(n.params ?? {}).includes(r)))))
36
+ continue;
37
+ model.nodes = model.nodes.filter(n => n.id !== writer.id);
38
+ pending.push(...writer.args);
39
+ }
40
+ else {
41
+ model.inputs = model.inputs.filter(i => i.id !== ref);
42
+ model.constants = model.constants.filter(c => c.id !== ref);
43
+ delete asset.designInputs[ref];
44
+ delete asset.stateDefaults[ref];
45
+ }
46
+ }
47
+ }
48
+ else
49
+ throw new V3ContractError('EDIT_KIND', 'part', 'unsupported operation');
50
+ compileV3Asset(asset);
51
+ return asset;
52
+ }
53
+ //# sourceMappingURL=v3-part-edit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v3-part-edit.js","sourceRoot":"","sources":["../src/v3-part-edit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,141 @@
1
+ # Figure v3 — 조립 관계와 반응형 제약
2
+
3
+ > 상태: 아래 내용은 **폐기된 초기 초안**이다. 구현 계약으로 사용하지 않는다.
4
+ > [재설계 상세안](v3-design.md)이 이 문서를 대체한다. 특히 병렬 `fit/relative/face` 제약,
5
+ > 관계 없는 초안의 저장 금지, 2배 검사 통과를 안전성으로 간주하는 조건은 철회한다.
6
+
7
+ ## 결정 요약
8
+
9
+ Figure v2는 독립 부품의 기하·재질·축별 크기 반응을 잘 표현한다. 그러나 부품들이 **어떤
10
+ 조립 의도로 붙어 있는지**는 표현하지 못한다. `anchor`는 항상 기준 상자 면을 기준으로 하고,
11
+ `parent`는 관절 운동 계층일 뿐 크기·배치 종속성이 아니다. 따라서 게이트는 갈라짐을 측정할 수
12
+ 있어도 portal·gate·lamp 중 무엇을 어떤 관계로 복구해야 하는지는 알 수 없다.
13
+
14
+ v3는 `anchor`가 기준 상자에만 매달리는 한계를 교정하고, `assemblies`를 정본 계약으로
15
+ 도입한다. 조립체는 기준 부품, 멤버, 그리고 검증·수정 가능한 관계 제약을 선언한다. v2의
16
+ 독립 부품 해석은 과거 데이터 읽기용 이행 경로일 뿐, 새 모델의 품질 기준은 아니다.
17
+
18
+ ## 사용자 약속
19
+
20
+ 저작자는 `anchor.max`를 조합해서 장비를 맞추지 않는다. 모델러는 다음처럼 의도를 입력한다.
21
+
22
+ ```
23
+ portal-in 에 붙이기
24
+ gate-in-left, gate-in-right: 개구부 좌/우 면에 맞춤
25
+ lamp-in: portal 상단에서 60 mm 위
26
+ readout: portal 전면의 상대 좌표 (0.5, 0.82)
27
+ ```
28
+
29
+ 그 뒤 기준 부품의 크기·비율·위치가 바뀌면 종속 부품이 함께 계산된다. AI도 같은 제약을
30
+ 읽고 후보를 만들며, 발행 게이트는 깨진 제약을 보여 주고 안전한 복합 수정을 초안에 적용한다.
31
+
32
+ ## 데이터 계약
33
+
34
+ ```ts
35
+ interface FigureAssembly {
36
+ name: string // 저장 식별자, 예: 'portal-in-system'
37
+ root: string // parts[].name — 조립체 기준 부품
38
+ members: string[] // root를 제외한 종속 부품, 중복 금지
39
+ constraints: AssemblyConstraint[]
40
+ }
41
+
42
+ type AssemblyConstraint =
43
+ | { kind: 'face'; subject: string; subjectFace: Face; target: string; targetFace: Face; offset?: number }
44
+ | { kind: 'relative'; subject: string; target: string; position: Partial<Vec3>; size?: Partial<Vec3> }
45
+ | { kind: 'fit'; subject: string; target: string; axes: Axis[]; inset?: Partial<Vec3> }
46
+ | { kind: 'ratio'; subject: string; target: string; axis: Axis; targetAxis: Axis; ratio: number }
47
+
48
+ type Face = 'min-x' | 'max-x' | 'min-y' | 'max-y' | 'min-z' | 'max-z'
49
+ ```
50
+
51
+ ### 의미
52
+
53
+ - `face`: 두 면의 간격을 고정한다. lamp 하단 ↔ portal 상단 `offset: 60`이 이 경우다.
54
+ - `relative`: 기준 부품의 국소 상자 안 상대 위치·크기를 유지한다. HMI와 라벨에 쓴다.
55
+ - `fit`: gate처럼 목표 부품의 개구부/외곽을 여러 축에서 채운다. 절대 `span`의 조립체 버전이다.
56
+ - `ratio`: 한 축이 다른 부품 축의 비율을 따른다. 현재 `aspect-y`가 기준 상자 축만 보던 한계를
57
+ 보완한다.
58
+
59
+ 제약은 **계산 가능한 기하 계약**이다. 설명 문자열이나 AI의 추론 결과를 저장하지 않는다.
60
+
61
+ ## 해석 순서
62
+
63
+ ```text
64
+ FigureSource v3
65
+ → 부품의 기본 transform·sizing 계산
66
+ → assembly root의 최종 상자 계산
67
+ → assembly constraint를 위상 순서로 적용
68
+ → 최종 blueprint / scene transform
69
+ → 제약 검사 + 1×·2× 크기 반응 검사
70
+ ```
71
+
72
+ 제약 대상은 같은 조립체 안에서만 참조할 수 있다. 조립체끼리 순환 참조하거나, root가 자기
73
+ 후손을 참조하는 것은 검증 오류다. 관절의 `parent` 계층은 운동 변환을 담당하고, 조립 제약은
74
+ rest pose와 인스턴스 크기 반응을 담당한다. 두 역할을 섞지 않는다.
75
+
76
+ ## 검증과 자동 수정
77
+
78
+ 발행 게이트는 기존의 덩어리 검사에 더해 다음을 낸다.
79
+
80
+ | 코드 | 의미 | 처리 |
81
+ |---|---|---|
82
+ | `assembly-target-missing` | root/member/target 이름이 없음 | 저장 차단 |
83
+ | `assembly-cycle` | 관계 계산 순환 | 저장 차단 |
84
+ | `assembly-constraint-broken` | 기준 크기에서 면·상대치수 불일치 | 발행 차단 |
85
+ | `assembly-scales-apart` | 확대 시 선언한 관계가 깨짐 | 발행 차단 |
86
+ | `assembly-ambiguous` | 이행된 부품이 물리적으로 닿지만 관계가 선언되지 않음 | 전환 검토 |
87
+
88
+ 자동 수정은 anchor 후보를 무작위 조합하지 않는다.
89
+
90
+ 1. 깨진 제약과 root를 찾는다.
91
+ 2. 제약 해석기로 멤버의 transform/반응 규칙을 다시 계산한다.
92
+ 3. 1×와 일곱 가지 2× 배율을 모두 재검사한다.
93
+ 4. 모든 차단 항목이 사라질 때만 `recommendedRepair`를 만든다.
94
+ 5. 모델러의 **권장 수정 적용**은 초안에만 반영한다. 저장·발행은 별도다.
95
+
96
+ ## 드라이룸 예시
97
+
98
+ ```json
99
+ {
100
+ "name": "portal-in-system",
101
+ "root": "portal-in",
102
+ "members": ["gate-in-left", "gate-in-right", "lamp-in", "lamp-in-glow", "readout"],
103
+ "constraints": [
104
+ { "kind": "fit", "subject": "gate-in-left", "target": "portal-in", "axes": ["x", "y"], "inset": { "x": 20 } },
105
+ { "kind": "fit", "subject": "gate-in-right", "target": "portal-in", "axes": ["x", "y"], "inset": { "x": 20 } },
106
+ { "kind": "face", "subject": "lamp-in", "subjectFace": "min-y", "target": "portal-in", "targetFace": "max-y", "offset": 60 },
107
+ { "kind": "relative", "subject": "readout", "target": "portal-in", "position": { "x": 0.5, "y": 0.82, "z": 1 } }
108
+ ]
109
+ }
110
+ ```
111
+
112
+ 이 계약은 “lamp의 `anchor.y`를 max로 바꿔 본다”가 아니라 “lamp가 portal 상단에서 60mm를
113
+ 유지한다”를 보존한다. 따라서 기준 상자의 비율 변화에도 수정을 설명하고 검증할 수 있다.
114
+
115
+ ## 이행 원칙
116
+
117
+ 1. `version: 3`은 새 저작·AI·발행의 기준 계약이다. 새 모델은 기준 상자 anchor만으로
118
+ 조립 의도를 표현하지 않는다.
119
+ 2. v2는 읽을 수 있어야 하지만, v2 해석을 영구 표준으로 보존하지 않는다. 전환기는 물리적
120
+ 근접·이름·기존 anchor를 근거로 조립 관계 후보를 만들고, 사용자가 의도를 확인한다.
121
+ 3. 확인된 v3 전환 결과가 기존 동작보다 조립·확대 품질이 낮으면 전환을 거절한다. “깨지지
122
+ 않음”보다 “의도를 더 정확히 보존함”이 기준이다.
123
+ 4. 과거에 이미 발행된 판은 당시 원본과 해석기를 함께 보관해 재현성을 유지한다. 이는 v2
124
+ 설계를 계속 발전시키겠다는 뜻이 아니라 과거 화면을 거짓으로 바꾸지 않기 위한 기록 보존이다.
125
+ 5. 새 Figure와 새 AI 후보는 v3 제약이 없는 상태로 저장되지 않는다. 독립 부품뿐인 단순
126
+ Figure는 빈 조립체 목록을 명시한다.
127
+
128
+ ## 완료 기준
129
+
130
+ - 드라이룸의 portal/gate/lamp/readout을 조립체로 선언할 수 있다.
131
+ - portal의 X·Y·Z 및 복합 배율 7종에서 선언한 면·상대치수가 유지된다.
132
+ - 의도적으로 독립인 port/slot은 조립체에 넣지 않아도 거짓 차단되지 않는다.
133
+ - AI가 새 Figure와 편집 후보 모두에서 유효한 assembly 제약을 생성한다.
134
+ - 게이트는 깨진 조립 제약에 대해 검증된 복합 초안 수정안을 제시한다.
135
+ - v2 전환 표본은 새 관계 계약 아래에서 기존보다 낮은 조립·확대 품질을 내지 않는다.
136
+
137
+ ## 명시적 비목표
138
+
139
+ - 물리 시뮬레이션·충돌 해석을 Figure 모델에 넣지 않는다.
140
+ - 모든 근접 부품을 자동으로 조립체로 확정하지 않는다. 근접은 증거일 뿐 의도가 아니다.
141
+ - AI가 관계를 추측한 결과를 사용자 확인 없이 정본에 저장하지 않는다.
@@ -0,0 +1,73 @@
1
+ # v3 레이아웃 설계 검증 예제
2
+
3
+ `node --test docs/prototypes/v3-typed-repeat.test.mjs`: 단위/좌표계 그래프와 반복 조립체 통합.
4
+ [배치 의도 변경과 검증 한계](../v3-typed-repeat-contracts.md)를 함께 확인한다.
5
+
6
+ `node --test docs/prototypes/v3-typed-plan.test.mjs`: 단위가 있는 scalar 컴파일러.
7
+ [연산·형상 계약과 미지원 범위](../v3-operator-contracts.md)를 참조한다.
8
+
9
+ 현재 설계 방향: [r3 핵심 의미론](../v3-core-semantics.md).
10
+ `node --test docs/prototypes/v3-semantics.test.mjs`는 부착식과 반복식을 독립 검사한다.
11
+ 기존 커널을 r3에 맞게 구현했다는 의미가 아니다.
12
+
13
+ ## 공통 커널 실험
14
+
15
+ `node --test docs/prototypes/v3-kernel.test.mjs`
16
+
17
+ 모델별 분기 없는 실행기와 실제 샘플에서 유도한 선언을 분리했다.
18
+ 범위·213개 크기/상태 조합·반례·미지원 항목은
19
+ [공통 커널 실험 기록](../v3-common-kernel-experiment.md)을 따른다.
20
+ 제품 v3 구현이나 전체 샘플 변환 완료가 아니다.
21
+
22
+ ## 외부 연구 구현 probe
23
+
24
+ `shapeassembly-probe.py`는 제품 코드가 아니라 외부 고정 revision의 interpreter 호출기다.
25
+ 외부 소스/라이브러리를 이 저장소에 포함하지 않는다. 단독 실행에는 별도의 연구용 checkout과
26
+ 가상환경이 필요하다. 입력·출력은 `shapeassembly-probe-results.json`, 해석·라이선스 경계·
27
+ 재현 명령은 [실행 기록](../v3-shapeassembly-reproduction.md)을 따른다.
28
+
29
+ 아래 내용은 그와 별개인 자체 r1 수치 예제다.
30
+
31
+ 이 폴더는 제품 모듈에 포함되지 않는 실행 가능한 설계 예제다.
32
+ package.json, 의존성, 서버, 소비자 runtime을 변경하지 않는다.
33
+
34
+ ```sh
35
+ node --test docs/prototypes/v3-layout.test.mjs
36
+ ```
37
+
38
+ 2026-09-20 실행 결과: 18개 테스트 통과.
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와 비용 실측.
@@ -0,0 +1,60 @@
1
+ """Software orthographic rendering of the actual generated triangle meshes.
2
+ Input: JSON from v3-dryroom-mesh.mjs on stdin. Requires Pillow, no product changes.
3
+ Output path must be explicitly supplied. Not a screenshot of the product renderer.
4
+ """
5
+ import json,sys,math
6
+ import numpy as np
7
+ from PIL import Image,ImageDraw,ImageFont
8
+ data=json.load(sys.stdin)
9
+ im=Image.new('RGB',(1440,1000),'#101923');draw=ImageDraw.Draw(im)
10
+ font=ImageFont.truetype('/System/Library/Fonts/Helvetica.ttc',22)
11
+ small=ImageFont.truetype('/System/Library/Fonts/Helvetica.ttc',17)
12
+ title=ImageFont.truetype('/System/Library/Fonts/Helvetica.ttc',29)
13
+ draw.text((30,20),'DRY ROOM / actual seed portal mesh',font=title,fill='white')
14
+ draw.text((30,62),'Orthographic mesh render, not the application viewport. Original asset unchanged.',font=small,fill='#a9bdcc')
15
+ for col,panel in enumerate(data['panels']):
16
+ x0=25+col*720
17
+ draw.text((x0,108),'BEFORE | bottom -60 mm' if col==0 else 'AFTER | bottom 0 mm',font=font,fill='#ffd189' if col==0 else '#85dfc7')
18
+ for zoom in [False,True]:
19
+ y0=155 if not zoom else 715
20
+ w,h=675,520 if not zoom else 215
21
+ canvas=Image.new('RGB',(w,h),'#192733');d=ImageDraw.Draw(canvas)
22
+ scale=.151 if not zoom else .235
23
+ def project(v):
24
+ x,y,z=v;z-=3050
25
+ return (w/2+(x+.40*z)*scale, (h-50 if not zoom else h-70)-y*scale+.16*z*scale)
26
+ pixels=np.full((h,w,3),(25,39,51),dtype=np.uint8)
27
+ zbuffer=np.full((h,w),-np.inf)
28
+ for part in panel['parts']:
29
+ for tri in part['triangles']:
30
+ a,b,c=tri
31
+ u=[b[i]-a[i] for i in range(3)];v=[c[i]-a[i] for i in range(3)]
32
+ normal=[u[1]*v[2]-u[2]*v[1],u[2]*v[0]-u[0]*v[2],u[0]*v[1]-u[1]*v[0]]
33
+ norm=math.sqrt(sum(x*x for x in normal))
34
+ illumination=.58+.42*abs(sum(x*y for x,y in zip(normal,[.3,.4,.866]))/norm)
35
+ base=(51,184,176) if part['id']=='placedPortal' else (245,185,60)
36
+ color=tuple(int(x*illumination) for x in base)
37
+ poly=[project(v) for v in tri]
38
+ (ax,ay),(bx,by),(cx,cy)=poly
39
+ den=(by-cy)*(ax-cx)+(cx-bx)*(ay-cy)
40
+ if abs(den)<1e-9:continue
41
+ loX=max(0,math.floor(min(v[0] for v in poly)));hiX=min(w-1,math.ceil(max(v[0] for v in poly)))
42
+ loY=max(0,math.floor(min(v[1] for v in poly)));hiY=min(h-1,math.ceil(max(v[1] for v in poly)))
43
+ if loX>hiX or loY>hiY:continue
44
+ yy,xx=np.mgrid[loY:hiY+1,loX:hiX+1];xx=xx+.5;yy=yy+.5
45
+ wa=((by-cy)*(xx-cx)+(cx-bx)*(yy-cy))/den
46
+ wb=((cy-ay)*(xx-cx)+(ax-cx)*(yy-cy))/den;wc=1-wa-wb
47
+ depths=[v[2]-.40*v[0]+.16*v[1] for v in tri]
48
+ zz=wa*depths[0]+wb*depths[1]+wc*depths[2]
49
+ region=zbuffer[loY:hiY+1,loX:hiX+1]
50
+ mask=(wa>=-1e-8)&(wb>=-1e-8)&(wc>=-1e-8)&(zz>region)
51
+ region[mask]=zz[mask];pixels[loY:hiY+1,loX:hiX+1][mask]=color
52
+ canvas=Image.fromarray(pixels);d=ImageDraw.Draw(canvas)
53
+ # Reference line on front face plane; no opaque floor hiding the original protrusion.
54
+ a=project([-2000,0,3200]);b=project([2000,0,3200]);d.line([a,b],fill='#ff6b73',width=3)
55
+ d.text((12,h-28),'Y = 0 / floor reference',font=small,fill='#ff9ba1')
56
+ if zoom:d.text((12,10),'BOTTOM DETAIL',font=small,fill='white')
57
+ im.paste(canvas,(x0,y0))
58
+ draw.text((x0,682),'Top 2900 mm / opening top 2200 mm / lamp unchanged',font=small,fill='#a9bdcc')
59
+ draw.text((30,954),'Mesh checks: closed, oriented edges; 28 triangles per portal. Both inlet and outlet tested.',font=small,fill='#a9bdcc')
60
+ im.save(sys.argv[1])