@plasius/gpu-demo-viewer 0.1.6 → 0.1.8

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 CHANGED
@@ -6,6 +6,44 @@ The format is based on Keep a Changelog and this project adheres to SemVer.
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ - **Added**
10
+ - (placeholder)
11
+
12
+ - **Changed**
13
+ - (placeholder)
14
+
15
+ - **Fixed**
16
+ - (placeholder)
17
+
18
+ - **Security**
19
+ - (placeholder)
20
+
21
+ ## [0.1.8] - 2026-10-18
22
+
23
+ - Consume released renderer 0.2.51 and shared 1.1.8 for responsive camera updates and material reuse on repeated modular-kit meshes.
24
+
25
+ - Export the existing bounded Node asset-acquisition helper for hash-pinned build-time consumers; record five further acquired foliage/terrain models and four LOD holds.
26
+
27
+ - Prepare six original Poly Haven models for the next review batch and bound acquisition to an explicitly selected batch.
28
+
29
+ - **Added**
30
+ - (placeholder)
31
+
32
+ - **Changed**
33
+ - (placeholder)
34
+
35
+ - **Fixed**
36
+ - (placeholder)
37
+
38
+ - **Security**
39
+ - (placeholder)
40
+
41
+ ## [0.1.7] - 2026-10-18
42
+
43
+ - Exclude Gem at user request and record the original Amber fixed-transport qualification; the production target is 74 models.
44
+
45
+ - Track all 75 model candidates, their first-twelve/seven-batch membership and explicit acquisition, held and production states before the later voxel pass.
46
+
9
47
  - **Added**
10
48
  - (placeholder)
11
49
 
@@ -187,3 +225,5 @@ The format is based on Keep a Changelog and this project adheres to SemVer.
187
225
  [0.1.4]: https://github.com/Plasius-LTD/gpu-demo-viewer/releases/tag/v0.1.4
188
226
  [0.1.5]: https://github.com/Plasius-LTD/gpu-demo-viewer/releases/tag/v0.1.5
189
227
  [0.1.6]: https://github.com/Plasius-LTD/gpu-demo-viewer/releases/tag/v0.1.6
228
+ [0.1.7]: https://github.com/Plasius-LTD/gpu-demo-viewer/releases/tag/v0.1.7
229
+ [0.1.8]: https://github.com/Plasius-LTD/gpu-demo-viewer/releases/tag/v0.1.8
package/README.md CHANGED
@@ -151,13 +151,13 @@ fallback. Rollback disables CD; it never rewrites published package history.
151
151
 
152
152
  ## Model library review
153
153
 
154
- `npm run models:download` installs the ten reviewed, freely licensed Poly Haven and Khronos fixtures from `model-library/catalogue.json`, including all buffer/image dependencies. Downloads are bounded and SHA-256 checked; binaries are ignored by Git and npm. `npm run models:dev` opens the localhost server on port 5291. Visit `http://127.0.0.1:5291/?review=first-twelve`. The Medieval house is a manually supplied eleventh asset; only Gem remains deferred. Source links, creators and licences are available beside each model.
154
+ `npm run models:download` installs the ten reviewed, freely licensed Poly Haven and Khronos fixtures from `model-library/catalogue.json`, including all buffer/image dependencies. Downloads are bounded and SHA-256 checked; binaries are ignored by Git and npm. `npm run models:dev` opens the localhost server on port 5291. Visit `http://127.0.0.1:5291/?review=first-twelve`. The Medieval house is a manually supplied eleventh asset; Gem is excluded from the rollout by request. Source links, creators and licences are available beside each model.
155
155
 
156
156
  For Medieval house, obtain the original GLB from its credited Sketchfab source and place it at `model-library/assets/sf-house/medieval_house.glb`, then run `npm run models:download` to verify its pinned size and SHA-256 and write its credits. This command never downloads manual assets; a missing file produces an explicit placement message. The catalogue stores no private local paths.
157
157
 
158
158
  This page consumes the shared model-inspection package entrypoint. While its upstream release is pending, development testing can set `PLASIUS_SHARED_INSPECTION_SOURCE` to an absolute path to the reviewed sibling `src/model-inspection.js`; this explicit source override is for localhost development only, not a released dependency or production deployment.
