@hatiolab/figure-model 0.1.76 → 0.1.77
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 +11 -0
- package/README.md +60 -138
- package/dist/index.d.ts +1 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -26
- package/dist/index.js.map +1 -1
- package/dist/v3-asset-types.d.ts +1 -2
- package/dist/v3-asset-types.d.ts.map +1 -1
- package/dist/v3-asset.js +1 -1
- package/dist/v3-asset.js.map +1 -1
- package/dist/v3-authoring-actions.d.ts +9 -12
- package/dist/v3-authoring-actions.d.ts.map +1 -1
- package/dist/v3-authoring-actions.js +4 -5
- package/dist/v3-authoring-actions.js.map +1 -1
- package/dist/v3-capabilities.js +4 -1
- package/dist/v3-capabilities.js.map +1 -1
- package/dist/v3-cost.d.ts.map +1 -1
- package/dist/v3-cost.js +3 -5
- package/dist/v3-cost.js.map +1 -1
- package/dist/v3-create.d.ts +1 -1
- package/dist/v3-create.d.ts.map +1 -1
- package/dist/v3-examples.js +1 -1
- package/dist/v3-gate.d.ts +7 -8
- package/dist/v3-gate.d.ts.map +1 -1
- package/dist/v3-gate.js +11 -14
- package/dist/v3-gate.js.map +1 -1
- package/dist/v3-graph.d.ts +1 -2
- package/dist/v3-graph.d.ts.map +1 -1
- package/dist/v3-graph.js +5 -7
- package/dist/v3-graph.js.map +1 -1
- package/dist/v3-instance-size.d.ts +3 -5
- package/dist/v3-instance-size.d.ts.map +1 -1
- package/dist/v3-instance-size.js +2 -4
- package/dist/v3-instance-size.js.map +1 -1
- package/dist/v3-kernel-version.d.ts +1 -1
- package/dist/v3-kernel-version.js +1 -1
- package/dist/v3-part-edit.d.ts +4 -5
- package/dist/v3-part-edit.d.ts.map +1 -1
- package/dist/v3-part-edit.js +2 -2
- package/dist/v3-part-edit.js.map +1 -1
- package/dist/v3-proposal.js +1 -1
- package/dist/v3-proposal.js.map +1 -1
- package/dist/v3-release-contract.js +1 -1
- package/dist/v3-release-contract.js.map +1 -1
- package/dist/v3-score.d.ts +4 -5
- package/dist/v3-score.d.ts.map +1 -1
- package/dist/v3-score.js +7 -8
- package/dist/v3-score.js.map +1 -1
- package/dist/v3-words.d.ts +87 -0
- package/dist/v3-words.d.ts.map +1 -0
- package/dist/v3-words.js +87 -0
- package/dist/v3-words.js.map +1 -0
- package/docs/assembly-constraints-v3.md +13 -23
- package/docs/v3-asset-persistence.md +4 -4
- package/docs/v3-common-kernel-experiment.md +1 -1
- package/docs/v3-core-semantics.md +3 -3
- package/docs/v3-cutover.md +5 -3
- package/docs/v3-design.md +13 -26
- package/docs/v3-editor-integration.md +2 -2
- package/docs/v3-full-conveyor-validation.md +3 -3
- package/docs/v3-layout-system.md +1 -1
- package/docs/v3-minimal-model.md +0 -1
- package/docs/v3-motion-contract.md +21 -56
- package/docs/v3-runtime-extraction.md +7 -7
- package/docs/v3-sample-validation-expanded.md +1 -1
- package/docs/v3-sample-validation.md +1 -1
- package/docs/v3-shape-dimension-contract.md +23 -57
- package/docs/v3-status.md +5 -5
- package/docs/v3-storage-integration.md +4 -4
- package/package.json +2 -20
- package/dist/blueprint-shape.d.ts +0 -10
- package/dist/blueprint-shape.d.ts.map +0 -1
- package/dist/blueprint-shape.js +0 -194
- package/dist/blueprint-shape.js.map +0 -1
- package/dist/blueprint.d.ts +0 -73
- package/dist/blueprint.d.ts.map +0 -1
- package/dist/blueprint.js +0 -388
- package/dist/blueprint.js.map +0 -1
- package/dist/cost-chart.d.ts +0 -35
- package/dist/cost-chart.d.ts.map +0 -1
- package/dist/cost-chart.js +0 -150
- package/dist/cost-chart.js.map +0 -1
- package/dist/cost.d.ts +0 -162
- package/dist/cost.d.ts.map +0 -1
- package/dist/cost.js +0 -194
- package/dist/cost.js.map +0 -1
- package/dist/gate.d.ts +0 -65
- package/dist/gate.d.ts.map +0 -1
- package/dist/gate.js +0 -284
- package/dist/gate.js.map +0 -1
- package/dist/grouping.d.ts +0 -121
- package/dist/grouping.d.ts.map +0 -1
- package/dist/grouping.js +0 -224
- package/dist/grouping.js.map +0 -1
- package/dist/keys.d.ts +0 -45
- package/dist/keys.d.ts.map +0 -1
- package/dist/keys.js +0 -84
- package/dist/keys.js.map +0 -1
- package/dist/origin.d.ts +0 -33
- package/dist/origin.d.ts.map +0 -1
- package/dist/origin.js +0 -46
- package/dist/origin.js.map +0 -1
- package/dist/release-contract.d.ts +0 -38
- package/dist/release-contract.d.ts.map +0 -1
- package/dist/release-contract.js +0 -246
- package/dist/release-contract.js.map +0 -1
- package/dist/sizing.d.ts +0 -231
- package/dist/sizing.d.ts.map +0 -1
- package/dist/sizing.js +0 -550
- package/dist/sizing.js.map +0 -1
- package/dist/types.d.ts +0 -1233
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -547
- package/dist/types.js.map +0 -1
- package/dist/v3-from-v2.d.ts +0 -203
- package/dist/v3-from-v2.d.ts.map +0 -1
- package/dist/v3-from-v2.js +0 -2053
- package/dist/v3-from-v2.js.map +0 -1
- package/dist/v3-mesh-compare.d.ts +0 -24
- package/dist/v3-mesh-compare.d.ts.map +0 -1
- package/dist/v3-mesh-compare.js +0 -55
- package/dist/v3-mesh-compare.js.map +0 -1
- package/dist/validate.d.ts +0 -7
- package/dist/validate.d.ts.map +0 -1
- package/dist/validate.js +0 -1119
- package/dist/validate.js.map +0 -1
- package/dist/visual-evidence.d.ts +0 -21
- package/dist/visual-evidence.d.ts.map +0 -1
- package/dist/visual-evidence.js +0 -52
- package/dist/visual-evidence.js.map +0 -1
- package/docs/design.md +0 -193
- package/docs/format-survey.md +0 -108
- package/docs/format.md +0 -704
- package/docs/sizing.md +0 -183
- package/docs/validation.md +0 -357
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"v3-release-contract.js","sourceRoot":"","sources":["../src/v3-release-contract.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"v3-release-contract.js","sourceRoot":"","sources":["../src/v3-release-contract.ts"],"names":[],"mappings":"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"}
|
package/dist/v3-score.d.ts
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import type { FigureGrade } from './
|
|
1
|
+
import type { FigureGrade } from './v3-words.ts';
|
|
2
2
|
import type { V3Asset, V3AssetGeometry } from './v3-asset-types.ts';
|
|
3
3
|
export type V3BudgetKey = 'groups' | 'triangles' | 'independent' | 'transparent' | 'parts';
|
|
4
4
|
/** Every budget, in the order a screen draws them. */
|
|
5
5
|
export declare const V3_BUDGET_KEYS: readonly V3BudgetKey[];
|
|
6
6
|
/**
|
|
7
|
-
* How many parts the figure is authored with: one per authored part, a repeat once however many copies it makes
|
|
8
|
-
* counted its `parts` the same way. The number the detail level's limit (`PART_LIMIT`) is held against.
|
|
7
|
+
* How many parts the figure is authored with: one per authored part, a repeat once however many copies it makes. The number the detail level's limit (`PART_LIMIT`) is held against.
|
|
9
8
|
*/
|
|
10
9
|
export declare function v3PartCountOf(asset: V3Asset): number;
|
|
11
10
|
/** The detail level's part budget, or nothing when the figure declares no level. */
|
|
@@ -30,7 +29,7 @@ export interface V3Score {
|
|
|
30
29
|
tightest: V3BudgetUse;
|
|
31
30
|
budgets: V3BudgetUse[];
|
|
32
31
|
}
|
|
33
|
-
/**
|
|
32
|
+
/** The grade bounds. A screen draws its scale from this list, so the two cannot disagree. */
|
|
34
33
|
export declare const V3_GRADE_SCALE: readonly (readonly [FigureGrade, number])[];
|
|
35
34
|
export declare function v3GradeOf(ratio: number): FigureGrade;
|
|
36
35
|
/** What one instance may draw so that `LIMITS.screenInstances` of them fit on one screen. */
|
|
@@ -41,7 +40,7 @@ export declare const V3_PER_INSTANCE: {
|
|
|
41
40
|
/** The key a body's material is shared by: token, preset, transparency and glow. */
|
|
42
41
|
export declare function v3MaterialKeyOf(body: V3AssetGeometry): string;
|
|
43
42
|
/**
|
|
44
|
-
* Drawn bodies that move with a state input
|
|
43
|
+
* Drawn bodies that move with a state input. A body counts when the value that places it
|
|
45
44
|
* depends on a state input (`dependence`, contract §2), which is what makes it carry its own transform frame to frame.
|
|
46
45
|
* A visibility flag is not a placement, so a lamp that only switches on does not count.
|
|
47
46
|
*/
|
package/dist/v3-score.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"v3-score.d.ts","sourceRoot":"","sources":["../src/v3-score.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"v3-score.d.ts","sourceRoot":"","sources":["../src/v3-score.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAKhD,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAEnE,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,WAAW,GAAG,aAAa,GAAG,aAAa,GAAG,OAAO,CAAA;AAE1F,sDAAsD;AACtD,eAAO,MAAM,cAAc,EAAE,SAAS,WAAW,EAAmE,CAAA;AAEpH;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEpD;AAED,oFAAoF;AACpF,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG;IAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAGlH;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,WAAW,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,mHAAmH;IACnH,KAAK,EAAE,MAAM,CAAA;IACb,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,OAAO;IACtB,uDAAuD;IACvD,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,WAAW,CAAA;IAClB,sFAAsF;IACtF,QAAQ,EAAE,WAAW,CAAA;IACrB,OAAO,EAAE,WAAW,EAAE,CAAA;CACvB;AAED,6FAA6F;AAC7F,eAAO,MAAM,cAAc,EAAE,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,EAIrE,CAAA;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAGpD;AAED,6FAA6F;AAC7F,eAAO,MAAM,eAAe;;;CAGlB,CAAA;AAEV,oFAAoF;AACpF,wBAAgB,eAAe,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,CAI7D;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,eAAe,EAAE,GAAG,MAAM,CAQ/F;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CA0B7D"}
|
package/dist/v3-score.js
CHANGED
|
@@ -13,12 +13,12 @@
|
|
|
13
13
|
* There is no fixed draw-call limit. The old one (`LIMITS.materialGroups`, 3) meant material-slot combinations and went
|
|
14
14
|
* stale once draw calls were counted as they are; a fixed number would go stale again as figures grow. The declared rule
|
|
15
15
|
* limits still count: bodies that move on their own (`LIMITS.independentParts`) and transparent materials
|
|
16
|
-
* (`LIMITS.transparentMaterials`)
|
|
16
|
+
* (`LIMITS.transparentMaterials`).
|
|
17
17
|
*
|
|
18
|
-
* The bounds
|
|
18
|
+
* The bounds: A up to half of a budget used, B up to three quarters, C up to all of it, D over.
|
|
19
19
|
* The tightest budget decides — it is where to start.
|
|
20
20
|
*/
|
|
21
|
-
import { LIMITS, PART_LIMIT } from "./
|
|
21
|
+
import { LIMITS, PART_LIMIT } from "./v3-words.js";
|
|
22
22
|
import { compileV3Asset } from "./v3-asset.js";
|
|
23
23
|
import { compileV3Document } from "./v3-document.js";
|
|
24
24
|
import { v3WritersOf } from "./v3-gate.js";
|
|
@@ -26,8 +26,7 @@ import { v3TrianglesOf } from "./v3-cost.js";
|
|
|
26
26
|
/** Every budget, in the order a screen draws them. */
|
|
27
27
|
export const V3_BUDGET_KEYS = ['groups', 'triangles', 'independent', 'transparent', 'parts'];
|
|
28
28
|
/**
|
|
29
|
-
* How many parts the figure is authored with: one per authored part, a repeat once however many copies it makes
|
|
30
|
-
* counted its `parts` the same way. The number the detail level's limit (`PART_LIMIT`) is held against.
|
|
29
|
+
* How many parts the figure is authored with: one per authored part, a repeat once however many copies it makes. The number the detail level's limit (`PART_LIMIT`) is held against.
|
|
31
30
|
*/
|
|
32
31
|
export function v3PartCountOf(asset) {
|
|
33
32
|
return asset.appearance.length;
|
|
@@ -38,7 +37,7 @@ export function v3PartBudgetOf(asset) {
|
|
|
38
37
|
return undefined;
|
|
39
38
|
return { level: asset.detailLevel, used: v3PartCountOf(asset), limit: PART_LIMIT[asset.detailLevel] };
|
|
40
39
|
}
|
|
41
|
-
/**
|
|
40
|
+
/** The grade bounds. A screen draws its scale from this list, so the two cannot disagree. */
|
|
42
41
|
export const V3_GRADE_SCALE = [
|
|
43
42
|
['A', 0.5],
|
|
44
43
|
['B', 0.75],
|
|
@@ -62,7 +61,7 @@ export function v3MaterialKeyOf(body) {
|
|
|
62
61
|
return `${m.token}|${m.preset ?? 'default'}|${m.transparent ? 't' : 'o'}|${on}`;
|
|
63
62
|
}
|
|
64
63
|
/**
|
|
65
|
-
* Drawn bodies that move with a state input
|
|
64
|
+
* Drawn bodies that move with a state input. A body counts when the value that places it
|
|
66
65
|
* depends on a state input (`dependence`, contract §2), which is what makes it carry its own transform frame to frame.
|
|
67
66
|
* A visibility flag is not a placement, so a lamp that only switches on does not count.
|
|
68
67
|
*/
|
|
@@ -94,7 +93,7 @@ export function v3ScoreOf(asset) {
|
|
|
94
93
|
budget('triangles', triangles, V3_PER_INSTANCE.triangles),
|
|
95
94
|
budget('independent', independent, LIMITS.independentParts),
|
|
96
95
|
budget('transparent', transparent, LIMITS.transparentMaterials),
|
|
97
|
-
/*
|
|
96
|
+
/* The detail level's part budget, when the figure declares a level. */
|
|
98
97
|
...(asset.detailLevel ? [budget('parts', v3PartCountOf(asset), PART_LIMIT[asset.detailLevel])] : [])
|
|
99
98
|
];
|
|
100
99
|
let tightest = budgets[0];
|
package/dist/v3-score.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"v3-score.js","sourceRoot":"","sources":["../src/v3-score.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"v3-score.js","sourceRoot":"","sources":["../src/v3-score.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
export declare const AXES: readonly ["x", "y", "z"];
|
|
2
|
+
export type Axis = (typeof AXES)[number];
|
|
3
|
+
export interface Vec3 {
|
|
4
|
+
x: number;
|
|
5
|
+
y: number;
|
|
6
|
+
z: number;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* The capabilities a figure may declare -- **only the ones a scene can actually assemble** (ADR-0051 ④).
|
|
10
|
+
*
|
|
11
|
+
* Capacity it has places
|
|
12
|
+
* Holdable it carries and draws what it holds
|
|
13
|
+
* Transferable it reserves a place and takes things over -- needs `Capacity` to find the place
|
|
14
|
+
* FlowNode a node of a flow; includes the three above
|
|
15
|
+
*
|
|
16
|
+
* A name with metadata in the scene but no mixin to assemble (`PlacementSurface`, `CarrierLine`) is not here: declaring
|
|
17
|
+
* it would promise behaviour nothing provides.
|
|
18
|
+
*/
|
|
19
|
+
export declare const FIGURE_CAPABILITIES: readonly ["Capacity", "Holdable", "Transferable", "FlowNode"];
|
|
20
|
+
export type FigureCapability = (typeof FIGURE_CAPABILITIES)[number];
|
|
21
|
+
/**
|
|
22
|
+
* Capabilities that cannot stand alone -- a name → one of these must be declared with it. `Transferable` leaves finding
|
|
23
|
+
* the place to `Capacity`; declared alone, the scene throws when it assembles the class, after the figure is released.
|
|
24
|
+
*/
|
|
25
|
+
export declare const CAPABILITY_NEEDS: Readonly<Record<string, readonly FigureCapability[]>>;
|
|
26
|
+
/** Material presets, the same set as things-scene's `threed/material-3d.ts`. */
|
|
27
|
+
export declare const MATERIAL_PRESETS: readonly ["default", "metal", "glass", "plastic", "wood", "ceramic", "rubber"];
|
|
28
|
+
export type MaterialPreset = (typeof MATERIAL_PRESETS)[number];
|
|
29
|
+
/**
|
|
30
|
+
* How many copies one repeated part may expand to. Every copy is a draw call, so a row stretched far enough would grow
|
|
31
|
+
* without bound; past this the copies are too small to count. The renderer holds the same number.
|
|
32
|
+
*/
|
|
33
|
+
export declare const REPEAT_LIMIT = 100;
|
|
34
|
+
/**
|
|
35
|
+
* The detail a figure is authored to:
|
|
36
|
+
*
|
|
37
|
+
* S simple a sign, a post
|
|
38
|
+
* M ordinary most equipment
|
|
39
|
+
* L detailed the large equipment a scene is about
|
|
40
|
+
*
|
|
41
|
+
* The level sets the part limit, and the maturity check reads whether the figure was made to it.
|
|
42
|
+
*/
|
|
43
|
+
export declare const DETAIL_LEVELS: readonly ["S", "M", "L"];
|
|
44
|
+
export type DetailLevel = (typeof DETAIL_LEVELS)[number];
|
|
45
|
+
/** The part limit of each detail level. */
|
|
46
|
+
export declare const PART_LIMIT: Record<DetailLevel, number>;
|
|
47
|
+
/**
|
|
48
|
+
* Faces set against each other are exactly 0 apart; a floating-point remainder counts as touching. One tolerance for
|
|
49
|
+
* every contact the gate measures, so no two checks disagree on whether a face touches.
|
|
50
|
+
*/
|
|
51
|
+
export declare const SKIN = 0.5;
|
|
52
|
+
export type FigureGrade = 'A' | 'B' | 'C' | 'D';
|
|
53
|
+
/**
|
|
54
|
+
* The limits that hold performance (ADR-0051 and its 09-19 rulings). What one screen pays for is **the draw groups of
|
|
55
|
+
* every figure it shows**, which breaks 60 fps near 4,000 (measured 2026-09-18, Apple M5).
|
|
56
|
+
*/
|
|
57
|
+
export declare const LIMITS: {
|
|
58
|
+
/** Distinct materials: the palette's ceiling, for legibility; unrelated to draw calls (09-19 ruling 3). */
|
|
59
|
+
readonly distinctMaterials: 3;
|
|
60
|
+
/** Draw groups one screen shows before 60 fps breaks -- measured. */
|
|
61
|
+
readonly groupsOnScreen: 4000;
|
|
62
|
+
/** Triangles on one screen. **Not measured yet** -- the design target. */
|
|
63
|
+
readonly trianglesOnScreen: 500000;
|
|
64
|
+
/**
|
|
65
|
+
* How many of the same figure one screen must hold -- the V3 grade's target (chief architect, 2026-09-24). A figure of
|
|
66
|
+
* 12 moving parts and 12 bodies (24 groups) runs 166 on one screen at 60 fps; one that fits that many is within the
|
|
67
|
+
* limit (C), twice as many is A.
|
|
68
|
+
*/
|
|
69
|
+
readonly screenInstances: 166;
|
|
70
|
+
/** Parts that move on their own: each carries its own transform and so its own draw group (ADR-0051 ③). Measured. */
|
|
71
|
+
readonly independentParts: 12;
|
|
72
|
+
/** Transparent materials: sorting is expensive. */
|
|
73
|
+
readonly transparentMaterials: 1;
|
|
74
|
+
/** Surfaces outside the palette (patterns, gradients): one, for the place that really needs it. */
|
|
75
|
+
readonly surfaceTextures: 1;
|
|
76
|
+
/** The fewest segments a round part may have. */
|
|
77
|
+
readonly minSegments: 3;
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* The segment counts a round part may take. Kept narrow so that the unit surfaces are shared: each count is one stored
|
|
81
|
+
* surface. A ladder whose deviation from the circle roughly halves each step, up to 48 -- past which the difference is
|
|
82
|
+
* under a pixel even where the modeller draws a part large.
|
|
83
|
+
*/
|
|
84
|
+
export declare const SEGMENT_PRESETS: readonly number[];
|
|
85
|
+
/** The design inputs that stand for the figure's size, in mm. */
|
|
86
|
+
export declare const V3_SIZE_INPUTS: Readonly<Record<Axis, string>>;
|
|
87
|
+
//# sourceMappingURL=v3-words.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v3-words.d.ts","sourceRoot":"","sources":["../src/v3-words.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,IAAI,0BAA2B,CAAA;AAC5C,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM,CAAC,CAAA;AAExC,MAAM,WAAW,IAAI;IACnB,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,mBAAmB,+DAAgE,CAAA;AAChG,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAA;AAEnE;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAC,CAEjF,CAAA;AAEF,gFAAgF;AAChF,eAAO,MAAM,gBAAgB,gFAAiF,CAAA;AAC9G,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAA;AAE9D;;;GAGG;AACH,eAAO,MAAM,YAAY,MAAM,CAAA;AAE/B;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa,0BAA2B,CAAA;AACrD,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAA;AAExD,2CAA2C;AAC3C,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAyB,CAAA;AAE5E;;;GAGG;AACH,eAAO,MAAM,IAAI,MAAM,CAAA;AAEvB,MAAM,MAAM,WAAW,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;AAE/C;;;GAGG;AACH,eAAO,MAAM,MAAM;IACjB,2GAA2G;;IAE3G,qEAAqE;;IAErE,0EAA0E;;IAE1E;;;;OAIG;;IAEH,qHAAqH;;IAErH,mDAAmD;;IAEnD,mGAAmG;;IAEnG,iDAAiD;;CAEzC,CAAA;AAEV;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,SAAS,MAAM,EAA4B,CAAA;AAEzE,iEAAiE;AACjE,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAA4D,CAAA"}
|
package/dist/v3-words.js
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright © HatioLab Inc. All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
/*
|
|
5
|
+
* The figure's shared words: axes, the capability names a scene can assemble, the detail levels and their part limits,
|
|
6
|
+
* the round-part segment presets, the contact tolerance and the performance limits. The kernel, the gate, the score and
|
|
7
|
+
* the authoring commands all read them from here.
|
|
8
|
+
*/
|
|
9
|
+
export const AXES = ['x', 'y', 'z'];
|
|
10
|
+
/**
|
|
11
|
+
* The capabilities a figure may declare -- **only the ones a scene can actually assemble** (ADR-0051 ④).
|
|
12
|
+
*
|
|
13
|
+
* Capacity it has places
|
|
14
|
+
* Holdable it carries and draws what it holds
|
|
15
|
+
* Transferable it reserves a place and takes things over -- needs `Capacity` to find the place
|
|
16
|
+
* FlowNode a node of a flow; includes the three above
|
|
17
|
+
*
|
|
18
|
+
* A name with metadata in the scene but no mixin to assemble (`PlacementSurface`, `CarrierLine`) is not here: declaring
|
|
19
|
+
* it would promise behaviour nothing provides.
|
|
20
|
+
*/
|
|
21
|
+
export const FIGURE_CAPABILITIES = ['Capacity', 'Holdable', 'Transferable', 'FlowNode'];
|
|
22
|
+
/**
|
|
23
|
+
* Capabilities that cannot stand alone -- a name → one of these must be declared with it. `Transferable` leaves finding
|
|
24
|
+
* the place to `Capacity`; declared alone, the scene throws when it assembles the class, after the figure is released.
|
|
25
|
+
*/
|
|
26
|
+
export const CAPABILITY_NEEDS = Object.freeze({
|
|
27
|
+
Transferable: ['Capacity', 'FlowNode']
|
|
28
|
+
});
|
|
29
|
+
/** Material presets, the same set as things-scene's `threed/material-3d.ts`. */
|
|
30
|
+
export const MATERIAL_PRESETS = ['default', 'metal', 'glass', 'plastic', 'wood', 'ceramic', 'rubber'];
|
|
31
|
+
/**
|
|
32
|
+
* How many copies one repeated part may expand to. Every copy is a draw call, so a row stretched far enough would grow
|
|
33
|
+
* without bound; past this the copies are too small to count. The renderer holds the same number.
|
|
34
|
+
*/
|
|
35
|
+
export const REPEAT_LIMIT = 100;
|
|
36
|
+
/**
|
|
37
|
+
* The detail a figure is authored to:
|
|
38
|
+
*
|
|
39
|
+
* S simple a sign, a post
|
|
40
|
+
* M ordinary most equipment
|
|
41
|
+
* L detailed the large equipment a scene is about
|
|
42
|
+
*
|
|
43
|
+
* The level sets the part limit, and the maturity check reads whether the figure was made to it.
|
|
44
|
+
*/
|
|
45
|
+
export const DETAIL_LEVELS = ['S', 'M', 'L'];
|
|
46
|
+
/** The part limit of each detail level. */
|
|
47
|
+
export const PART_LIMIT = { S: 3, M: 8, L: 20 };
|
|
48
|
+
/**
|
|
49
|
+
* Faces set against each other are exactly 0 apart; a floating-point remainder counts as touching. One tolerance for
|
|
50
|
+
* every contact the gate measures, so no two checks disagree on whether a face touches.
|
|
51
|
+
*/
|
|
52
|
+
export const SKIN = 0.5;
|
|
53
|
+
/**
|
|
54
|
+
* The limits that hold performance (ADR-0051 and its 09-19 rulings). What one screen pays for is **the draw groups of
|
|
55
|
+
* every figure it shows**, which breaks 60 fps near 4,000 (measured 2026-09-18, Apple M5).
|
|
56
|
+
*/
|
|
57
|
+
export const LIMITS = {
|
|
58
|
+
/** Distinct materials: the palette's ceiling, for legibility; unrelated to draw calls (09-19 ruling 3). */
|
|
59
|
+
distinctMaterials: 3,
|
|
60
|
+
/** Draw groups one screen shows before 60 fps breaks -- measured. */
|
|
61
|
+
groupsOnScreen: 4000,
|
|
62
|
+
/** Triangles on one screen. **Not measured yet** -- the design target. */
|
|
63
|
+
trianglesOnScreen: 500_000,
|
|
64
|
+
/**
|
|
65
|
+
* How many of the same figure one screen must hold -- the V3 grade's target (chief architect, 2026-09-24). A figure of
|
|
66
|
+
* 12 moving parts and 12 bodies (24 groups) runs 166 on one screen at 60 fps; one that fits that many is within the
|
|
67
|
+
* limit (C), twice as many is A.
|
|
68
|
+
*/
|
|
69
|
+
screenInstances: 166,
|
|
70
|
+
/** Parts that move on their own: each carries its own transform and so its own draw group (ADR-0051 ③). Measured. */
|
|
71
|
+
independentParts: 12,
|
|
72
|
+
/** Transparent materials: sorting is expensive. */
|
|
73
|
+
transparentMaterials: 1,
|
|
74
|
+
/** Surfaces outside the palette (patterns, gradients): one, for the place that really needs it. */
|
|
75
|
+
surfaceTextures: 1,
|
|
76
|
+
/** The fewest segments a round part may have. */
|
|
77
|
+
minSegments: 3
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* The segment counts a round part may take. Kept narrow so that the unit surfaces are shared: each count is one stored
|
|
81
|
+
* surface. A ladder whose deviation from the circle roughly halves each step, up to 48 -- past which the difference is
|
|
82
|
+
* under a pixel even where the modeller draws a part large.
|
|
83
|
+
*/
|
|
84
|
+
export const SEGMENT_PRESETS = [8, 12, 16, 24, 32, 48];
|
|
85
|
+
/** The design inputs that stand for the figure's size, in mm. */
|
|
86
|
+
export const V3_SIZE_INPUTS = Object.freeze({ x: 'size.x', y: 'size.y', z: 'size.z' });
|
|
87
|
+
//# sourceMappingURL=v3-words.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v3-words.js","sourceRoot":"","sources":["../src/v3-words.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;GAIG;AAEH,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU,CAAA;AAS5C;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,CAAU,CAAA;AAGhG;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAA0D,MAAM,CAAC,MAAM,CAAC;IACnG,YAAY,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC;CACvC,CAAC,CAAA;AAEF,gFAAgF;AAChF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAU,CAAA;AAG9G;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,CAAA;AAE/B;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU,CAAA;AAGrD,2CAA2C;AAC3C,MAAM,CAAC,MAAM,UAAU,GAAgC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAA;AAE5E;;;GAGG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,CAAA;AAIvB;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,2GAA2G;IAC3G,iBAAiB,EAAE,CAAC;IACpB,qEAAqE;IACrE,cAAc,EAAE,IAAI;IACpB,0EAA0E;IAC1E,iBAAiB,EAAE,OAAO;IAC1B;;;;OAIG;IACH,eAAe,EAAE,GAAG;IACpB,qHAAqH;IACrH,gBAAgB,EAAE,EAAE;IACpB,mDAAmD;IACnD,oBAAoB,EAAE,CAAC;IACvB,mGAAmG;IACnG,eAAe,EAAE,CAAC;IAClB,iDAAiD;IACjD,WAAW,EAAE,CAAC;CACN,CAAA;AAEV;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAsB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;AAEzE,iEAAiE;AACjE,MAAM,CAAC,MAAM,cAAc,GAAmC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAA"}
|
|
@@ -6,18 +6,16 @@
|
|
|
6
6
|
|
|
7
7
|
## 결정 요약
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
있어도 portal·gate·lamp 중 무엇을 어떤 관계로 복구해야 하는지는 알 수 없다.
|
|
9
|
+
독립 부품의 기하·재질·축별 크기 반응만으로는 부품들이 **어떤 조립 의도로 붙어 있는지**를
|
|
10
|
+
표현하지 못한다. 기준 상자 면에만 매달리는 배치와 관절 운동 계층만으로는 게이트가 갈라짐을
|
|
11
|
+
측정할 수 있어도 portal·gate·lamp 중 무엇을 어떤 관계로 복구해야 하는지는 알 수 없다.
|
|
13
12
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
독립 부품 해석은 과거 데이터 읽기용 이행 경로일 뿐, 새 모델의 품질 기준은 아니다.
|
|
13
|
+
이 초안은 `assemblies`를 정본 계약으로 도입한다. 조립체는 기준 부품, 멤버, 그리고 검증·수정
|
|
14
|
+
가능한 관계 제약을 선언한다.
|
|
17
15
|
|
|
18
16
|
## 사용자 약속
|
|
19
17
|
|
|
20
|
-
저작자는
|
|
18
|
+
저작자는 기준 상자 면을 조합해서 장비를 맞추지 않는다. 모델러는 다음처럼 의도를 입력한다.
|
|
21
19
|
|
|
22
20
|
```
|
|
23
21
|
portal-in 에 붙이기
|
|
@@ -61,11 +59,11 @@ type Face = 'min-x' | 'max-x' | 'min-y' | 'max-y' | 'min-z' | 'max-z'
|
|
|
61
59
|
## 해석 순서
|
|
62
60
|
|
|
63
61
|
```text
|
|
64
|
-
|
|
62
|
+
Figure v3 원본
|
|
65
63
|
→ 부품의 기본 transform·sizing 계산
|
|
66
64
|
→ assembly root의 최종 상자 계산
|
|
67
65
|
→ assembly constraint를 위상 순서로 적용
|
|
68
|
-
→ 최종
|
|
66
|
+
→ 최종 scene transform
|
|
69
67
|
→ 제약 검사 + 1×·2× 크기 반응 검사
|
|
70
68
|
```
|
|
71
69
|
|
|
@@ -83,9 +81,8 @@ rest pose와 인스턴스 크기 반응을 담당한다. 두 역할을 섞지
|
|
|
83
81
|
| `assembly-cycle` | 관계 계산 순환 | 저장 차단 |
|
|
84
82
|
| `assembly-constraint-broken` | 기준 크기에서 면·상대치수 불일치 | 발행 차단 |
|
|
85
83
|
| `assembly-scales-apart` | 확대 시 선언한 관계가 깨짐 | 발행 차단 |
|
|
86
|
-
| `assembly-ambiguous` | 이행된 부품이 물리적으로 닿지만 관계가 선언되지 않음 | 전환 검토 |
|
|
87
84
|
|
|
88
|
-
자동 수정은
|
|
85
|
+
자동 수정은 배치 후보를 무작위 조합하지 않는다.
|
|
89
86
|
|
|
90
87
|
1. 깨진 제약과 root를 찾는다.
|
|
91
88
|
2. 제약 해석기로 멤버의 transform/반응 규칙을 다시 계산한다.
|
|
@@ -109,20 +106,14 @@ rest pose와 인스턴스 크기 반응을 담당한다. 두 역할을 섞지
|
|
|
109
106
|
}
|
|
110
107
|
```
|
|
111
108
|
|
|
112
|
-
이 계약은 “lamp
|
|
109
|
+
이 계약은 “lamp를 기준 상자 윗면에 붙여 본다”가 아니라 “lamp가 portal 상단에서 60mm를
|
|
113
110
|
유지한다”를 보존한다. 따라서 기준 상자의 비율 변화에도 수정을 설명하고 검증할 수 있다.
|
|
114
111
|
|
|
115
|
-
##
|
|
112
|
+
## 원칙
|
|
116
113
|
|
|
117
|
-
1. `version: 3`은 새 저작·AI·발행의 기준 계약이다. 새 모델은 기준 상자
|
|
114
|
+
1. `version: 3`은 새 저작·AI·발행의 기준 계약이다. 새 모델은 기준 상자 배치만으로
|
|
118
115
|
조립 의도를 표현하지 않는다.
|
|
119
|
-
2.
|
|
120
|
-
근접·이름·기존 anchor를 근거로 조립 관계 후보를 만들고, 사용자가 의도를 확인한다.
|
|
121
|
-
3. 확인된 v3 전환 결과가 기존 동작보다 조립·확대 품질이 낮으면 전환을 거절한다. “깨지지
|
|
122
|
-
않음”보다 “의도를 더 정확히 보존함”이 기준이다.
|
|
123
|
-
4. 과거에 이미 발행된 판은 당시 원본과 해석기를 함께 보관해 재현성을 유지한다. 이는 v2
|
|
124
|
-
설계를 계속 발전시키겠다는 뜻이 아니라 과거 화면을 거짓으로 바꾸지 않기 위한 기록 보존이다.
|
|
125
|
-
5. 새 Figure와 새 AI 후보는 v3 제약이 없는 상태로 저장되지 않는다. 독립 부품뿐인 단순
|
|
116
|
+
2. 새 Figure와 새 AI 후보는 v3 제약이 없는 상태로 저장되지 않는다. 독립 부품뿐인 단순
|
|
126
117
|
Figure는 빈 조립체 목록을 명시한다.
|
|
127
118
|
|
|
128
119
|
## 완료 기준
|
|
@@ -132,7 +123,6 @@ rest pose와 인스턴스 크기 반응을 담당한다. 두 역할을 섞지
|
|
|
132
123
|
- 의도적으로 독립인 port/slot은 조립체에 넣지 않아도 거짓 차단되지 않는다.
|
|
133
124
|
- AI가 새 Figure와 편집 후보 모두에서 유효한 assembly 제약을 생성한다.
|
|
134
125
|
- 게이트는 깨진 조립 제약에 대해 검증된 복합 초안 수정안을 제시한다.
|
|
135
|
-
- v2 전환 표본은 새 관계 계약 아래에서 기존보다 낮은 조립·확대 품질을 내지 않는다.
|
|
136
126
|
|
|
137
127
|
## 명시적 비목표
|
|
138
128
|
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
- [네 대표 모델 자산 생성 예제](prototypes/v3-asset-samples.mjs)
|
|
12
12
|
- [검증 테스트](prototypes/v3-asset.test.mjs)
|
|
13
13
|
|
|
14
|
-
버전은 `figure-v3-asset-1`이다. **정식 Figure V3 전체 포맷
|
|
14
|
+
버전은 `figure-v3-asset-1`이다. **정식 Figure V3 전체 포맷 완료를 뜻하지 않는다.**
|
|
15
15
|
|
|
16
16
|
## 저장 항목
|
|
17
17
|
|
|
@@ -42,7 +42,7 @@ appearance는 모든 `place@1`/`member@1`에 정확히 하나씩 필요하다.
|
|
|
42
42
|
|
|
43
43
|
원기둥 분할 수는 현재 지원 preset으로 명시 저장한다. 사용자에게 분할 수 직접 입력 UI를 추가하지 않았다. 다른 provider에 임의의 segments를 붙이는 것은 거부한다. 재질은 token/preset/transparent/emissive 범위를 지원하며 미지원 필드를 조용히 버리지 않고 거부한다.
|
|
44
44
|
|
|
45
|
-
부품에
|
|
45
|
+
부품에 붙이는 capability 메타데이터는 정본에 자리를 두지 않는다(2026-09-23). 자리만 남겨 두면 검증된 binding과 구별되지 않기 때문이다. `slot`을 `seat`/`grip`으로 자동 해석하지도 않는다. 이 의미를 V3로 가져오려면 검증되는 binding으로 다시 저작한다.
|
|
46
46
|
|
|
47
47
|
## 검증 결과
|
|
48
48
|
|
|
@@ -59,8 +59,8 @@ appearance는 모든 `place@1`/`member@1`에 정확히 하나씩 필요하다.
|
|
|
59
59
|
|
|
60
60
|
## 남은 제품화 범위
|
|
61
61
|
|
|
62
|
-
- 예제 생성기는 V3로 이미 재저작한 모델을 포장한다.
|
|
63
|
-
- 원본에 없는 기능을 복원했다고 주장하지 않는다. 기존 자산은 V3
|
|
62
|
+
- 예제 생성기는 V3로 이미 재저작한 모델을 포장한다. 범용 마이그레이터가 아니다.
|
|
63
|
+
- 원본에 없는 기능을 복원했다고 주장하지 않는다. 기존 자산은 V3로 재작성하며, 실제 데이터 교체 전에 대상과 복구본을 확인한다.
|
|
64
64
|
- 네 대표 모델을 넘는 provider/material 확장, 입력 라벨/저작 메타데이터 등은 정식 포맷에서 추가 정의해야 한다.
|
|
65
65
|
- 파일 시스템 원자적 교체·권한·DB revision 충돌·업로드/다운로드 API는 없다. 함수는 문자열을 반환하며 제품 저장소에 직접 쓰지 않는다.
|
|
66
66
|
- 실제 속성창·AI-dock·새 모델/다른 모델 전환·재접속은 통합 테스트가 남아 있다.
|
|
@@ -9,7 +9,7 @@ scalar 타입/참조 검증 단계이며 전체 의미론 구현과 구분한다
|
|
|
9
9
|
|
|
10
10
|
상태: **설계 검토 기준안. 출하 명세·구현 완료 아님.**
|
|
11
11
|
이 문서가 r1/r2의 설계 방향을 대체한다. 과거 실험은 근거와 반례로 보존한다.
|
|
12
|
-
|
|
12
|
+
기존 property 명칭, 현재 실험 코드의 편의는 설계의 상위 제약이 아니다.
|
|
13
13
|
|
|
14
14
|
## 1. 제품이 표현하는 것
|
|
15
15
|
|
|
@@ -271,7 +271,7 @@ AI의 자유 텍스트가 geometry나 외부 바인딩을 직접 바꾸지 않
|
|
|
271
271
|
정점 수, draw call, resolve/compile 시간, 캐시 적중과 메모리를 실제 규모에서 측정한다.
|
|
272
272
|
수치 없는 '고성능 보장'은 하지 않는다.
|
|
273
273
|
|
|
274
|
-
제품은 V3 단일 실행
|
|
274
|
+
제품은 V3 단일 실행 체계를 쓴다. 기존 자산은 V3 재작성으로 교체한다.
|
|
275
275
|
복구용 원본 보관은 데이터 교체의 안전 절차이지 모델 설계 제약이 아니다.
|
|
276
276
|
현재 좌표를 고정한 변환과 반응형 의도를 복원한 재작성을 같은 성공으로 보고하지 않는다.
|
|
277
277
|
|
|
@@ -285,7 +285,7 @@ AI의 자유 텍스트가 geometry나 외부 바인딩을 직접 바꾸지 않
|
|
|
285
285
|
3. floor 경계, 오차 전파, quaternion/축 규약, solver 후보 수치 정책.
|
|
286
286
|
4. 전체 모델 4종 이상을 proxy 없이 작성하고 실제 렌더러에서 크기×상태×topology 비교.
|
|
287
287
|
5. 나머지 16종의 표현성 검증 및 미지원 의도 목록. 통과를 위해 명세를 샘플 이름으로 분기하지 않음.
|
|
288
|
-
6. 모델러·AI 공통 편집, 삭제 참조, undo/save/reopen,
|
|
288
|
+
6. 모델러·AI 공통 편집, 삭제 참조, undo/save/reopen, 다수 배치 성능 검증.
|
|
289
289
|
|
|
290
290
|
**다음 구현은 이 의미론의 subset임을 명시하고 시작한다.** 현재 커널의 무차원 숫자,
|
|
291
291
|
Y축 cylinder, feature의 방향 없는 point, 단순 floor(span/pitch)는 이 문서의 완전한 구현이 아니다.
|
package/docs/v3-cutover.md
CHANGED
|
@@ -2,13 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
> 현재 구현·검증·제품 연결 상태는 [V3 통합 현황](v3-status.md)을 따른다. 본문의 단계별 연구/검증 기록은 제품 전체 완료 선언이 아니다.
|
|
4
4
|
|
|
5
|
-
사용자 결정:
|
|
5
|
+
사용자 결정: 제품은 V3 하나를 쓴다. V3의 단순성·일관성·저작성·품질을 우선하며, 버전별 편집 경로는 두지 않는다.
|
|
6
6
|
|
|
7
|
-
제품 모델러·AI·저장·렌더러는 V3 하나를 기준으로
|
|
7
|
+
제품 모델러·AI·저장·렌더러는 V3 하나를 기준으로 한다. 기존 자산은 V3로 재작성한다. 기존 데이터의 파괴적 교체는 대상 확인과 복구본 확보 후 별도로 수행한다.
|
|
8
|
+
|
|
9
|
+
V2와 V1은 2026-09-26 코드와 명세에서 제거했다. ADR-0087의 전환은 제거로 마쳤다.
|
|
8
10
|
|
|
9
11
|
## 이번 변경
|
|
10
12
|
|
|
11
|
-
- figure-ui와 figure-service에 직전에 추가했던
|
|
13
|
+
- figure-ui와 figure-service에 직전에 추가했던 형식 버전 차단 전용 코드와 테스트를 제거했다.
|
|
12
14
|
- 형식 해석 실패 시 다른 자산 ID로 기존 모델을 저장하지 않도록 하는 일반적인 로드 오류 처리는 유지했다. 이는 호환 기능이 아니라 데이터 손실 방지다.
|
|
13
15
|
- `createV3Asset(name)`은 부품 없는 빈 자산을 만든다. 기본 상자는 자동 생성하지 않는다.
|
|
14
16
|
- `addV3Box(asset, request)`는 명시적 부품 추가 요청을 표준 V3 shape/rigid/place 노드와 9개 설계 입력(크기·위치·회전)으로 만든다. 별도의 레거시 parts 원본을 만들지 않는다.
|
package/docs/v3-design.md
CHANGED
|
@@ -23,25 +23,14 @@ v3의 핵심은 **치수에 따라 달라지는 3차원 배치 함수**다. 문
|
|
|
23
23
|
쓴다. 임의 CAD, 물리 시뮬레이션, 일반 비선형 제약 해결은 초기 범위 밖이다. 지원하지 않는
|
|
24
24
|
관계를 그럴듯한 결과로 대체하지 않고 지원 범위를 명시한다.
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
| `src/sizing.ts` | anchor는 Figure 기준 상자의 축에 대한 위치·크기 반응 | 부품의 개구부·부착 좌표계를 직접 참조하지 못한다 |
|
|
35
|
-
| `src/types.ts`, `src/grouping.ts`, `jointOriginPosition` | parent/joint와 부모를 따라 변하는 관절 원점은 이미 있다 | 관계가 전혀 없는 것이 아니라 크기 배치 관계가 부족하다 |
|
|
36
|
-
| `src/gate.ts: spansAt/meets/clumpsOf` | AABB의 연결 개수 증가를 검사 | 실제 접촉·개구부 맞춤·어떤 부품에 연결됐는지 보장하지 못한다 |
|
|
37
|
-
| `src/gate.ts: remedyFor` | 다른 덩어리의 느리게 커지는 부품을 골라 조언 | 실제 맞댄 면을 증명하지 않고 수정 방향을 단정할 수 있다 |
|
|
38
|
-
| `src/gate.ts: sizingReport` | 기본적으로 기준 크기와 7종 2배 검사 | 연속 치수 범위·축소·운동 상태의 증명이 아니다 |
|
|
39
|
-
| anchor 후보 탐색 | 제한된 수정 조합을 탐색 | 실패했다고 v2로 해결 불가능한 것은 아니다 |
|
|
40
|
-
| `src/grouping.ts`, things-scene `figure-real-object.ts` | 재질·운동 frame·크기 반응으로 병합/분리 | 관계 추가가 무료 성능을 보장하지 않는다 |
|
|
41
|
-
|
|
42
|
-
드라이룸에서 복합 수정안이 생성되지 않은 것은 관찰했다. 고정 revision의 원본을 확보해
|
|
43
|
-
원인과 모든 대안을 검증한 상태는 아니다. 앞서 탐색 실패를 곧바로 모델 표현력의 불가능성으로
|
|
44
|
-
설명한 것은 과도했다. v3 설계의 근거는 일반적인 조립 의도와 일관된 배치 계산의 필요성이다.
|
|
26
|
+
관계 없는 단독 상자도 정상 모델이며, 미완성 초안의 저장을 금지하지 않는다.
|
|
27
|
+
|
|
28
|
+
## 2. 설계의 근거
|
|
29
|
+
|
|
30
|
+
v3 설계의 근거는 일반적인 조립 의도와 일관된 배치 계산의 필요성이다. 배치는 기준 상자의 축만이
|
|
31
|
+
아니라 부품의 개구부·부착 좌표계를 직접 참조해야 한다. 검사는 상자의 연결 개수가 아니라 실제
|
|
32
|
+
접촉·맞춤을, 몇 가지 배율이 아니라 선언한 치수 범위·축소·운동 상태를 다뤄야 한다. 관계를
|
|
33
|
+
추가한다고 성능 이득이 보장되지는 않는다.
|
|
45
34
|
|
|
46
35
|
## 3. 형식적 문제 정의
|
|
47
36
|
|
|
@@ -195,7 +184,7 @@ geometry provider는 shape spec과 함께 해당 feature binding을 반환해야
|
|
|
195
184
|
compile:
|
|
196
185
|
schema/units/IDs → single writer check → resolve references
|
|
197
186
|
→ dependency DAG → cycle diagnostic → topological order
|
|
198
|
-
→ affine coefficients → domain obligations →
|
|
187
|
+
→ affine coefficients → domain obligations → Prepared
|
|
199
188
|
|
|
200
189
|
resolve(d):
|
|
201
190
|
check d∈D → evaluate dimensions/features/rest frames
|
|
@@ -317,7 +306,7 @@ inspectResolved(prepared, resolved, profile): Inspection
|
|
|
317
306
|
|
|
318
307
|
Prepared는 식/순서/컨테이너/feature binding/geometry spec/운동 구조를,
|
|
319
308
|
Resolved는 실제 크기/rigid frame/feature/slot/port를 반환한다.
|
|
320
|
-
source version,
|
|
309
|
+
source version, Prepared version, evaluator semantic version을 분리한다.
|
|
321
310
|
2D·3D는 같은 Resolved를 소비하고 관계 의미를 재구현하지 않는다.
|
|
322
311
|
|
|
323
312
|
compile은 자산 변경 시, layout은 치수 변경 시, pose는 상태 변경 시 처리한다.
|
|
@@ -339,7 +328,7 @@ driver는 실행 의미이므로 advisory로 무시할 수 없다. required/advi
|
|
|
339
328
|
|
|
340
329
|
| 상태 | 처리 |
|
|
341
330
|
| --- | --- |
|
|
342
|
-
| 불명 참조/순환/중복 writer | 실행 불가 진단, 작업 초안 보관 가능, 정상
|
|
331
|
+
| 불명 참조/순환/중복 writer | 실행 불가 진단, 작업 초안 보관 가능, 정상 자산으로 배포 불가 |
|
|
343
332
|
| domain 밖/음수 치수 | 해당 크기 사용 불가; 마지막 정상 표시라면 현재 결과가 아님을 명시 |
|
|
344
333
|
| required assertion 위반 | 선언한 지원 범위에서 발행 불가 |
|
|
345
334
|
| required assertion 미증명 | 위반 확정과 구분; 보장 정책/범위 조정 또는 추가 검증 필요 |
|
|
@@ -369,11 +358,9 @@ AI와 자동 수정은 typed edit API를 사용한다. 후보에 baseRevision/so
|
|
|
369
358
|
전역 차단 항목이 0이어야만 수정을 제공하는 조건은 폐기한다. 국소 해결과 남은 문제를 구분한다.
|
|
370
359
|
의미/외형을 훼손하며 검사만 통과한 후보를 안전하다고 표시하지 않는다.
|
|
371
360
|
|
|
372
|
-
## 16.
|
|
361
|
+
## 16. 식별자와 구현 단계
|
|
373
362
|
|
|
374
|
-
id는 불변, label은 표시 이름이다. 기존 name 기반 외부 참조는 자산
|
|
375
|
-
변환은 원본/hash 보존, v3 후보, 기계적 변환, 의도 선택, 미검증 진단을 반환한다.
|
|
376
|
-
v2의 잘못된 동작을 보존할 의무는 없다. 의도적으로 바뀐 외형은 승인된 차분으로 기록한다.
|
|
363
|
+
id는 불변, label은 표시 이름이다. 기존 name 기반 외부 참조는 자산 재작성 시 갱신한다.
|
|
377
364
|
초안 저장과 발행 조건을 분리한다. 미지원 consumer에 v3를 부분 해석해 보내지 않는다.
|
|
378
365
|
|
|
379
366
|
세부 구현 순서와 출하 조건은 [상위 레이아웃 계약 §12](v3-layout-system.md#12-출하-전-단계와-완료-기준)를 따른다.
|
|
@@ -45,9 +45,9 @@
|
|
|
45
45
|
|
|
46
46
|
## 제품 연결 시 주의점
|
|
47
47
|
|
|
48
|
-
현재 figure-ui의 `client/modeller/figure-source.ts`는 장면 파트를 저장용
|
|
48
|
+
현재 figure-ui의 `client/modeller/figure-source.ts`는 장면 파트를 저장용 이전 형식 source로 변환한다. `figure-inspector.ts`와 `figure-modeller-page.ts`의 update-part/update-draft 경로도 이전 형식의 draft/parts 중심이다. V3 graph를 이 경로의 `parts`로 가장해 전달하면 원본이 이중화된다.
|
|
49
49
|
|
|
50
|
-
제품 모델러·저장·AI·렌더러를 V3 단일 경로로 전환한다. 기존 자산은
|
|
50
|
+
제품 모델러·저장·AI·렌더러를 V3 단일 경로로 전환한다. 기존 자산은 V3로 재작성한다. 호환 분기는 만들지 않는다. 제품에서는 src에서 빌드한 공용 API를 사용한다.
|
|
51
51
|
|
|
52
52
|
## 아직 해결하지 않은 범위
|
|
53
53
|
|