@bldrs-ai/conway 1.568.1543 → 1.570.1544

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 (26) hide show
  1. package/compiled/examples/browser-bundled.cjs +27 -2
  2. package/compiled/examples/cli-bundled.cjs +28 -2
  3. package/compiled/examples/cli-step-bundled.cjs +28 -2
  4. package/compiled/examples/validator-bundled.cjs +27 -2
  5. package/compiled/src/AP214E3_2010/ap214_command_line_main.js +1 -0
  6. package/compiled/src/AP214E3_2010/ap214_regression_main.js +35 -7
  7. package/compiled/src/compat/web-ifc/ifc_api_proxy_ap214.d.ts.map +1 -1
  8. package/compiled/src/compat/web-ifc/ifc_api_proxy_ap214.js +1 -0
  9. package/compiled/src/compat/web-ifc/ifc_api_proxy_ifc.d.ts.map +1 -1
  10. package/compiled/src/compat/web-ifc/ifc_api_proxy_ifc.js +1 -0
  11. package/compiled/src/ifc/ifc_command_line_main.js +1 -0
  12. package/compiled/src/ifc/ifc_regression_main.js +77 -7
  13. package/compiled/src/loaders/conway_model_loader.d.ts.map +1 -1
  14. package/compiled/src/loaders/conway_model_loader.js +8 -0
  15. package/compiled/src/scripts/bless_perf_snapshot.test.js +44 -1
  16. package/compiled/src/scripts/perf_ab_compare.test.js +22 -7
  17. package/compiled/src/scripts/perf_csv_quoting.test.js +46 -8
  18. package/compiled/src/scripts/perf_writer_and_wallclock.test.d.ts +2 -0
  19. package/compiled/src/scripts/perf_writer_and_wallclock.test.d.ts.map +1 -0
  20. package/compiled/src/scripts/perf_writer_and_wallclock.test.js +665 -0
  21. package/compiled/src/statistics/statistics.d.ts +22 -0
  22. package/compiled/src/statistics/statistics.d.ts.map +1 -1
  23. package/compiled/src/statistics/statistics.js +26 -0
  24. package/compiled/src/version/version.js +1 -1
  25. package/compiled/tsconfig.tsbuildinfo +1 -1
  26. package/package.json +1 -1
@@ -30,7 +30,7 @@ var import_node_process = require("node:process");
30
30
  var readline = __toESM(require("node:readline"), 1);
31
31
 
32
32
  // compiled/src/version/version.js
33
- var versionString = "Conway v1.568.1543";
33
+ var versionString = "Conway v1.570.1544";
34
34
 
35
35
  // compiled/dependencies/conway-geom/interface/conway_geometry.js
36
36
  var wasmType = "";
