@hatiolab/figure-model 0.1.76 → 0.1.78
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 +12 -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 +105 -0
- package/dist/v3-words.d.ts.map +1 -0
- package/dist/v3-words.js +107 -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,105 @@
|
|
|
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
|
+
/**
|
|
88
|
+
* The shape of a figure's `type` -- the name boards call it by: `SCREAMING_SNAKE_CASE` starting with a capital, 3 to 32
|
|
89
|
+
* characters. Capitals are the figure namespace; built-in scene components use lower-case kebab names, so a figure that
|
|
90
|
+
* follows this shape cannot share a name with one.
|
|
91
|
+
*/
|
|
92
|
+
export declare const TYPE_PATTERN: RegExp;
|
|
93
|
+
export declare const TYPE_LENGTH: {
|
|
94
|
+
readonly min: 3;
|
|
95
|
+
readonly max: 32;
|
|
96
|
+
};
|
|
97
|
+
/**
|
|
98
|
+
* The temporary type a figure carries before anyone names it. One rule for the code that makes it and the code that
|
|
99
|
+
* recognises it: the modeller makes it, the release gate and the AI tools recognise it. It passes `TYPE_PATTERN`
|
|
100
|
+
* (`FIGURE_MTU10FWR`), so the shape check alone would not catch it.
|
|
101
|
+
*/
|
|
102
|
+
export declare function placeholderType(now?: number): string;
|
|
103
|
+
/** Whether a type is the temporary name given before anyone names the figure. */
|
|
104
|
+
export declare function isPlaceholderType(type: string): boolean;
|
|
105
|
+
//# 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;AAEtH;;;;GAIG;AACH,eAAO,MAAM,YAAY,QAAkC,CAAA;AAC3D,eAAO,MAAM,WAAW;;;CAA+B,CAAA;AAEvD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,GAAG,GAAE,MAAmB,GAAG,MAAM,CAEhE;AAID,iFAAiF;AACjF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEvD"}
|
package/dist/v3-words.js
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
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
|
+
/**
|
|
88
|
+
* The shape of a figure's `type` -- the name boards call it by: `SCREAMING_SNAKE_CASE` starting with a capital, 3 to 32
|
|
89
|
+
* characters. Capitals are the figure namespace; built-in scene components use lower-case kebab names, so a figure that
|
|
90
|
+
* follows this shape cannot share a name with one.
|
|
91
|
+
*/
|
|
92
|
+
export const TYPE_PATTERN = /^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$/;
|
|
93
|
+
export const TYPE_LENGTH = { min: 3, max: 32 };
|
|
94
|
+
/**
|
|
95
|
+
* The temporary type a figure carries before anyone names it. One rule for the code that makes it and the code that
|
|
96
|
+
* recognises it: the modeller makes it, the release gate and the AI tools recognise it. It passes `TYPE_PATTERN`
|
|
97
|
+
* (`FIGURE_MTU10FWR`), so the shape check alone would not catch it.
|
|
98
|
+
*/
|
|
99
|
+
export function placeholderType(now = Date.now()) {
|
|
100
|
+
return `FIGURE_${now.toString(36).toUpperCase()}`;
|
|
101
|
+
}
|
|
102
|
+
const PLACEHOLDER_TYPE = /^FIGURE_[0-9A-Z]{8}$/;
|
|
103
|
+
/** Whether a type is the temporary name given before anyone names the figure. */
|
|
104
|
+
export function isPlaceholderType(type) {
|
|
105
|
+
return PLACEHOLDER_TYPE.test(type);
|
|
106
|
+
}
|
|
107
|
+
//# 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;AAEtH;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,+BAA+B,CAAA;AAC3D,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAW,CAAA;AAEvD;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,MAAc,IAAI,CAAC,GAAG,EAAE;IACtD,OAAO,UAAU,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE,CAAA;AACnD,CAAC;AAED,MAAM,gBAAgB,GAAG,sBAAsB,CAAA;AAE/C,iFAAiF;AACjF,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,OAAO,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACpC,CAAC"}
|
|
@@ -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 원본을 만들지 않는다.
|