@bldrs-ai/conway 1.325.1034 → 1.327.1045

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/README.md CHANGED
@@ -177,20 +177,38 @@ Every PR is gated on two checks defined in `.github/workflows/build.yml`:
177
177
 
178
178
  | Job | What it does |
179
179
  |---|---|
180
- | `build` | `yarn install`, WASM + TS compile (WASM cached on the `conway-geom` submodule SHA), `yarn test`, `yarn lint`. |
181
- | `run-ifc-regression` | `needs: build`. Reuses the same WASM cache. Runs the regression batch against the pinned `test-models` tag, posts a per-PR comment with `failed.csv` / `errors.csv` / perf summaries, and uploads the candidate npm tarball + `perf.csv` as workflow artifacts. |
180
+ | `build` | `yarn install`, WASM + TS compile (WASM cached on the `conway-geom` submodule SHA), `yarn test`, `yarn lint`, and a Tier-A geometry-digest check of the in-repo `data/` models against committed goldens. |
181
+ | `run-ifc-regression` | `needs: build`. Reuses the same WASM cache. Runs the regression batch against the public `test-models` ref (`TEST_MODELS_REF`, default `main`), pinned per-run to the resolved commit SHA; posts a per-PR comment with the resolved SHA + `failed.csv` / `errors.csv` / perf summaries, and uploads the candidate npm tarball + `perf.csv` as workflow artifacts. |
182
182
 
