Skip to content

Commit 7dec821

Browse files
author
DavidQ
committed
BUILD_PR_SHARED_EXTRACTION_50_VECTOR_NUMBER_NORMALIZATION_TO_SHARED_MATH
Extract vector-lane numeric normalization helpers into src/shared/math/numberNormalization.js and rewire vector imports without widening scope.
1 parent 4942469 commit 7dec821

10 files changed

Lines changed: 153 additions & 26 deletions

docs/dev/CODEX_COMMANDS.md

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,15 @@
1-
MODEL: GPT-5.4-codex
1+
MODEL: GPT-5.4
22
REASONING: high
3+
34
COMMAND:
4-
Execute docs/pr/BUILD_PR_SHARED_EXTRACTION_49_VECTOR_TO_FINITE_NUMBER_ROUND_BATCH.md exactly.
5-
Edit only these files:
6-
- tools/shared/vector/vectorGeometryMath.js
7-
- tools/shared/vector/vectorAssetContract.js
8-
Fail fast with no code edits if the consumer replacement cannot be completed inside those exact two files.
9-
Package the delta output to <project folder>/tmp/BUILD_PR_SHARED_EXTRACTION_49_VECTOR_TO_FINITE_NUMBER_ROUND_BATCH_delta.zip
5+
Create BUILD_PR_SHARED_EXTRACTION_50_VECTOR_NUMBER_NORMALIZATION_TO_SHARED_MATH exactly as written in `docs/pr/BUILD_PR_SHARED_EXTRACTION_50_VECTOR_NUMBER_NORMALIZATION_TO_SHARED_MATH.md`.
6+
7+
Hard constraints:
8+
- Touch exactly 3 code files:
9+
- create `src/shared/math/numberNormalization.js`
10+
- modify `tools/shared/vector/vectorGeometryMath.js`
11+
- modify `tools/shared/vector/vectorAssetContract.js`
12+
- Do not touch any other file.
13+
- Preserve exact behavior from PR 49 for `toFiniteNumber` and `roundNumber`.
14+
- Do not broaden scope.
15+
- Package output to `<project folder>/tmp/BUILD_PR_SHARED_EXTRACTION_50_VECTOR_NUMBER_NORMALIZATION_TO_SHARED_MATH_delta.zip`

docs/dev/COMMIT_COMMENT.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
1-
BUILD PR: centralize vector toFiniteNumber/roundNumber helpers with exact two-file consumer replacement.
1+
BUILD_PR_SHARED_EXTRACTION_50_VECTOR_NUMBER_NORMALIZATION_TO_SHARED_MATH
2+
3+
Extract vector-lane numeric normalization helpers into src/shared/math/numberNormalization.js and rewire vector imports without widening scope.

docs/dev/NEXT_COMMAND.txt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,6 @@
1-
Next: after 49, continue the next exact duplicate cluster only.
1+
After this BUILD is complete, report:
2+
1. the exact files changed
3+
2. whether `vectorGeometryMath.js` no longer defines local `toFiniteNumber` / `roundNumber`
4+
3. whether `vectorAssetContract.js` now imports numeric helpers from `src/shared/math/numberNormalization.js`
5+
4. whether only the 3 targeted code files changed
6+
Do not start another BUILD automatically.
Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,8 @@
1-
Rebuilt BUILD 49 as an execution-grade two-file batch with explicit dead-code prevention and fail-fast rules.
1+
Purpose: extract PR 49 vector numeric helpers into canonical shared math home.
2+
3+
Exact code scope:
4+
- create src/shared/math/numberNormalization.js
5+
- modify tools/shared/vector/vectorGeometryMath.js
6+
- modify tools/shared/vector/vectorAssetContract.js
7+
8+
No other files may be changed.