159
159
 
160
- Mouse/touch/keyboard inspection reuses the material-study camera. The view progressively refines while the camera is still, stopping at the selected sample target. `Home` restores framing and `?` displays a brief gesture reminder. Resizing updates resolution while preserving the camera. Fox is static here; its Survey, Walk and Run clips remain in the original download. Amber currently exposes a visible transmission/volume rendering defect. See `docs/model-library-review.md` for the initial findings; none of these fixtures is implicitly approved for the production showcase.
160
+ Mouse/touch/keyboard inspection reuses the material-study camera. The view progressively refines while the camera is still, stopping at the selected sample target. `Home` restores framing and `?` displays a brief gesture reminder. Resizing updates resolution while preserving the camera. Fox is static here; its Survey, Walk and Run clips remain in the original download. Amber uses the fixed-continuation correction in renderer 0.2.50; its original materials are unchanged. See `docs/model-library-review.md` for the initial findings; none of these fixtures is implicitly approved for the production showcase.
161
161
 
162
162
  Render-quality controls select 8–256 total samples, 2–12 light bounces, 480/800/1280px render width and denoising. Defaults are 64/6/800/on. The first pass is one sample; idle refinement adds up to four samples per batch. Camera and quality changes restart history. Hidden tabs pause further work; the progress bar reports completed samples and actual dimensions. Settings do not reload the source model.
163
163
 