183
183
  A merge to `main` re-runs those two jobs and then chains into `auto-publish` (see [Releases](#releases) below).
184
184
 
185
185
  ## Regression batch
186
186
 
187
- The same batch the regression CI job runs can be invoked locally — see [regression/README.md](regression/README.md) for digest / verbose / batch modes and the catalog of model fixtures. The CI pinned tag is `TEST_MODELS_TAG` near the top of `build.yml`.
187
+ The same batch the regression CI job runs can be invoked locally — see [regression/README.md](regression/README.md) for digest / verbose / batch modes and the catalog of model fixtures. CI tracks `TEST_MODELS_REF` near the top of `build.yml` (default `main`), resolved to a commit SHA per run and recorded in the PR comment + job summary, so each run is reproducible without relying on test-models cutting tags.
188
+
189
+ ### Tier A: in-repo quick-check models (`data/`)
190
+
191
+ The `build` job also runs a fast, hermetic geometry gate over every `data/*.ifc` model — no `test-models` clone and no token, so it protects every PR including forks. Each model's geometry digest (the same `ifc_regression_main.js -d` digest the batch produces) is diffed against its committed golden `data/<name>.csv`; a mismatch fails `build` with a re-bless hint. The goldens are checked in (generated by CI's pinned EMSDK toolchain), so the gate is **live**.
192
+
193
+ **Re-blessing an intended change.** Because the correct digest is only knowable from a CI run on the new code, the gate fails first: that same run uploads the recomputed digests as the `tierA-goldens-<run_id>` artifact, so you download it, commit the new `data/<name>.csv`, and push. One PR, but a fail-then-rebless round-trip rather than a single edit. A brand-new `data/*.ifc` model with no golden yet only warns (it doesn't fail) and emits its candidate digest the same way, to bootstrap.
188
194
 
189
195
  ## Performance benchmarks
190
196
 
191
197
  **Tier 1 — Conway-only perf in CI (live).** Every regression run emits a `perf.csv` of `parseTimeMs / geometryTimeMs / totalTimeMs / rssMb / heapUsedMb / heapTotalMb` per model. The top-10 slowest are posted in the PR comment; the full CSV is uploaded as a workflow artifact. This piggybacks on the existing regression batch so cost is ~0 extra runner minutes.
192
198
 
193
- **Tier 2 — full headless-three perf (planned, #314).** A `perf-three` job on `push: main` that runs `scripts/benchmark.cjs` against a clone of [headless-three](https://github.com/bldrs-ai/headless-three), installing the candidate Conway tarball as H3's `@bldrs-ai/conway` dep. Captures PNG renders + per-model timings via H3's rendering server, including a parallel job for `test-models-private`. Tracked in #314.
199
+ **Tier 2 — full headless-three perf in CI (live).** Two jobs,
200
+ `perf-three-public` and `perf-three-private`, run on `push: main`
201
+ (`needs: run-ifc-regression`). Each downloads the candidate Conway tarball
202
+ that the regression job packed, clones [headless-three](https://github.com/bldrs-ai/headless-three)
203
+ at a pinned `H3_SHA`, and forces the whole H3 → adapter → conway chain onto
204
+ the candidate via a yarn `resolutions` override (no `yarn link`), then runs
205
+ `scripts/benchmark.cjs` to time every model. The public job posts a
206
+ per-model table to the merge's PR; the private job (`test-models-private`,
207
+ gated on `secrets.TEST_MODELS_PRIVATE_TOKEN`, never on PR events so forks
208
+ can't leak the secret) posts aggregate stats only, so no private model
209
+ names appear in the public thread. Both compute a cross-version delta vs
210
+ the previous `push: main` run (via the `.github/actions/perf-delta`
211
+ composite action) and upload the detail CSV as a workflow artifact.
194
212
 
195
213
 
196
214
  # Releases
@@ -275,38 +293,23 @@ npm dist-tag add @bldrs-ai/conway@<VERSION> stable
275
293
 
276
294
  # Roadmap
277
295
 
278
- The CI / release pipeline is now continuous, but there are tracked
279
- follow-ups to deepen its coverage. Big items first.
280
-
281
- ### #314 Performance benchmarks in CI
282
-
283
- **Tier 1 — Conway-only perf (done):** the regression batch now emits a
284
- per-model `perf.csv` (parse/geometry/total time + RSS/heap MB),
285
- piggybacking on the existing run so there's no extra runner cost. Top-10
286
- slowest models appear in each PR comment; the full CSV uploads as an
287
- artifact. See "Performance benchmarks" above.
288
-
289
- **Tier 2 full headless-three perf (next):** an end-to-end render-and-time
290
- job that runs `scripts/benchmark.cjs` against a clone of
291
- [headless-three](https://github.com/bldrs-ai/headless-three). To avoid the
292
- local `yarn link` toolchain, the job installs the candidate Conway tarball
293
- (produced by `run-ifc-regression`) as H3's `@bldrs-ai/conway` dep and pins
294
- `H3_TAG` in `build.yml`. Gated to `push: main` to keep PR runtime down
295
- while still exercising every release. A sibling job runs against
296
- `test-models-private` using `secrets.TEST_MODELS_PRIVATE_TOKEN`, never on
297
- PR events (so forks can't leak the secret), and uploads results as
298
- org-scoped artifacts. Delta vs. the previous release lands in the
299
- auto-publish summary.
300
-
301
- ### #315 — Bump pinned `TEST_MODELS_TAG`
302
-
303
- The regression batch in `build.yml` is pinned to `test-models@0.13.802`.
304
- If newer stable tags exist, bumping picks up coverage of more recent
305
- fixtures. The bump itself is a one-line change; the work is triaging
306
- whatever new diffs appear on a no-op PR run.
307
-
308
- ### #316 — CI waterfall
309
-
310
- Mostly done: `build → run-ifc-regression` is in place and shares the
311
- WASM cache. The only remaining piece is #314 above (the third leg of
312
- the waterfall).
296
+ The CI / release pipeline is continuous and complete: `build` gates
297
+ `run-ifc-regression`, which gates the headless-three perf jobs, and every
298
+ green merge to `main` auto-publishes (see [Releases](#releases)). The
299
+ umbrella waterfall (#316) and performance-in-CI (#314) issues are closed.
300
+ The optional follow-ups below remain.
301
+
302
+ ### Headless-three perf on PRs
303
+
304
+ The `perf-three-public` / `perf-three-private` jobs run on `push: main`
305
+ only to keep PR wall-time down and to keep the private-models token off
306
+ PR events (forks can't be trusted with it). Running them per-PR, behind a
307
+ gate that withholds the private job from fork PRs, would catch H3
308
+ render-time regressions before merge instead of just after.
309
+
310
+ ### Golden `errors.csv` diffing + regression renders (#288)
311
+
312
+ Fail a PR when its `errors.csv` diverges from a checked-in golden — "New
313
+ errors detected. Copy errors.csv to golden/errors.csv to accept changes"
314
+ — and attach per-model renders to the regression comment so geometry
315
+ regressions are visible without downloading artifacts.
@@ -69608,7 +69608,7 @@ var IfcStepParser = class extends StepParser {
69608
69608
  IfcStepParser.Instance = new IfcStepParser();
69609
69609
 
69610
69610
  // compiled/src/version/version.js
69611
- var versionString = "Conway Web-Ifc Shim v1.325.1034";
69611
+ var versionString = "Conway Web-Ifc Shim v1.327.1045";
69612
69612
 
69613
69613
  // compiled/src/statistics/statistics.js
69614
69614
  var Statistics = class {
@@ -85869,7 +85869,7 @@ var IfcSceneBuilder = class {
85869
85869
  };
85870
85870
 
85871
85871
  // compiled/src/version/version.js
85872
- var versionString = "Conway Web-Ifc Shim v1.325.1034";
85872
+ var versionString = "Conway Web-Ifc Shim v1.327.1045";
85873
85873
 
85874
85874
  // compiled/src/statistics/statistics.js
85875
85875
  var Statistics = class {
@@ -69606,7 +69606,7 @@ var IfcStepParser = class extends StepParser {
69606
69606
  IfcStepParser.Instance = new IfcStepParser();
69607
69607
 
69608
69608
  // compiled/src/version/version.js
69609
- var versionString = "Conway Web-Ifc Shim v1.325.1034";
69609
+ var versionString = "Conway Web-Ifc Shim v1.327.1045";
69610
69610
 
69611
69611
  // compiled/src/statistics/statistics.js
69612
69612
  var Statistics = class {
@@ -1,2 +1,2 @@
1
- const versionString = 'Conway Web-Ifc Shim v1.325.1034';
1
+ const versionString = 'Conway Web-Ifc Shim v1.327.1045';
2
2
  export { versionString };