docs/dev/reports/file_tree.txt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
1-
docs/pr/BUILD_PR_SHARED_EXTRACTION_49_VECTOR_TO_FINITE_NUMBER_ROUND_BATCH.md
1+
src/shared/math/numberNormalization.js
2+
tools/shared/vector/vectorGeometryMath.js
3+
tools/shared/vector/vectorAssetContract.js
4+
docs/pr/BUILD_PR_SHARED_EXTRACTION_50_VECTOR_NUMBER_NORMALIZATION_TO_SHARED_MATH.md
25
docs/dev/codex_commands.md
36
docs/dev/commit_comment.txt
47
docs/dev/next_command.txt
8+
docs/dev/reports/file_tree.txt
59
docs/dev/reports/change_summary.txt
610
docs/dev/reports/validation_checklist.txt
7-
docs/dev/reports/file_tree.txt
Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,8 @@
1-
Exact file list present; exact helper list present; consumer replacement required; dead-code blocked; one PR purpose only.
1+
[ ] Single PR purpose only
2+
[ ] Exact 3 code files only
3+
[ ] No repo scan / no scope expansion
4+
[ ] numberNormalization.js exports only toFiniteNumber and roundNumber
5+
[ ] vectorGeometryMath.js removes local helper definitions
6+
[ ] vectorAssetContract.js imports numeric helpers from shared math
7+
[ ] Behavior preserved from PR 49
8+
[ ] Output zip path set under <project folder>/tmp/
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
# BUILD PR — VECTOR NUMBER NORMALIZATION TO SHARED MATH
2+
3+
## PR Purpose
4+
Move the numeric normalization helpers introduced in PR 49 out of the vector-domain file and into the canonical shared math home.
5+
6+
## Why This BUILD Exists
7+
PR 49 introduced:
8+
- `toFiniteNumber(value, fallback = NaN)`
9+
- `roundNumber(value)`
10+
11+
inside:
12+
- `tools/shared/vector/vectorGeometryMath.js`
13+
14+
Per current repo rule, number-related helpers belong under:
15+
- `src/shared/math/numberNormalization.js`
16+
17+
This BUILD performs only that extraction for the exact PR 49 vector lane.
18+
19+
## Exact Target Files
20+
Create:
21+
- `src/shared/math/numberNormalization.js`
22+
23+
Modify:
24+
- `tools/shared/vector/vectorGeometryMath.js`
25+
- `tools/shared/vector/vectorAssetContract.js`
26+
27+
## Exact Required Changes
28+
29+
### 1) Create shared math module
30+
Create:
31+
- `src/shared/math/numberNormalization.js`
32+
33+
Export exactly:
34+
- `toFiniteNumber(value, fallback = NaN)`
35+
- `roundNumber(value)`
36+
37+
Behavior must match PR 49 exactly:
38+
- `toFiniteNumber`:
39+
- converts with `Number(value)`
40+
- returns numeric value when finite
41+
- otherwise returns `fallback`
42+
- `roundNumber`:
43+
- returns input unchanged when not finite
44+
- otherwise returns `Number(value.toFixed(6))`
45+
46+
Do not add any other helpers in this PR.
47+
48+
### 2) Update vectorGeometryMath.js
49+
In:
50+
- `tools/shared/vector/vectorGeometryMath.js`
51+
52+
Remove the local implementations of:
53+
- `toFiniteNumber`
54+
- `roundNumber`
55+
56+
Import those helpers from:
57+
- `../../../src/shared/math/numberNormalization.js`
58+
59+
Keep all existing vector geometry exports and behavior unchanged otherwise.
60+
61+
### 3) Update vectorAssetContract.js
62+
In:
63+
- `tools/shared/vector/vectorAssetContract.js`
64+
65+
Stop importing `toFiniteNumber` and `roundNumber` from `./vectorGeometryMath.js`.
66+
67+
Import:
68+
- `parseSvgPathData` from `./vectorGeometryMath.js`
69+
- `toFiniteNumber` and `roundNumber` from `../../../src/shared/math/numberNormalization.js`
70+
71+
No other logic changes.
72+
73+
## Non-Goals
74+
- Do not touch any files outside the three exact target files above.
75+
- Do not scan the repo for other number helpers.
76+
- Do not merge with `asFiniteNumber`, `normalizeNumber`, `sanitizeFiniteNumber`, or any other helper.
77+
- Do not touch `samples/shared/worldGameStateSystem.js`.
78+
- Do not touch `src/advanced/state/transitions.js`.
79+
- Do not change fallback defaults.
80+
- Do not rename exports.
81+
- Do not perform broader cleanup.
82+
83+
## Acceptance Criteria
84+
- `src/shared/math/numberNormalization.js` exists and exports only the two exact functions above.
85+
- `tools/shared/vector/vectorGeometryMath.js` no longer defines local `toFiniteNumber` or `roundNumber`.
86+
- `tools/shared/vector/vectorAssetContract.js` imports numeric helpers from shared math, not vectorGeometryMath.
87+
- Runtime behavior of the vector lane remains unchanged.
88+
- No dead imports.
89+
- No unused local helper definitions remain in the touched files.
90+
91+
## Validation
92+
- Verify the three exact target files are the only code files changed.
93+
- Verify import paths resolve correctly.
94+
- Verify no local `toFiniteNumber` or `roundNumber` definitions remain in:
95+
- `tools/shared/vector/vectorGeometryMath.js`
96+
- `tools/shared/vector/vectorAssetContract.js`
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
export function toFiniteNumber(value, fallback = NaN) {
2+
const numeric = Number(value);
3+
return Number.isFinite(numeric) ? numeric : fallback;
4+
}
5+
6+
export function roundNumber(value) {
7+
if (!Number.isFinite(value)) {
8+
return value;
9+
}
10+
return Number(value.toFixed(6));
11+
}

tools/shared/vector/vectorAssetContract.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import { parseSvgPathData, toFiniteNumber, roundNumber } from "./vectorGeometryMath.js";
1+
import { parseSvgPathData } from "./vectorGeometryMath.js";
2+
import { toFiniteNumber, roundNumber } from "../../../src/shared/math/numberNormalization.js";
23
import { cloneJson } from "../../../src/shared/utils/jsonUtils.js";
34

45
export const VECTOR_ASSET_FORMAT = "toolbox.vector.asset";

tools/shared/vector/vectorGeometryMath.js

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,6 @@
1+
import { toFiniteNumber, roundNumber } from "../../../src/shared/math/numberNormalization.js";
12
const PATH_TOKEN_PATTERN = /[AaCcHhLlMmQqSsTtVvZz]|-?\d*\.?\d+(?:e[-+]?\d+)?/g;
23

3-
export function toFiniteNumber(value, fallback = NaN) {
4-
const numeric = Number(value);
5-
return Number.isFinite(numeric) ? numeric : fallback;
6-
}
7-
8-
export function roundNumber(value) {
9-
if (!Number.isFinite(value)) {
10-
return value;
11-
}
12-
return Number(value.toFixed(6));
13-
}
14-
154
export function createPoint(x = 0, y = 0) {
165
return {
176
x: roundNumber(toFiniteNumber(x, 0)),

0 commit comments

Comments
 (0)