@@ -165,4 +165,39 @@ During upstream progressive-renderer development, also set `PLASIUS_RENDERER_SOU
165
165
 
166
166
  The model review includes native 1920 × 1080, 2560 × 1440 and 3840 × 2160 quality presets. These trace the exact selected pixel dimensions independently of viewport size; the canvas contains the image without stretching. A one-sample target supports quick full-resolution checks. See [UHD inspection design](docs/model-inspection-uhd.md).
167
167
 
168
- The released model review uses fixed progressive sampling with native UHD sizes and requires renderer0.2.49/shared1.1.7 or newer. Adaptive controls remain in a separate qualification branch. See [release scope](docs/model-review-release.md); the local inspection catalogue explicitly retains unresolved visual findings.
168
+ The released model review uses fixed progressive sampling with native UHD sizes and requires renderer 0.2.51/shared 1.1.8 or newer. Adaptive controls remain in a separate qualification branch. See [release scope](docs/model-review-release.md); the local inspection catalogue explicitly retains unresolved visual findings.
169
+
170
+ ## Complete model catalogue rollout
171
+
172
+ The [74-model production rollout](docs/catalogue-production-rollout.md) tracks the
173
+ eleven retained originals and seven subsequent batches of nine. The research
174
+ manifest retains the excluded Gem identity, making 75 research records. `model-library/rollout.json`
175
+ records acquisition/qualification state separately from production entitlement;
176
+ `research-catalogue.json` preserves the original source identities and credits.
177
+ Ten models are currently production-verified. Amber is locally qualified with renderer 0.2.50 and awaits production verification; Gem is excluded by request. Research entries are not a claim of downloaded or working
178
+ models. Voxel conversion is the following pass after original-model production
179
+ qualification. GitHub Story [2308](https://github.com/Plasius-LTD/plasius-ltd-site/issues/2308)
180
+ owns delivery and acceptance.
181
+
182
+ ### Review batch downloads
183
+
184
+ `npm run models:download -- 1` acquires only the six checked Poly Haven models
185
+ in the first follow-on batch. The default remains batch 0 (the original group).
186
+ Each batch retains the existing 200 MiB total and 100 MiB per-file download
187
+ limits, two workers and exact hashes. Downloaded models are candidates, not
188
+ production approvals. The local workshop includes acquired candidates with
189
+ their source credits; production remains a separately qualified catalogue.
190
+
191
+ ### Build-time model acquisition
192
+
193
+ Node consumers may import `acquisitionPlan` and `acquireFixtures` from
194
+ `@plasius/gpu-demo-viewer/model-library/acquire`. Pass reviewed asset metadata
195
+ and a destination root; the helper verifies exact bytes and SHA-256, uses only
196
+ approved HTTPS providers without redirects, and bounds concurrency, time and
197
+ bytes. Select one explicit reviewed batch per call (200 MiB total / 100 MiB per
198
+ resource maximum). Existing files must match; missing manual sources fail closed.
199
+ This Node subpath is build tooling and must not enter browser bundles. Binary
200
+ assets are not included in the npm package. Site build-time use retains stricter
201
+ resource limits and verifies the complete source dependency closure.
202
+
203
+ The review now consumes published renderer 0.2.51 and shared 1.1.8: camera movement reuses unchanged scene geometry, and repeated source primitives share their authored materials during import.
@@ -0,0 +1,19 @@
1
+ # ADR 0005: Share the bounded Node model acquisition helper
2
+
3
+ Accepted for staged delivery, 18 October 2026. Feature site#1170, Story site#2308,
4
+ Task #62. The growing original-model catalogue must not put every source binary
5
+ in site Git history or duplicate the reviewed acquisition implementation.
6
+
7
+ Expose `model-library/acquire.js` as `@plasius/gpu-demo-viewer/model-library/acquire`.
8
+ This is a Node-only tooling boundary; browser entrypoints and public runtime APIs
9
+ remain unchanged. Preserve existing provider allowlists, SHA-256/length checks,
10
+ redirect rejection, two workers, deadlines, manual-source admission and byte
11
+ budgets. Callers select explicit batches and may impose tighter constraints.
12
+
13
+ The site materializes reviewed sources during normal CI/builds, then tests the
14
+ complete output and embeds it in its approved deployment artifact. A missing or
15
+ changed provider source fails the build. Original bytes and credits remain
16
+ traceable; package tarballs contain metadata/tools, never source binary bundles.
17
+
18
+ Export regression, existing acquisition failure tests, combined LCOV and approved
19
+ package CI/CD are required before the site consumes this boundary.
@@ -6,3 +6,5 @@
6
6
  - [ADR-0002: Hosted OIDC Package Publication](./adr-0002-hosted-oidc-package-publication.md)
7
7
 
8
8
  - [ADR 0003: Reviewed model library](adr-0003-reviewed-model-library.md)
9
+
10
+ - [ADR 0005: Build-time model acquisition subpath](adr-0005-build-time-model-acquisition-subpath.md)
@@ -0,0 +1,54 @@
1
+ {
2
+ "date": "2026-10-18",
3
+ "rendererCorrectionCommit": "ad52d1124455807cc1355525ab9ec0c2a9b9637b",
4
+ "releasedBaseline": "0.2.49",
5
+ "candidateVersion": "0.2.50",
6
+ "sourceAssetsUnchanged": true,
7
+ "matchedComparison": {
8
+ "samples": 256,
9
+ "maxDepth": 6,
10
+ "width": 800,
11
+ "height": 282,
12
+ "denoise": false
13
+ },
14
+ "nativeUhd": {
15
+ "width": 3840,
16
+ "height": 2160,
17
+ "samples": 1,
18
+ "maxDepth": 6,
19
+ "denoise": true
20
+ },
21
+ "cameraReset": {
22
+ "before": 256,
23
+ "afterMovement": 0,
24
+ "refined": 256
25
+ },
26
+ "proof": [
27
+ {
28
+ "file": "released-256.png",
29
+ "sha256": "98e8243c5deb8bd80352af9ea24bdaf924b981be0f3495f6920530b6bccdc881"
30
+ },
31
+ {
32
+ "file": "bounded-256.png",
33
+ "sha256": "981c87a2780b779a9fc54f6d18b1cf920538aea08b5f062f5c1828cc5f23988a"
34
+ },
35
+ {
36
+ "file": "bounded-256-denoised.png",
37
+ "sha256": "23f414fe11cc727057d8b81e0c9533c8cbbcfd91f10e9a33a51126afb20bd61b"
38
+ },
39
+ {
40
+ "file": "Amber-UHD-1.png",
41
+ "sha256": "58ac9b4cda4df5f21ad21e7d7ce9718f3606646af0535cf8412b4471e29a2961"
42
+ },
43
+ {
44
+ "file": "Amber-camera-refined.png",
45
+ "sha256": "e3670b2bbc302206f533a661388177069e1d61dd382121c39e5b50de43139e0d"
46
+ }
47
+ ],
48
+ "limits": [
49
+ "Fixed sampling only; experimental adaptive transport remains unqualified.",
50
+ "UHD at one sample demonstrates admission and dimensions, not matched-quality or real-time performance.",
51
+ "Fox is static; source animations are retained but not played.",
52
+ "Physical touch and screen-reader speech have not been tested."
53
+ ]
54
+ }
@@ -0,0 +1,161 @@
1
+ {
2
+ "date": "2026-10-18",
3
+ "renderer": "0.2.50",
4
+ "sharedSource": "3d119868bb9be471f71e04e1e91ed467a958b2d6",
5
+ "mode": "fixed-progressive",
6
+ "sourcePolicy": "Original source resources unchanged; default modular-kit layouts retained.",
7
+ "productionVerified": false,
8
+ "limitations": [
9
+ "No adaptive transport qualification.",
10
+ "Static geometry only; no animation entitlement implied.",
11
+ "This is a source-model inspection catalogue, not assembled cinematic scenes.",
12
+ "Dandelion source contains five widely spaced plants; use camera approach/truck for leaf detail.",
13
+ "Physical touch hardware and screen-reader speech were not tested."
14
+ ],
15
+ "models": [
16
+ {
17
+ "key": "large_iron_gate",
18
+ "triangles": 38140,
19
+ "primitives": 4,
20
+ "materials": 1,
21
+ "completedFixedSamples": 64,
22
+ "completedUhd": {
23
+ "width": 3840,
24
+ "height": 2160,
25
+ "samples": 1
26
+ },
27
+ "evidence": [
28
+ {
29
+ "file": "Large-Iron-Gate.png",
30
+ "sha256": "c1b6d1d907ef6dc24a2483b44b035b834dac306c780e1a3e8d05164f4bb93892"
31
+ },
32
+ {
33
+ "file": "Large-Iron-Gate-UHD.png",
34
+ "sha256": "94c3b333073b0cd572fd1f93bb1176a4caf697c3c10b48c901e7136e7d8b557c"
35
+ }
36
+ ]
37
+ },
38
+ {
39
+ "key": "modular_factory_facade",
40
+ "triangles": 175014,
41
+ "primitives": 263,
42
+ "materials": 6,
43
+ "completedFixedSamples": 64,
44
+ "completedUhd": {
45
+ "width": 3840,
46
+ "height": 2160,
47
+ "samples": 1
48
+ },
49
+ "evidence": [
50
+ {
51
+ "file": "Modular-Factory-Facade.png",
52
+ "sha256": "afb015f2d620513b3bb88bff49df06948100fb76e9696cd5296e1da217228f25"
53
+ },
54
+ {
55
+ "file": "Modular-Factory-Facade-UHD.png",
56
+ "sha256": "6ec1279c040cb6af2d3aeb290e6c40ad3a35548882406cf659a98c3358e9f8fe"
57
+ }
58
+ ]
59
+ },
60
+ {
61
+ "key": "modular_fort_01",
62
+ "triangles": 28218,
63
+ "primitives": 45,
64
+ "materials": 3,
65
+ "completedFixedSamples": 64,
66
+ "completedUhd": {
67
+ "width": 3840,
68
+ "height": 2160,
69
+ "samples": 1
70
+ },
71
+ "evidence": [
72
+ {
73
+ "file": "Modular-Fort-01.png",
74
+ "sha256": "c2a9b7fc1124946ed1ffc9f5cf710752422221581df81699229ff7236bd66503"
75
+ },
76
+ {
77
+ "file": "Modular-Fort-01-UHD.png",
78
+ "sha256": "992eec049485a2ba1a90ee1c3097cafdec0f7ab00220423d9e8eb5de7daba0ec"
79
+ }
80
+ ]
81
+ },
82
+ {
83
+ "key": "modular_urban_apartments_facade",
84
+ "triangles": 270045,
85
+ "primitives": 193,
86
+ "materials": 5,
87
+ "completedFixedSamples": 64,
88
+ "completedUhd": {
89
+ "width": 3840,
90
+ "height": 2160,
91
+ "samples": 1
92
+ },
93
+ "evidence": [
94
+ {
95
+ "file": "Modular-Urban-Apartments-Facade.png",
96
+ "sha256": "0de5ba7e3e084477d871ea6a3d87d462c2cc848568184a5706ee905698ff27f7"
97
+ },
98
+ {
99
+ "file": "Modular-Urban-Apartments-Facade-UHD.png",
100
+ "sha256": "da58feb5597d1642b672812333a8d3b4591dd02288cee0ca6f00c7ddb2459935"
101
+ }
102
+ ]
103
+ },
104
+ {
105
+ "key": "modular_wooden_pier",
106
+ "triangles": 84780,
107
+ "primitives": 12,
108
+ "materials": 2,
109
+ "completedFixedSamples": 64,
110
+ "completedUhd": {
111
+ "width": 3840,
112
+ "height": 2160,
113
+ "samples": 1
114
+ },
115
+ "evidence": [
116
+ {
117
+ "file": "Modular-Wooden-Pier.png",
118
+ "sha256": "6417b2f48258bdcaa29447984c65b504ce6e8d5b61ec5b695d3045dc3fb9afc1"
119
+ },
120
+ {
121
+ "file": "Modular-Wooden-Pier-UHD.png",
122
+ "sha256": "11625d3cb251e7fb45f125b17ed67044a8fea737d1c333713893de1dd704eb73"
123
+ }
124
+ ]
125
+ },
126
+ {
127
+ "key": "dandelion_01",
128
+ "triangles": 54764,
129
+ "primitives": 5,
130
+ "materials": 1,
131
+ "completedFixedSamples": 64,
132
+ "completedUhd": {
133
+ "width": 3840,
134
+ "height": 2160,
135
+ "samples": 1
136
+ },
137
+ "evidence": [
138
+ {
139
+ "file": "Dandelion-01.png",
140
+ "sha256": "eba0dfe86dca4bfdd37203e44e9041fa832f21f6329ee57d5b8316c35bb6577b"
141
+ },
142
+ {
143
+ "file": "Dandelion-01-UHD.png",
144
+ "sha256": "342b2d313c18e2a4eda35fa1e85a66f3bdb7fb475095c23bfc292c7efe5bd62b"
145
+ }
146
+ ]
147
+ }
148
+ ],
149
+ "registryConsumptionCheck": {
150
+ "renderer": "0.2.51",
151
+ "shared": "1.1.8",
152
+ "sourceOverrides": false,
153
+ "completedFixedSamples": 64,
154
+ "cameraResetAndRefinement": true,
155
+ "consoleErrors": 0,
156
+ "evidence": {
157
+ "file": "Factory-released-packages.png",
158
+ "sha256": "57ad9a850dfffdf642bc2e641fe19484ba343df27f245fac20af02cec4ec00eb"
159
+ }
160
+ }
161
+ }
@@ -0,0 +1,145 @@
1
+ {
2
+ "date": "2026-10-18",
3
+ "rendererSource": "65de630819322cdd90955417d21f97dd51416e90",
4
+ "sharedSource": "3d119868bb9be471f71e04e1e91ed467a958b2d6",
5
+ "requiredPublishedPackages": {
6
+ "@plasius/gpu-renderer": "0.2.51",
7
+ "@plasius/gpu-shared": "1.1.8"
8
+ },
9
+ "mode": "fixed-progressive",
10
+ "productionVerified": false,
11
+ "limitations": [
12
+ "Static source geometry only; this does not qualify adaptive transport or animation.",
13
+ "Physical touch hardware and screen-reader speech were not tested.",
14
+ "Changing quality settings reallocates the renderer and can take several seconds on dense sources."
15
+ ],
16
+ "models": [
17
+ {
18
+ "key": "grass_medium_01",
19
+ "triangles": 24730,
20
+ "primitives": 17,
21
+ "materials": 1,
22
+ "completedFixedSamples": 64,
23
+ "cameraResetAndRefinement": true,
24
+ "completedUhd": {
25
+ "width": 3840,
26
+ "height": 2160,
27
+ "samples": 1
28
+ },
29
+ "evidence": [
30
+ {
31
+ "file": "Grass-Medium-01.png",
32
+ "sha256": "c3110d79baa4cf1307cf818f694458b8e1865bdb1f3758a0210ebe0ac0e3ddc1"
33
+ },
34
+ {
35
+ "file": "Grass-Medium-01-UHD.png",
36
+ "sha256": "2bef23adc598ebaf0f6df4008444325e7425b0199edcac49e3690c2b8f44fd91"
37
+ }
38
+ ]
39
+ },
40
+ {
41
+ "key": "searsia_lucida",
42
+ "triangles": 377192,
43
+ "primitives": 21,
44
+ "materials": 3,
45
+ "completedFixedSamples": 64,
46
+ "cameraResetAndRefinement": true,
47
+ "completedUhd": {
48
+ "width": 3840,
49
+ "height": 2160,
50
+ "samples": 1
51
+ },
52
+ "evidence": [
53
+ {
54
+ "file": "Searsia-Lucida.png",
55
+ "sha256": "571ba465753bd4aec4d063b60e72e7196ed1ce0936a335dd28c0b7266be04b15"
56
+ },
57
+ {
58
+ "file": "Searsia-Lucida-UHD.png",
59
+ "sha256": "06478a062b57dc382d37c5ae448d2b3987b99bfa77589407b470af24a888ffe1"
60
+ }
61
+ ]
62
+ },
63
+ {
64
+ "key": "boulder_01",
65
+ "triangles": 66122,
66
+ "primitives": 1,
67
+ "materials": 1,
68
+ "completedFixedSamples": 64,
69
+ "cameraResetAndRefinement": true,
70
+ "completedUhd": {
71
+ "width": 3840,
72
+ "height": 2160,
73
+ "samples": 1
74
+ },
75
+ "evidence": [
76
+ {
77
+ "file": "Boulder-01.png",
78
+ "sha256": "d5a85db2d77d54bee0a2359ee3704ad1a751952dae9da55f52ee845df8c5dc21"
79
+ },
80
+ {
81
+ "file": "Boulder-01-UHD.png",
82
+ "sha256": "0c8e927d9845c5218740c7efc65c7b282bb0f7d45166779b3244dd6aebc12793"
83
+ }
84
+ ]
85
+ },
86
+ {
87
+ "key": "coastal_cliff_01",
88
+ "triangles": 461824,
89
+ "primitives": 1,
90
+ "materials": 1,
91
+ "completedFixedSamples": 64,
92
+ "cameraResetAndRefinement": true,
93
+ "completedUhd": {
94
+ "width": 3840,
95
+ "height": 2160,
96
+ "samples": 1
97
+ },
98
+ "evidence": [
99
+ {
100
+ "file": "Coastal-Cliff-01.png",
101
+ "sha256": "13ca80f446d6ee1199c67712a9f81b3c8b1303ecea335de0217d2b723c229adb"
102
+ },
103
+ {
104
+ "file": "Coastal-Cliff-01-UHD.png",
105
+ "sha256": "532cf5b9b272ce0e395e82bf044fa964b3cd00ebbac8160c4295b78edce5ee15"
106
+ }
107
+ ]
108
+ },
109
+ {
110
+ "key": "dead_tree_trunk",
111
+ "triangles": 101802,
112
+ "primitives": 1,
113
+ "materials": 1,
114
+ "completedFixedSamples": 64,
115
+ "cameraResetAndRefinement": true,
116
+ "completedUhd": {
117
+ "width": 3840,
118
+ "height": 2160,
119
+ "samples": 1
120
+ },
121
+ "evidence": [
122
+ {
123
+ "file": "Dead-Tree-Trunk.png",
124
+ "sha256": "ae1c01085ea5d4ed1fc05bd76ffa7a1d622dc620ca67c5a578b0cfedc59de3ce"
125
+ },
126
+ {
127
+ "file": "Dead-Tree-Trunk-UHD.png",
128
+ "sha256": "3664c0101bd9d80e4993376272d1e83abe23298001dc72f7ab526acf09d83b8a"
129
+ }
130
+ ]
131
+ }
132
+ ],
133
+ "registryConsumptionCheck": {
134
+ "renderer": "0.2.51",
135
+ "shared": "1.1.8",
136
+ "sourceOverrides": false,
137
+ "completedFixedSamples": 64,
138
+ "cameraResetAndRefinement": true,
139
+ "consoleErrors": 0,
140
+ "evidence": {
141
+ "file": "Searsia-Lucida-released-packages.png",
142
+ "sha256": "2c33f63553d04e901e3386e13b83100e700631efc15b4685c79a1abf0dae7b86"
143
+ }
144
+ }
145
+ }
@@ -0,0 +1,115 @@
1
+ # Complete catalogue rollout
2
+
3
+ Status: delivery in progress, 18 October 2026. Parent Epic: site#2271;
4
+ Feature: site#1170. First-batch Story: site#2303; production Task: site#2305.
5
+
6
+ The research catalogue contains 75 distinct source assets/sets. Gem is explicitly
7
+ excluded by the user, leaving 74 production candidates: eleven retained from
8
+ the original twelve and 63 further models. Twenty-two have been acquired and ten
9
+ are currently selectable in production.
10
+ The 52 deployed files are geometry/texture resources, not 52 models.
11
+
12
+ ## Delivery sequence
13
+
14
+ 1. Diagnose Mosquito In Amber using its unchanged source geometry, textures and
15
+ material properties. Compare released rendering with isolated corrections;
16
+ retain known-bad evidence. Resolve transport/import faults with tests in the
17
+ owning `@plasius/*` package before updating consumers. Do not whiten the
18
+ material, remove transmission, replace the model or hide defects with filtering.
19
+ 2. Retain the excluded Gem research identity for provenance. Do not download or
20
+ substitute it. Verify all eleven retained originals and their source credits.
21
+ 3. Release qualified owning packages through approved main `cd.yml`, consume
22
+ registry versions, and publish the eleven retained first-group models through site CI/CD.
23
+ 4. Process the remaining 63 candidates in seven batches of nine, preserving
24
+ catalogue order. An individual dependency or unresolved licence is explicitly
25
+ held; it must not prevent unrelated candidates being inspected. Batch membership
26
+ and per-model status are version controlled; GitHub Project issues own delivery.
27
+ 5. Only after this original-model pass is available in production, begin a
28
+ separately designed PVOX conversion pass using the existing Plasius voxel
29
+ packages. Preserve original hashes/credits to support source-versus-voxel
30
+ comparisons. No voxel runtime or format is reimplemented here.
31
+
32
+ ## Qualification and publication
33
+
34
+ For every model record source identity, author, licence, original hashes,
35
+ chosen LOD, dependencies, transformations, triangle/texture/memory budgets,
36
+ supported extensions and any animation limitation. Floating Castle still needs
37
+ its upstream scan credits resolved. Large tree source bundles need suitable LODs;
38
+ do not increase existing runtime/download limits merely to admit them.
39
+
40
+ Reuse gpu-shared import/inspection, gpu-renderer, camera and model packages.
41
+ Keep one selected model in flight, cancel stale work and dispose GPU resources.
42
+ Lazy-load selected assets only; catalogue expansion must not download every asset
43
+ or add renderer code to the homepage. Acquisition retains strict hashes, source
44
+ allowlists, timeout, byte limits and bounded concurrency. Original binaries stay
45
+ out of npm packages and private file paths stay out of committed metadata.
46
+
47
+ Before public enablement: compare texture/material/silhouette appearance with
48
+ the source; test completed fixed sampling, progressive refinement, camera reset,
49
+ denoising off/on, errors, teardown, keyboard, 320px layout and UHD admission.
50
+ Record actual dimensions/counts and timings; a completed render is not evidence
51
+ of physical material accuracy or animation playback. Preserve source materials.
52
+
53
+ Tests cover batch identity/completeness, pending and failed assets, integrity,
54
+ cancellation, selection and release-manifest exclusion of unqualified entries.
55
+ Require relevant tests, type/lint/build/package checks, >=80% coverage and every
56
+ changed runtime source in LCOV. Shader coverage retains the standing exception.
57
+
58
+ Production inherits the stored `gpu-demo.scene-fidelity.enabled` feature flag
59
+ and existing GPU-route capability. Source catalogue qualification is distinct
60
+ from rollout authorization. No production environment-variable bypass is added.
61
+ Rollback uses the stored flag/capability and the prior approved deployment.
62
+ Record exact successful CI/CD, production asset hashes and sensitive backend
63
+ secretref mappings before closing any release-bearing item. Keep adaptive
64
+ transport qualification separate; its draft packages are not production inputs.
65
+
66
+ ## Completion evidence
67
+
68
+ This document is the design, not a claim of additional published models. Batch
69
+ tracking must distinguish researched, acquired, imported, visually qualified and
70
+ production-verified counts. Missing/held models keep the overall work open.
71
+
72
+ ## Fixed Amber qualification
73
+
74
+ The [qualification record](amber-fixed-qualification.json) binds the renderer
75
+ source and exact screenshot hashes for the original-source comparison. The
76
+ enclosed insect is now visible without the previous severe dark shell or bands.
77
+ All retained fixture categories completed fixed64 checks; Amber additionally
78
+ completed fixed256 with denoising off/on, camera reset/refinement and native
79
+ 3840×2160 at one sample. These checks do not qualify adaptive transport or claim
80
+ complete cinematic presentation. Production verification remains a separate gate.
81
+
82
+ ## Batch 1 acquisition
83
+
84
+ Six CC0 Poly Haven sources are acquired unchanged: Large Iron Gate, Modular
85
+ Factory Facade, Modular Fort 01, Modular Urban Apartments Facade, Modular Wooden
86
+ Pier and Dandelion 01. Their 60 files total 58,823,648 bytes. Provider MD5/length
87
+ checks and recorded SHA-256 inventories agree; glTF dependency closure is complete.
88
+ `models:download -- 1` selects only this batch; runtime review still loads one
89
+ model at a time. Floating Castle, Thatched Cottage and Diffuse Transmission Plant
90
+ remain outside the acquired set. No additional model is production-qualified by
91
+ this acquisition record.
92
+
93
+ ## Batch 1 inspection
94
+
95
+ The [qualification record](batch-one-qualification.json) records all six source
96
+ models completing fixed64 and native 3840×2160 at one sample. The material reuse
97
+ correction in shared PR150 makes the factory kit usable without duplicating its
98
+ six materials across 263 primitives. Camera and quality controls remain the
99
+ shared inspection APIs. The modular sources remain separate kit pieces; the
100
+ dandelion source contains five plants spread apart. This qualification supports
101
+ source inspection and does not claim assembled environments or cinematic quality.
102
+ Production remains pending registry consumption and approved site deployment.
103
+
104
+ ## Batch 2 acquisition
105
+
106
+ Grass Medium 01, Searsia Lucida, Boulder 01, Coastal Cliff 01 and Dead Tree Trunk
107
+ are acquired unchanged (25 files, 48,818,088 bytes). All five completed fixed64,
108
+ camera reset/refinement and native UHD1 inspection; see
109
+ [batch two evidence](batch-two-qualification.json). The workshop consumes
110
+ published renderer 0.2.51 and shared 1.1.8, including the camera scene-reuse fix.
111
+ Quality changes still reallocate the renderer; dense models can take several seconds.
112
+ Four LOD0 tree sources exceed the unchanged 500,000-triangle limit: Fir Tree 01
113
+ (6,982,937), Island Tree 01 (1,599,403), Jacaranda Tree (3,863,832) and Pine Tree 01
114
+ (17,182,252). These need deliberate LOD preparation before admission; increasing
115
+ the runtime budget or silently replacing their sources is not a qualification.