@@ -121,6 +121,31 @@ var Statistics = class {
121
121
  setGeometryTime(value) {
122
122
  this.geometryTime = value;
123
123
  }
124
+ /**
125
+ * Which pipeline measured this row (conway#555).
126
+ *
127
+ * The perf columns are not all comparable across pipelines: the IFC
128
+ * regression child runs with `RegressionCaptureState.memoization = FULL`,
129
+ * which keeps CSG temporaries in the map `calculateGeometrySize()` sums,
130
+ * so its `Geometry Memory` reads ~30% above the CLI's for the same model
131
+ * (MB-Khaya, 22.3 vs 16.8 MB). Retention has a matching caveat — the
132
+ * loader brings up a `ConwayGeometry` per load and the regression children
133
+ * do not. Naming the writer is what lets a reader, and
134
+ * `scripts/gen_delta_csv.cjs`, tell those apart instead of differencing
135
+ * across them.
136
+ *
137
+ * @return {string | undefined} - the writer label, or undefined
138
+ */
139
+ getWriter() {
140
+ return this.writer;
141
+ }
142
+ /**
143
+ *
144
+ * @param value - a stable pipeline identifier, e.g. `ifc-cli`
145
+ */
146
+ setWriter(value) {
147
+ this.writer = value;
148
+ }
124
149
  /**
125
150
  *
126
151
  * @return {number | undefined} - total execution time or undefined
@@ -361,7 +386,7 @@ var Statistics = class {
361
386
  const retained = `Retained RSS Delta: ${formatRetained(this.retainedRss)}, Retained Heap-Used Delta: ${formatRetained(this.retainedHeapUsed)}, Retained External Delta: ${formatRetained(this.retainedExternal)}, `;
362
387
  const breakdown = this.formatGeometryTypeCounts();
363
388
  const geometryTypes = breakdown !== void 0 ? `, Geometry Types: ${breakdown}` : "";
364
- return `[${dateString}]: Load Status: ${this.loadStatus}, Project Name: ${this.projectName}, Version: ${versionStr}, Conway Version: ${conwayVersionNumber}-${wasmType}, Parse Time: ${this.parseTime} ms, Geometry Time: ${this.geometryTime} ms, Total Time: ${this.totalTime} ms, Geometry Memory: ${this.geometryMemory?.toFixed(3)} MB, WASM Heap High-Water: ${this.wasmHeapPeak?.toFixed(3)} MB, ` + retained + products + `Memory Statistics: ${this.memoryStatistics}, Preprocessor Version: ${this.preprocessorVersion}, Originating System: ${this.originatingSystem}` + geometryTypes;
389
+ return `[${dateString}]: Load Status: ${this.loadStatus}, Writer: ${this.writer ?? "N/A"}, Project Name: ${this.projectName}, Version: ${versionStr}, Conway Version: ${conwayVersionNumber}-${wasmType}, Parse Time: ${this.parseTime} ms, Geometry Time: ${this.geometryTime} ms, Total Time: ${this.totalTime} ms, Geometry Memory: ${this.geometryMemory?.toFixed(3)} MB, WASM Heap High-Water: ${this.wasmHeapPeak?.toFixed(3)} MB, ` + retained + products + `Memory Statistics: ${this.memoryStatistics}, Preprocessor Version: ${this.preprocessorVersion}, Originating System: ${this.originatingSystem}` + geometryTypes;
365
390
  }
366
391
  };
367
392
 
@@ -14965,7 +14965,7 @@ ${t5.join("\n")}` : "";
14965
14965
  var import_process = require("process");
14966
14966
 
14967
14967
  // compiled/src/version/version.js
14968
- var versionString = "Conway v1.568.1543";
14968
+ var versionString = "Conway v1.570.1544";
14969
14969
 
14970
14970
  // compiled/dependencies/conway-geom/interface/conway_geometry.js
14971
14971
  function pThreadsAllowed() {
@@ -15795,6 +15795,31 @@ var Statistics = class {
15795
15795
  setGeometryTime(value) {
15796
15796
  this.geometryTime = value;
15797
15797
  }
15798
+ /**
15799
+ * Which pipeline measured this row (conway#555).
15800
+ *
15801
+ * The perf columns are not all comparable across pipelines: the IFC
15802
+ * regression child runs with `RegressionCaptureState.memoization = FULL`,
15803
+ * which keeps CSG temporaries in the map `calculateGeometrySize()` sums,
15804
+ * so its `Geometry Memory` reads ~30% above the CLI's for the same model
15805
+ * (MB-Khaya, 22.3 vs 16.8 MB). Retention has a matching caveat — the
15806
+ * loader brings up a `ConwayGeometry` per load and the regression children
15807
+ * do not. Naming the writer is what lets a reader, and
15808
+ * `scripts/gen_delta_csv.cjs`, tell those apart instead of differencing
15809
+ * across them.
15810
+ *
15811
+ * @return {string | undefined} - the writer label, or undefined
15812
+ */
15813
+ getWriter() {
15814
+ return this.writer;
15815
+ }
15816
+ /**
15817
+ *
15818
+ * @param value - a stable pipeline identifier, e.g. `ifc-cli`
15819
+ */
15820
+ setWriter(value) {
15821
+ this.writer = value;
15822
+ }
15798
15823
  /**
15799
15824
  *
15800
15825
  * @return {number | undefined} - total execution time or undefined
@@ -16035,7 +16060,7 @@ var Statistics = class {
16035
16060
  const retained = `Retained RSS Delta: ${formatRetained(this.retainedRss)}, Retained Heap-Used Delta: ${formatRetained(this.retainedHeapUsed)}, Retained External Delta: ${formatRetained(this.retainedExternal)}, `;
16036
16061
  const breakdown = this.formatGeometryTypeCounts();
16037
16062
  const geometryTypes = breakdown !== void 0 ? `, Geometry Types: ${breakdown}` : "";
16038
- return `[${dateString}]: Load Status: ${this.loadStatus}, Project Name: ${this.projectName}, Version: ${versionStr}, Conway Version: ${conwayVersionNumber}-${wasmType}, Parse Time: ${this.parseTime} ms, Geometry Time: ${this.geometryTime} ms, Total Time: ${this.totalTime} ms, Geometry Memory: ${this.geometryMemory?.toFixed(3)} MB, WASM Heap High-Water: ${this.wasmHeapPeak?.toFixed(3)} MB, ` + retained + products + `Memory Statistics: ${this.memoryStatistics}, Preprocessor Version: ${this.preprocessorVersion}, Originating System: ${this.originatingSystem}` + geometryTypes;
16063
+ return `[${dateString}]: Load Status: ${this.loadStatus}, Writer: ${this.writer ?? "N/A"}, Project Name: ${this.projectName}, Version: ${versionStr}, Conway Version: ${conwayVersionNumber}-${wasmType}, Parse Time: ${this.parseTime} ms, Geometry Time: ${this.geometryTime} ms, Total Time: ${this.totalTime} ms, Geometry Memory: ${this.geometryMemory?.toFixed(3)} MB, WASM Heap High-Water: ${this.wasmHeapPeak?.toFixed(3)} MB, ` + retained + products + `Memory Statistics: ${this.memoryStatistics}, Preprocessor Version: ${this.preprocessorVersion}, Originating System: ${this.originatingSystem}` + geometryTypes;
16039
16064
  }
16040
16065
  };
16041
16066
 
@@ -95731,6 +95756,7 @@ function doWork() {
95731
95756
  if (statistics !== void 0) {
95732
95757
  const dataParseTime = parseDataTimeEnd - parseDataTimeStart;
95733
95758
  statistics.setLoadStatus("OK");
95759
+ statistics.setWriter("ifc-cli");
95734
95760
  statistics.setParseTime(dataParseTime);
95735
95761
  statistics.setTotalTime(allTime);
95736
95762
  let FILE_NAME = stepHeader.headers.get("FILE_NAME");
@@ -15943,7 +15943,7 @@ var ParsingBuffer = class {
15943
15943
  };
15944
15944
 
15945
15945
  // compiled/src/version/version.js
15946
- var versionString = "Conway v1.568.1543";
15946
+ var versionString = "Conway v1.570.1544";
15947
15947
 
15948
15948
  // compiled/dependencies/conway-geom/interface/conway_geometry.js
15949
15949
  function pThreadsAllowed() {
@@ -16773,6 +16773,31 @@ var Statistics = class {
16773
16773
  setGeometryTime(value) {
16774
16774
  this.geometryTime = value;
16775
16775
  }
16776
+ /**
16777
+ * Which pipeline measured this row (conway#555).
16778
+ *
16779
+ * The perf columns are not all comparable across pipelines: the IFC
16780
+ * regression child runs with `RegressionCaptureState.memoization = FULL`,
16781
+ * which keeps CSG temporaries in the map `calculateGeometrySize()` sums,
16782
+ * so its `Geometry Memory` reads ~30% above the CLI's for the same model
16783
+ * (MB-Khaya, 22.3 vs 16.8 MB). Retention has a matching caveat — the
16784
+ * loader brings up a `ConwayGeometry` per load and the regression children
16785
+ * do not. Naming the writer is what lets a reader, and
16786
+ * `scripts/gen_delta_csv.cjs`, tell those apart instead of differencing
16787
+ * across them.
16788
+ *
16789
+ * @return {string | undefined} - the writer label, or undefined
16790
+ */
16791
+ getWriter() {
16792
+ return this.writer;
16793
+ }
16794
+ /**
16795
+ *
16796
+ * @param value - a stable pipeline identifier, e.g. `ifc-cli`
16797
+ */
16798
+ setWriter(value) {
16799
+ this.writer = value;
16800
+ }
16776
16801
  /**
16777
16802
  *
16778
16803
  * @return {number | undefined} - total execution time or undefined
@@ -17013,7 +17038,7 @@ var Statistics = class {
17013
17038
  const retained = `Retained RSS Delta: ${formatRetained(this.retainedRss)}, Retained Heap-Used Delta: ${formatRetained(this.retainedHeapUsed)}, Retained External Delta: ${formatRetained(this.retainedExternal)}, `;
17014
17039
  const breakdown = this.formatGeometryTypeCounts();
17015
17040
  const geometryTypes = breakdown !== void 0 ? `, Geometry Types: ${breakdown}` : "";
17016
- return `[${dateString}]: Load Status: ${this.loadStatus}, Project Name: ${this.projectName}, Version: ${versionStr}, Conway Version: ${conwayVersionNumber}-${wasmType}, Parse Time: ${this.parseTime} ms, Geometry Time: ${this.geometryTime} ms, Total Time: ${this.totalTime} ms, Geometry Memory: ${this.geometryMemory?.toFixed(3)} MB, WASM Heap High-Water: ${this.wasmHeapPeak?.toFixed(3)} MB, ` + retained + products + `Memory Statistics: ${this.memoryStatistics}, Preprocessor Version: ${this.preprocessorVersion}, Originating System: ${this.originatingSystem}` + geometryTypes;
17041
+ return `[${dateString}]: Load Status: ${this.loadStatus}, Writer: ${this.writer ?? "N/A"}, Project Name: ${this.projectName}, Version: ${versionStr}, Conway Version: ${conwayVersionNumber}-${wasmType}, Parse Time: ${this.parseTime} ms, Geometry Time: ${this.geometryTime} ms, Total Time: ${this.totalTime} ms, Geometry Memory: ${this.geometryMemory?.toFixed(3)} MB, WASM Heap High-Water: ${this.wasmHeapPeak?.toFixed(3)} MB, ` + retained + products + `Memory Statistics: ${this.memoryStatistics}, Preprocessor Version: ${this.preprocessorVersion}, Originating System: ${this.originatingSystem}` + geometryTypes;
17017
17042
  }
17018
17043
  };
17019
17044
 
@@ -86105,6 +86130,7 @@ async function doWork() {
86105
86130
  if (statistics !== void 0) {
86106
86131
  const dataParseTime = parseDataTimeEnd - parseDataTimeStart;
86107
86132
  statistics.setLoadStatus("OK");
86133
+ statistics.setWriter("ap214-cli");
86108
86134
  statistics.setParseTime(dataParseTime);
86109
86135
  statistics.setTotalTime(allTime);
86110
86136
  let FILE_NAME = stepHeader.headers.get("FILE_NAME");
@@ -944,7 +944,7 @@ var EntityTypesIfcCount = 909;
944
944
  var entity_types_ifc_gen_default = EntityTypesIfc;
945
945
 
946
946
  // compiled/src/version/version.js
947
- var versionString = "Conway v1.568.1543";
947
+ var versionString = "Conway v1.570.1544";
948
948
 
949
949
  // compiled/dependencies/conway-geom/interface/conway_geometry.js
950
950
  var wasmType = "";
@@ -1035,6 +1035,31 @@ var Statistics = class {
1035
1035
  setGeometryTime(value) {
1036
1036
  this.geometryTime = value;
1037
1037
  }
1038
+ /**
1039
+ * Which pipeline measured this row (conway#555).
1040
+ *
1041
+ * The perf columns are not all comparable across pipelines: the IFC
1042
+ * regression child runs with `RegressionCaptureState.memoization = FULL`,
1043
+ * which keeps CSG temporaries in the map `calculateGeometrySize()` sums,
1044
+ * so its `Geometry Memory` reads ~30% above the CLI's for the same model
1045
+ * (MB-Khaya, 22.3 vs 16.8 MB). Retention has a matching caveat — the
1046
+ * loader brings up a `ConwayGeometry` per load and the regression children
1047
+ * do not. Naming the writer is what lets a reader, and
1048
+ * `scripts/gen_delta_csv.cjs`, tell those apart instead of differencing
1049
+ * across them.
1050
+ *
1051
+ * @return {string | undefined} - the writer label, or undefined
1052
+ */
1053
+ getWriter() {
1054
+ return this.writer;
1055
+ }
1056
+ /**
1057
+ *
1058
+ * @param value - a stable pipeline identifier, e.g. `ifc-cli`
1059
+ */
1060
+ setWriter(value) {
1061
+ this.writer = value;
1062
+ }
1038
1063
  /**
1039
1064
  *
1040
1065
  * @return {number | undefined} - total execution time or undefined
@@ -1275,7 +1300,7 @@ var Statistics = class {
1275
1300
  const retained = `Retained RSS Delta: ${formatRetained(this.retainedRss)}, Retained Heap-Used Delta: ${formatRetained(this.retainedHeapUsed)}, Retained External Delta: ${formatRetained(this.retainedExternal)}, `;
1276
1301
  const breakdown = this.formatGeometryTypeCounts();
1277
1302
  const geometryTypes = breakdown !== void 0 ? `, Geometry Types: ${breakdown}` : "";
1278
- return `[${dateString}]: Load Status: ${this.loadStatus}, Project Name: ${this.projectName}, Version: ${versionStr}, Conway Version: ${conwayVersionNumber}-${wasmType}, Parse Time: ${this.parseTime} ms, Geometry Time: ${this.geometryTime} ms, Total Time: ${this.totalTime} ms, Geometry Memory: ${this.geometryMemory?.toFixed(3)} MB, WASM Heap High-Water: ${this.wasmHeapPeak?.toFixed(3)} MB, ` + retained + products + `Memory Statistics: ${this.memoryStatistics}, Preprocessor Version: ${this.preprocessorVersion}, Originating System: ${this.originatingSystem}` + geometryTypes;
1303
+ return `[${dateString}]: Load Status: ${this.loadStatus}, Writer: ${this.writer ?? "N/A"}, Project Name: ${this.projectName}, Version: ${versionStr}, Conway Version: ${conwayVersionNumber}-${wasmType}, Parse Time: ${this.parseTime} ms, Geometry Time: ${this.geometryTime} ms, Total Time: ${this.totalTime} ms, Geometry Memory: ${this.geometryMemory?.toFixed(3)} MB, WASM Heap High-Water: ${this.wasmHeapPeak?.toFixed(3)} MB, ` + retained + products + `Memory Statistics: ${this.memoryStatistics}, Preprocessor Version: ${this.preprocessorVersion}, Originating System: ${this.originatingSystem}` + geometryTypes;
1279
1304
  }
1280
1305
  };
1281
1306
 
@@ -217,6 +217,7 @@ async function doWork() {
217
217
  if (statistics !== void 0) {
218
218
  const dataParseTime = parseDataTimeEnd - parseDataTimeStart;
219
219
  statistics.setLoadStatus("OK");
220
+ statistics.setWriter("ap214-cli");
220
221
  statistics.setParseTime(dataParseTime);
221
222
  statistics.setTotalTime(allTime);
222
223
  let FILE_NAME = stepHeader.headers.get("FILE_NAME");
@@ -45,6 +45,18 @@ const KB_PER_MB = 1024;
45
45
  const PERF_MB_PRECISION = 2;
46
46
  /** Placeholder for a column this row has no measurement for. */
47
47
  const UNMEASURED = "N/A";
48
+ /**
49
+ * This child's value for the `writer` column (conway#555).
50
+ *
51
+ * Distinct from the IFC child's for a reason that is easy to miss: the two
52
+ * run as separate processes and `RegressionCaptureState.memoization` is a
53
+ * process-global, so the IFC child's `FULL` — which keeps CSG temporaries in
54
+ * the map `calculateGeometrySize()` sums — does not apply here. A mixed
55
+ * IFC/STEP corpus therefore aggregates two capture modes into one
56
+ * `geometryMemoryMb` column, which is precisely what this column exists to
57
+ * disclose.
58
+ */
59
+ const PERF_WRITER = "ap214-regression";
48
60
  /**
49
61
  * Capture the end-of-load memory figures for a perf row.
50
62
  *
@@ -80,17 +92,23 @@ function capturePerfMemory(geometryMemoryBytes, wasmHeapBytes) {
80
92
  * was not exposed to settle with. No `retainedWasmHeapMb` — the wasm heap is
81
93
  * grow-only, so over one cycle it could only restate `peakWasmHeapMb`.
82
94
  *
95
+ * `writer` names the pipeline (conway#555) and `totalTimeMs` is the load's
96
+ * wall clock rather than the sum of the two stage columns (conway#562), with
97
+ * that sum kept as `parsePlusGeometryMs`. Both changes are described in full
98
+ * on the IFC child's copy.
99
+ *
83
100
  * @param perfPath Path to write the CSV to. Empty string disables.
84
101
  * @param stepFile Source STEP file path (basename used as the row key).
85
102
  * @param status OK or FAIL.
86
103
  * @param parseTimeMs Parse stage duration in ms.
87
104
  * @param geometryTimeMs Geometry extraction duration in ms.
88
- * @param totalTimeMs Sum of parse + geometry in ms.
105
+ * @param totalTimeMs The load's wall clock — file read through teardown.
106
+ * @param parsePlusGeometryMs The sum of the two stage columns above.
89
107
  * @param memory The row's memory figures, captured at the points in the load
90
108
  * each is defined at. Defaults to capturing the end-of-load instants here,
91
109
  * which is what the FAIL paths want — they have nothing else to report.
92
110
  */
93
- async function writePerfCsvIfRequested(perfPath, stepFile, status, parseTimeMs, geometryTimeMs, totalTimeMs, memory = capturePerfMemory()) {
111
+ async function writePerfCsvIfRequested(perfPath, stepFile, status, parseTimeMs, geometryTimeMs, totalTimeMs, parsePlusGeometryMs, memory = capturePerfMemory()) {
94
112
  if (perfPath.length === 0) {
95
113
  return;
96
114
  }
@@ -116,10 +134,12 @@ async function writePerfCsvIfRequested(perfPath, stepFile, status, parseTimeMs,
116
134
  const retainedExternalMb = retained !== void 0 ?
117
135
  retained.externalMb.toFixed(PERF_MB_PRECISION) : UNMEASURED;
118
136
  const fileName = csvSafeString(path.basename(stepFile));
119
- const header = "file,status,parseTimeMs,geometryTimeMs,totalTimeMs,geometryMemoryMb," +
137
+ const header = "file,status,writer,parseTimeMs,geometryTimeMs,totalTimeMs," +
138
+ "parsePlusGeometryMs,geometryMemoryMb," +
120
139
  "peakWasmHeapMb,rssMb,peakRssMb,heapUsedMb,heapTotalMb,externalMb," +
121
140
  "arrayBuffersMb,retainedRssMb,retainedHeapUsedMb,retainedExternalMb\n";
122
- const row = `${fileName},${status},${parseTimeMs},${geometryTimeMs},${totalTimeMs},` +
141
+ const row = `${fileName},${status},${PERF_WRITER},${parseTimeMs},${geometryTimeMs},` +
142
+ `${totalTimeMs},${parsePlusGeometryMs},` +
123
143
  `${geometryMemoryMb},${peakWasmHeapMb},${rssMb},${peakRssMb},` +
124
144
  `${heapUsedMb},${heapTotalMb},${externalMb},${arrayBuffersMb},` +
125
145
  `${retainedRssMb},${retainedHeapUsedMb},${retainedExternalMb}\n`;
@@ -213,6 +233,10 @@ function doWork() {
213
233
  // reason recorded on that function: the batch passes `--expose-gc` to
214
234
  // every child, not just the ones given `--perf`.
215
235
  const memoryBaseline = await settleAndSampleMemoryForPerf(perfPath);
236
+ // Where `totalTimeMs` starts (conway#562): after the settle, so the
237
+ // retention samples stay outside every timed column, and before the
238
+ // file read, which is real load cost no stage clock could see.
239
+ const loadStartMs = Date.now();
216
240
  try {
217
241
  stepBuffer = fs.readFileSync(stepFile);
218
242
  }
@@ -268,7 +292,7 @@ function doWork() {
268
292
  const parseEndMs = Date.now();
269
293
  const parseTimeMs = parseEndMs - parseStartMs;
270
294
  if (model === void 0) {
271
- await writePerfCsvIfRequested(perfPath, stepFile, "FAIL", parseTimeMs, 0, parseTimeMs);
295
+ await writePerfCsvIfRequested(perfPath, stepFile, "FAIL", parseTimeMs, 0, Date.now() - loadStartMs, parseTimeMs);
272
296
  displayErrors(stepFile);
273
297
  return;
274
298
  }
@@ -277,7 +301,9 @@ function doWork() {
277
301
  const extraction = geometryExtraction(model);
278
302
  const geomEndMs = Date.now();
279
303
  const geometryTimeMs = geomEndMs - geomStartMs;
280
- const totalTimeMs = geomEndMs - parseStartMs;
304
+ // The sum `totalTimeMs` used to hold — an identity by construction,
305
+ // since `geomStartMs` is taken on the line after `parseEndMs`.
306
+ const parsePlusGeometryMs = geomEndMs - parseStartMs;
281
307
  const perfStatus = extraction === void 0 ? "FAIL" : "OK";
282
308
  // Sized before anything downstream can release meshes, and only on
283
309
  // the OK path: a failed extraction leaves a partial cache whose size
@@ -301,8 +327,10 @@ function doWork() {
301
327
  // the blessed output beats saving the work. The settle below IS
302
328
  // gated; see `memoryBaseline` above.
303
329
  model.invalidate(true);
330
+ // Closes on the teardown, before the retained settle.
331
+ const totalTimeMs = Date.now() - loadStartMs;
304
332
  memory.retained = retainedMemoryMb(memoryBaseline, await settleAndSampleMemoryForPerf(perfPath));
305
- await writePerfCsvIfRequested(perfPath, stepFile, perfStatus, parseTimeMs, geometryTimeMs, totalTimeMs, memory);
333
+ await writePerfCsvIfRequested(perfPath, stepFile, perfStatus, parseTimeMs, geometryTimeMs, totalTimeMs, parsePlusGeometryMs, memory);
306
334
  // AFTP sizing pass: no-op unless the wasm module was built with
307
335
  // CONWAY_ALLOC_TELEMETRY (see conway-geom structures/alloc_telemetry.h).
308
336
  conwayGeom.dumpAllocTelemetry(path.basename(stepFile));
@@ -1 +1 @@
1
- {"version":3,"file":"ifc_api_proxy_ap214.d.ts","sourceRoot":"","sources":["../../../../src/compat/web-ifc/ifc_api_proxy_ap214.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ifc_api_proxy_ap214.d.ts","sourceRoot":"","sources":["../../../../src/compat/web-ifc/ifc_api_proxy_ap214.ts"],"names":[],"mappings":"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"}
@@ -233,6 +233,7 @@ export class IfcApiProxyAP214 {
233
233
  const allTimeEnd = Date.now();
234
234
  const allTime = allTimeEnd - allTimeStart;
235
235
  statistics?.setLoadStatus("OK");
236
+ statistics?.setWriter("ap214-web-ifc-proxy");
236
237
  statistics?.setTotalTime(allTime);
237
238
  if (ap214Version !== void 0) {
238
239
  statistics?.setVersion(ap214Version);
@@ -1 +1 @@
1
- {"version":3,"file":"ifc_api_proxy_ifc.d.ts","sourceRoot":"","sources":["../../../../src/compat/web-ifc/ifc_api_proxy_ifc.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,cAAc,EACf,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAQ/C,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAC7D,OAAO,YAAY,MAAM,0BAA0B,CAAA;AACnD,OAAO,EACL,QAAQ,EACR,WAAW,EACX,WAAW,EACX,cAAc,EACd,cAAc,EACd,WAAW,EACX,MAAM,EACP,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,qBAAqB,EAA8B,MAAM,iCAAiC,CAAA;AACnG,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,QAAQ,MAAM,WAAW,CAAA;AAGrC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAEhD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAqBrD,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAE3D,OAAO,EAAyB,qBAAqB,EAAE,MAAM,mCAAmC,CAAA;AA2DhG;;;;;GAKG;AACH,UAAU,iBAAiB;IACzB,UAAU,EAAE,cAAc,CAAA;IAC1B,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;uEACmE;IACnE,yBAAyB,CAAC,EAAE,MAAM,EAAE,CAAA;IACpC;;qEAEiE;IACjE,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,UAAU,CAAA;IACtB,KAAK,EAAE,YAAY,CAAA;IACnB,KAAK,EAAE,eAAe,CAAA;IACtB,cAAc,EAAE,qBAAqB,CAAA;IACrC,gBAAgB,EAAE,MAAM,CAAA;IACxB,wEAAwE;IACxE,OAAO,CAAC,EAAE,eAAe,CAAA;CAC1B;AA6CD,qBAAa,cAAe,YAAW,sBAAsB;aAyMvC,OAAO,EAAE,MAAM;IAE/B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;IA1M9B,EAAE,CAAC,EAAE,GAAG,CAAY;IAEpB,KAAK,EACH;QAAC,YAAY;QACX,eAAe;QACf,GAAG,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC/C,GAAG,CAAC,MAAM,EAAE,CAAC,cAAc,EAAE,iBAAiB,EAAE,MAAM,EAAE,CAAC,CAAC;QAE1D,MAAM,CAAC,QAAQ,CAAC;QAAE,QAAQ,CAAC,IAAI;KAAC,CAAA;IACpC,UAAU,EAAE,cAAc,CAAA;IAE1B,yEAAyE;IACzE,OAAO,CAAC,eAAe,CAAuB;IAE9C,iEAAiE;IACjE,OAAO,CAAC,aAAa,CAAiB;IAEtC,4EAA4E;IAC5E,OAAO,CAAC,gBAAgB,CAAC,CAAiB;IAE1C,yEAAyE;IACzE,OAAO,CAAC,qBAAqB,CAAiB;IAE9C,sEAAsE;IACtE,OAAO,CAAC,eAAe,CAAC,CAAU;IAElC;;;;;;;OAOG;IACH;;;;;;;OAOG;IACH,OAAO,CAAC,kBAAkB,CAAI;IAE9B;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA4B;IAEhE,sEAAsE;IAGtE,OAAO,CAAC,MAAM,CAAC,CAAkC;IAEjD,OAAO,CAAC,aAAa,CAAI;IAEzB,wEAAwE;IACxE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAO/B;IAED;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,iBAAiB,CAAC,CAAoB;IAE9C,qEAAqE;IACrE,OAAO,CAAC,uBAAuB,CAAI;IAEnC;;;;;;;;OAQG;IACH,OAAO,CAAC,uBAAuB,CAAC,CAAsC;IAEtE;;;;;;;;;OASG;IACH,OAAO,CAAC,qBAAqB,CAAC,CAAuB;IAErD;;;;OAIG;IACH,OAAO,CAAC,qBAAqB,CAAI;IAEjC;;;;;;;;;OASG;IACH,OAAO,CAAC,mBAAmB,CAAC,CAAU;IAEtC;;6DAEyD;IACzD,OAAO,CAAC,eAAe,CAAQ;IAE/B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,8BAA8B,CAAiB;IAEvD;;;;;;;;;;OAUG;IACH,OAAO,CAAC,qBAAqB,CAAiB;IAE9C,cAAc,EAAE,OAAO,CAAQ;IAC/B,mBAAmB,EAAE,MAAM,CAAI;IAC/B,QAAQ,EAAE,MAAM,EAAE,CAAmD;IAGrE,YAAY,EAAE,QAAQ,CAAC,IAAI,CAK1B;IAED;;OAEG;IACH,UAAU,gBAA0B;IAEpC;;;;OAIG;gBAGiB,OAAO,EAAE,MAAM,EAC/B,IAAI,EAAE,UAAU,EACC,UAAU,EAAE,GAAG,EACf,QAAQ,CAAC,EAAE,cAAc,YAAA,EAC1C,WAAW,CAAC,EAAE,iBAAiB;IAmLnC;;;;;;;;;;OAUG;WACiB,WAAW,CAC3B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,UAAU,EAChB,UAAU,EAAE,GAAG,EACf,QAAQ,CAAC,EAAE,cAAc,GAAI,OAAO,CAAC,cAAc,CAAC;IAQxD;;;;;;;;;;;;;;;OAeG;WACiB,cAAc,CAC9B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,UAAU,EAChB,UAAU,EAAE,GAAG,EACf,QAAQ,CAAC,EAAE,cAAc,GAAI,OAAO,CAAC,cAAc,CAAC;IAQxD;;;;;;;;;;;;;;;OAeG;WACiB,cAAc,CAC9B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,UAAU,EAChB,UAAU,EAAE,GAAG,EACf,QAAQ,CAAC,EAAE,cAAc,GAAI,OAAO,CAAC,cAAc,CAAC;IAQxD;;;;;;;;;;;OAWG;WACiB,eAAe,CAC/B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,qBAAqB,EAC5B,UAAU,EAAE,GAAG,EACf,QAAQ,CAAC,EAAE,cAAc,GAAI,OAAO,CAAC,cAAc,CAAC;IASxD;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAwCtC;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IAU1B;;;;;;;;OAQG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAsF9B;;;;;;;;;OASG;mBACkB,oBAAoB;IAsFzC;;;;;;;;;;;;;;;;;;;;;;OAsBG;mBACkB,4BAA4B;IA6KjD;;;;;;;;;;;;;;;;OAgBG;mBACkB,sBAAsB;IAyP3C;;;;OAIG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;IA4BxC;;;;;OAKG;IACH,WAAW,CAAC,QAAQ,CAAC,EAAE,cAAc,GAAG,MAAM;IAM9C;;;;OAIG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU;IAO5C;;;;;;OAMG;IACH,WAAW,CAAC,iBAAiB,EAAE,MAAM,GAAG,WAAW;IA6BnD;;;;;;OAMG;IACH,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE,OAAe;IA0BnD;;;;;;;;;;;;OAYG;IACH,qBAAqB,CAAC,SAAS,EAAE,MAAM,GACrC;QAAE,IAAI,CAAC,EAAE,eAAe,CAAC;QACvB,QAAQ,CAAC,EAAE,eAAe,CAAC;QAC3B,QAAQ,CAAC,EAAE,eAAe,CAAA;KAAE;IAoChC;;;;;;OAMG;IACH,kBAAkB,IAAI,IAAI;IAI1B;;;;;OAKG;IACH,IAAI,gBAAgB,IAAI,OAAO,CAE9B;IAED;;;;OAIG;IACH,IAAI,cAAc,IAAI;QACpB,UAAU,EAAE,MAAM,CAAA;QAClB,SAAS,EAAE,MAAM,CAAA;QACjB,SAAS,EAAE,MAAM,CAAA;QACjB,OAAO,EAAE,MAAM,CAAA;QACf,QAAQ,EAAE,MAAM,CAAA;QAChB,MAAM,EAAE,MAAM,CAAA;KACf,CAEA;IAED;;;;;;;;;;OAUG;IACH,0BAA0B,CACtB,KAAK,EAAE,qBAAqB,EAC5B,UAAU,CAAC,EAAE,MAAM,EACnB,iBAAiB,CAAC,EAAE,MAAM,GAAI,IAAI;IAItC;;;;;;;;;;;OAWG;IACG,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1D;;;;;;;;;;;OAWG;IACH,cAAc,IAAI,gBAAgB,CAAC,MAAM,CAAC;IAI1C;;;;OAIG;IACH,iBAAiB,IAAI,MAAM,CAAC,WAAW,CAAC;IAoBxC;;;;OAIG;IACH,SAAS,CAAC,UAAU,EAAE,GAAG;IAIzB;;;;OAIG;IACH,WAAW,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI;IAkB5B;;;;;OAKG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW;IAgD9C;;;;OAIG;IACH,gBAAgB,CAAC,IAAI,EAAE,WAAW;IAIlC;;;;;OAKG;IACH,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IA6ChD;;;;OAIG;IACH,WAAW,IAAI,MAAM,CAAC,MAAM,CAAC;IA0C7B;;;;OAIG;IACH,yBAAyB,CAAC,oBAAoB,EAAE,KAAK,CAAC,MAAM,CAAC;IAU7D;;;;OAIG;IACH,qBAAqB,IAAI,KAAK,CAAC,MAAM,CAAC;IAetC;;;;;;OAMG;IACH,sBAAsB,IAAI,KAAK,CAAC,MAAM,CAAC;IAIvC;;;;;OAKG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,YAAY;IAIvD;;;;;OAKG;IACH,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW;IAIrD;;;;;;OAMG;IACH,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAC/E,YAAY,GAAG,WAAW;IAe5B;;;;OAIG;IACH,UAAU;IAIV;;;;;;;;;;;;;OAaG;IACH,eAAe,IAAI,OAAO;IAoC1B;0EACsE;IACtE,OAAO,CAAC,SAAS,CAAQ;IAEzB;;;;;;;;;;;;;;;;;OAiBG;IACH,oBAAoB,CAChB,SAAS,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,GAAI;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAC;IAoBrF;;;;;;;;;OASG;IACG,yBAAyB,CAC3B,SAAS,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,GACvC,OAAO,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAC,CAAC;IA2KnD;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IA+C9B;;;;;;;;;;;;;;;OAeG;YACW,2BAA2B;IA8CzC;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,wBAAwB;IAiChC;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;IAa7B;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,sBAAsB;IAuD9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkCG;IACI,oBAAoB,CAAE,MAAM,CAAC,EAAE,MAAM,EAAE,GAAI,IAAI;IAoEtD;;;;;;;;;;;;;;;;;;;OAmBG;IACI,gBAAgB,CAAE,KAAK,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAI,IAAI;IAiIzE;;;;;;;OAOG;IACH;;;;;;;;;;;;OAYG;IACH;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,wBAAwB;IA+ChC;;;;;;;;;OASG;IACH,OAAO,CAAC,uBAAuB;IAW/B,OAAO,CAAC,kBAAkB;IAkH1B;;;;;;;;;;;;;;;;;;;OAmBG;IACH;;;;;;;;;;;;;;;OAeG;IACI,iBAAiB,CAAE,KAAK,EAAE,MAAM,GAAI;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE;IASrF,OAAO,CAAC,gBAAgB;IAkNxB;;;;OAIG;IACH,eAAe,CAAE,YAAY,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI;IAuQvD;;;;;OAKG;IACH,wBAAwB,CACpB,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,EACpB,YAAY,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI;IAgK1C;;;;OAIG;IACH,eAAe,IAAI,MAAM,CAAC,QAAQ,CAAC;IA2MnC;;;;;OAKG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ;IAqDxC;;;;;OAKG;IACH,4BAA4B,IAAI,IAAI;CAwBrC"}
1
+ {"version":3,"file":"ifc_api_proxy_ifc.d.ts","sourceRoot":"","sources":["../../../../src/compat/web-ifc/ifc_api_proxy_ifc.ts"],"names":[],"mappings":"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"}
@@ -332,6 +332,7 @@ export class IfcApiProxyIfc {
332
332
  const allTimeEnd = Date.now();
333
333
  const allTime = allTimeEnd - allTimeStart;
334
334
  statistics?.setLoadStatus("OK");
335
+ statistics?.setWriter("ifc-web-ifc-proxy");
335
336
  statistics?.setTotalTime(allTime);
336
337
  if (ifcVersion !== void 0) {
337
338
  statistics?.setVersion(ifcVersion);
@@ -328,6 +328,7 @@ function doWork() {
328
328
  if (statistics !== void 0) {
329
329
  const dataParseTime = parseDataTimeEnd - parseDataTimeStart;
330
330
  statistics.setLoadStatus("OK");
331
+ statistics.setWriter("ifc-cli");
331
332
  statistics.setParseTime(dataParseTime);
332
333
  statistics.setTotalTime(allTime);
333
334
  let FILE_NAME = stepHeader.headers.get("FILE_NAME");
@@ -49,6 +49,15 @@ const KB_PER_MB = 1024;
49
49
  const PERF_MB_PRECISION = 2;
50
50
  /** Placeholder for a column this row has no measurement for. */
51
51
  const UNMEASURED = "N/A";
52
+ /**
53
+ * This child's value for the `writer` column (conway#555).
54
+ *
55
+ * A row is only comparable to another row from the same writer for the
56
+ * pipeline-dependent columns — see the note on `writePerfCsvIfRequested`.
57
+ * The string is the join key `gen_delta_csv.cjs` compares, so it is a
58
+ * stable identifier rather than prose.
59
+ */
60
+ const PERF_WRITER = "ifc-regression";
52
61
  /**
53
62
  * Capture the end-of-load memory figures for a perf row.
54
63
  *
@@ -69,6 +78,44 @@ function capturePerfMemory(geometryMemoryBytes, wasmHeapBytes) {
69
78
  * taken at call time; for the OK path this is right after geometry extraction
70
79
  * — close to peak. No-op when perfPath is empty.
71
80
  *
81
+ * WHICH PIPELINE PRODUCED THE ROW (conway#555):
82
+ *
83
+ * writer The pipeline that measured this row. It is here because
84
+ * `geometryMemoryMb` MEANS SOMETHING DIFFERENT depending
85
+ * on the answer, and nothing in the file used to say so:
86
+ * this child sets
87
+ * `RegressionCaptureState.memoization = FULL`, which is
88
+ * what stops `deleteTemporaries()` running and keeps every
89
+ * CSG intermediate and boolean operand in
90
+ * `model.geometry` — the map `calculateGeometrySize()`
91
+ * sums. The digest below needs those temporaries, so this
92
+ * is not a defect to fix by making the numbers agree; it
93
+ * is a divergence to name. MB-Khaya reads 22.3 MB here
94
+ * against the CLI's 16.8 MB, a ~30% gap that is pure
95
+ * methodology. `gen_delta_csv.cjs` refuses to difference
96
+ * the pipeline-dependent columns across two writers.
97
+ *
98
+ * WHICH COLUMNS ARE TIME, AND OVER WHAT (conway#562):
99
+ *
100
+ * totalTimeMs The load's WALL CLOCK: file read through teardown,
101
+ * which is what `ConwayModelLoader.loadModelWithScene`
102
+ * has always written into this column name. It used to be
103
+ * `geomEndMs - parseStartMs` here, which is
104
+ * `parseTimeMs + geometryTimeMs` BY CONSTRUCTION —
105
+ * `geomStartMs` was taken on the line after `parseEndMs`,
106
+ * and the blessed 1.451 snapshot bears it out at 0-5 ms
107
+ * of slack on all 46 OK rows. Calling that "Total" hid
108
+ * the file read, the wasm init and the teardown, and put
109
+ * two different quantities in one column across the two
110
+ * pipelines.
111
+ * parsePlusGeometryMs That sum, kept as its own column so the identity is
112
+ * visible rather than coincidental. The gap between the
113
+ * two is everything the stage clocks cannot see.
114
+ *
115
+ * Neither is time-to-first-mesh, and no column here is: this child runs a
116
+ * resident, fully-extracted open, which is not the windowed deferred pump
117
+ * Share drives. See conway#562 §2.
118
+ *
72
119
  * WHICH COLUMNS ARE PEAK AND WHICH ARE INSTANTS — they are not comparable and
73
120
  * the difference is large (conway#552):
74
121
  *
@@ -151,12 +198,16 @@ function capturePerfMemory(geometryMemoryBytes, wasmHeapBytes) {
151
198
  * @param status OK or FAIL.
152
199
  * @param parseTimeMs Parse stage duration in ms.
153
200
  * @param geometryTimeMs Geometry extraction duration in ms.
154
- * @param totalTimeMs Sum of parse + geometry in ms.
201
+ * @param totalTimeMs The load's WALL CLOCK — file read through teardown. See
202
+ * the column note above for why this stopped being the sum of the two stages
203
+ * above it (conway#562).
204
+ * @param parsePlusGeometryMs That sum, which is what `totalTimeMs` used to
205
+ * hold.
155
206
  * @param memory The row's memory figures, captured at the points in the load
156
207
  * each is defined at. Defaults to capturing the end-of-load instants here,
157
208
  * which is what the FAIL paths want — they have nothing else to report.
158
209
  */
159
- async function writePerfCsvIfRequested(perfPath, ifcFile, status, parseTimeMs, geometryTimeMs, totalTimeMs, memory = capturePerfMemory()) {
210
+ async function writePerfCsvIfRequested(perfPath, ifcFile, status, parseTimeMs, geometryTimeMs, totalTimeMs, parsePlusGeometryMs, memory = capturePerfMemory()) {
160
211
  if (perfPath.length === 0) {
161
212
  return;
162
213
  }
@@ -182,10 +233,12 @@ async function writePerfCsvIfRequested(perfPath, ifcFile, status, parseTimeMs, g
182
233
  const retainedExternalMb = retained !== void 0 ?
183
234
  retained.externalMb.toFixed(PERF_MB_PRECISION) : UNMEASURED;
184
235
  const fileName = csvSafeString(path.basename(ifcFile));
185
- const header = "file,status,parseTimeMs,geometryTimeMs,totalTimeMs,geometryMemoryMb," +
236
+ const header = "file,status,writer,parseTimeMs,geometryTimeMs,totalTimeMs," +
237
+ "parsePlusGeometryMs,geometryMemoryMb," +
186
238
  "peakWasmHeapMb,rssMb,peakRssMb,heapUsedMb,heapTotalMb,externalMb," +
187
239
  "arrayBuffersMb,retainedRssMb,retainedHeapUsedMb,retainedExternalMb\n";
188
- const row = `${fileName},${status},${parseTimeMs},${geometryTimeMs},${totalTimeMs},` +
240
+ const row = `${fileName},${status},${PERF_WRITER},${parseTimeMs},${geometryTimeMs},` +
241
+ `${totalTimeMs},${parsePlusGeometryMs},` +
189
242
  `${geometryMemoryMb},${peakWasmHeapMb},${rssMb},${peakRssMb},` +
190
243
  `${heapUsedMb},${heapTotalMb},${externalMb},${arrayBuffersMb},` +
191
244
  `${retainedRssMb},${retainedHeapUsedMb},${retainedExternalMb}\n`;
@@ -289,6 +342,15 @@ function doWork() {
289
342
  // the ones given `--perf`. That gate is why the argv unpacking
290
343
  // above had to move ahead of this line.
291
344
  const memoryBaseline = await settleAndSampleMemoryForPerf(perfPath);
345
+ // `totalTimeMs` starts HERE, not at parseStartMs (conway#562).
346
+ // What sat between the two is a file read, a ParsingBuffer and a
347
+ // header parse — real cost of loading the model that the stage
348
+ // clocks could not see, and that a reader takes "Total" to
349
+ // include. Deliberately after the settle: the retention samples
350
+ // are outside the timed region by design (see
351
+ // design/new/perf-measurement.md), and folding two forced
352
+ // collections into the load's wall clock would undo that.
353
+ const loadStartMs = Date.now();
292
354
  try {
293
355
  indexIfcBuffer = fs.readFileSync(ifcFile);
294
356
  }
@@ -344,7 +406,7 @@ function doWork() {
344
406
  const parseEndMs = Date.now();
345
407
  const parseTimeMs = parseEndMs - parseStartMs;
346
408
  if (model === void 0) {
347
- await writePerfCsvIfRequested(perfPath, ifcFile, "FAIL", parseTimeMs, 0, parseTimeMs);
409
+ await writePerfCsvIfRequested(perfPath, ifcFile, "FAIL", parseTimeMs, 0, Date.now() - loadStartMs, parseTimeMs);
348
410
  return;
349
411
  }
350
412
  model.nullOnErrors = !strict;
@@ -352,7 +414,11 @@ function doWork() {
352
414
  const scene = geometryExtraction(model);
353
415
  const geomEndMs = Date.now();
354
416
  const geometryTimeMs = geomEndMs - geomStartMs;
355
- const totalTimeMs = geomEndMs - parseStartMs;
417
+ // The sum the `totalTimeMs` column used to hold. `geomStartMs` is
418
+ // taken on the line after `parseEndMs`, so this IS
419
+ // parseTimeMs + geometryTimeMs — the identity is now visible in
420
+ // the name instead of being a coincidence a reader has to derive.
421
+ const parsePlusGeometryMs = geomEndMs - parseStartMs;
356
422
  const perfStatus = scene === void 0 ? "FAIL" : "OK";
357
423
  // Sized before anything downstream can release meshes, and only on
358
424
  // the OK path: a failed extraction leaves a partial cache whose size
@@ -392,11 +458,15 @@ function doWork() {
392
458
  // different paths to the blessed output. One path, verified
393
459
  // byte-identical, is worth more than the work it costs.
394
460
  model.invalidate(true);
461
+ // The load's wall clock closes on the teardown, not on the last
462
+ // stage clock, and before the retained settle so those two forced
463
+ // collections stay outside every timed column.
464
+ const totalTimeMs = Date.now() - loadStartMs;
395
465
  // Both sides come back undefined on a run with no `--perf`, so
396
466
  // `retained` stays unset and the row would read N/A — except no row
397
467
  // is written at all in that case.
398
468
  memory.retained = retainedMemoryMb(memoryBaseline, await settleAndSampleMemoryForPerf(perfPath));
399
- await writePerfCsvIfRequested(perfPath, ifcFile, perfStatus, parseTimeMs, geometryTimeMs, totalTimeMs, memory);
469
+ await writePerfCsvIfRequested(perfPath, ifcFile, perfStatus, parseTimeMs, geometryTimeMs, totalTimeMs, parsePlusGeometryMs, memory);
400
470
  // AFTP sizing pass: no-op unless the wasm module was built with
401
471
  // CONWAY_ALLOC_TELEMETRY (see conway-geom structures/alloc_telemetry.h).
402
472
  conwayGeom.dumpAllocTelemetry(path.basename(ifcFile));
@@ -1 +1 @@
1
- {"version":3,"file":"conway_model_loader.d.ts","sourceRoot":"","sources":["../../../src/loaders/conway_model_loader.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AACrC,OAAO,EAAE,gBAAgB,EAAmB,MAAM,kBAAkB,CAAA;AACpE,OAAO,EAAE,SAAS,EAAmB,MAAM,sBAAsB,CAAA;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAkFrC;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAE/B;;;OAGG;IACH,UAAU,CAAC,EAAE,gBAAgB,CAAA;IAE7B;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAE1B,wEAAwE;IACxE,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAE3B;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAE,IAAI,EAAE,SAAS,KAAM,IAAI,CAAA;CAC1C;AAED;;;;GAIG;AACH,qBAAa,iBAAiB;IAE5B;;;;;;;;;OASG;WACiB,kBAAkB,CAClC,IAAI,EAAE,UAAU,EAChB,aAAa,GAAE,OAAc,EAC7B,eAAe,GAAE,MAAW,EAC5B,OAAO,GAAE,MAAU,EACnB,OAAO,CAAC,EAAE,gBAAgB,GAAI,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;CAse1D"}
1
+ {"version":3,"file":"conway_model_loader.d.ts","sourceRoot":"","sources":["../../../src/loaders/conway_model_loader.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AACrC,OAAO,EAAE,gBAAgB,EAAmB,MAAM,kBAAkB,CAAA;AACpE,OAAO,EAAE,SAAS,EAAmB,MAAM,sBAAsB,CAAA;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAkFrC;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAE/B;;;OAGG;IACH,UAAU,CAAC,EAAE,gBAAgB,CAAA;IAE7B;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAE1B,wEAAwE;IACxE,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAE3B;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAE,IAAI,EAAE,SAAS,KAAM,IAAI,CAAA;CAC1C;AAED;;;;GAIG;AACH,qBAAa,iBAAiB;IAE5B;;;;;;;;;OASG;WACiB,kBAAkB,CAClC,IAAI,EAAE,UAAU,EAChB,aAAa,GAAE,OAAc,EAC7B,eAAe,GAAE,MAAW,EAC5B,OAAO,GAAE,MAAU,EACnB,OAAO,CAAC,EAAE,gBAAgB,GAAI,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;CA8e1D"}
@@ -212,6 +212,10 @@ export class ConwayModelLoader {
212
212
  if (statistics !== void 0) {
213
213
  const dataParseTime = parseDataTimeEnd - parseDataTimeStart;
214
214
  statistics.setLoadStatus("OK");
215
+ // conway#555: this path brings up a ConwayGeometry per load and
216
+ // runs at the default OPTIMAL memoization capture, so its
217
+ // memory columns are not comparable with a regression child's.
218
+ statistics.setWriter("loader");
215
219
  statistics.setParseTime(dataParseTime);
216
220
  statistics.setTotalTime(allTime);
217
221
  let FILE_NAME = stepHeader.headers.get("FILE_NAME");
@@ -351,6 +355,10 @@ export class ConwayModelLoader {
351
355
  if (statistics !== void 0) {
352
356
  const dataParseTime = parseDataTimeEnd - parseDataTimeStart;
353
357
  statistics.setLoadStatus("OK");
358
+ // conway#555: this path brings up a ConwayGeometry per load and
359
+ // runs at the default OPTIMAL memoization capture, so its
360
+ // memory columns are not comparable with a regression child's.
361
+ statistics.setWriter("loader");
354
362
  statistics.setParseTime(dataParseTime);
355
363
  statistics.setTotalTime(allTime);
356
364
  let FILE_NAME = stepHeader.headers.get("FILE_NAME");