@hypersoniclabs/helix-cli 0.1.25-helix3.496 → 0.1.25-helix3.498

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 (56) hide show
  1. package/README.md +3 -3
  2. package/dist/cs2/restyle/command.js +23 -3
  3. package/dist/cs2/restyle/command.js.map +1 -1
  4. package/dist/cs2/restyle/scenePatch.d.ts +7 -0
  5. package/dist/cs2/restyle/scenePatch.js +3 -0
  6. package/dist/cs2/restyle/scenePatch.js.map +1 -1
  7. package/dist/index.js +50 -17
  8. package/dist/index.js.map +1 -1
  9. package/dist/itemPublishVersion.d.ts +3 -3
  10. package/dist/itemPublishVersion.js +10 -9
  11. package/dist/itemPublishVersion.js.map +1 -1
  12. package/dist/itemSetVersion.d.ts +1 -1
  13. package/dist/itemSetVersion.js +4 -4
  14. package/dist/itemSetVersion.js.map +1 -1
  15. package/dist/placements/ground.d.ts +37 -0
  16. package/dist/placements/ground.js +110 -0
  17. package/dist/placements/ground.js.map +1 -0
  18. package/dist/placements/impostors.d.ts +11 -1
  19. package/dist/placements/impostors.js +23 -14
  20. package/dist/placements/impostors.js.map +1 -1
  21. package/dist/placements/snap.d.ts +68 -0
  22. package/dist/placements/snap.js +219 -0
  23. package/dist/placements/snap.js.map +1 -0
  24. package/dist/placements/source.d.ts +1 -1
  25. package/dist/scenePerf/commands.js +25 -3
  26. package/dist/scenePerf/commands.js.map +1 -1
  27. package/dist/tsconfig.build.tsbuildinfo +1 -1
  28. package/dist/vehicle/mintAddOn.js +2 -2
  29. package/dist/vehicle/mintAddOn.js.map +1 -1
  30. package/dist/vehicle/mintVehicle.js +1 -1
  31. package/dist/vehicle/mintVehicle.js.map +1 -1
  32. package/dist/visualQa/command.js +2 -2
  33. package/dist/visualQa/command.js.map +1 -1
  34. package/dist/visualQa/moveUx.js +7 -7
  35. package/dist/visualQa/moveUx.js.map +1 -1
  36. package/dist/visualQa/verdictText.d.ts +1 -1
  37. package/dist/visualQa/verdictText.js +5 -5
  38. package/dist/visualQa/verdictText.js.map +1 -1
  39. package/docs/visual-qa-candidate-versions.md +4 -3
  40. package/docs/visual-qa.md +11 -10
  41. package/package.json +1 -1
  42. package/plugins/beamng-vehicle/bin/__pycache__/beamng_abs.cpython-312.pyc +0 -0
  43. package/plugins/beamng-vehicle/bin/__pycache__/beamng_audio.cpython-312.pyc +0 -0
  44. package/plugins/beamng-vehicle/bin/__pycache__/beamng_engine.cpython-312.pyc +0 -0
  45. package/plugins/beamng-vehicle/bin/__pycache__/beamng_expression.cpython-312.pyc +0 -0
  46. package/plugins/beamng-vehicle/bin/__pycache__/beamng_jbeam.cpython-312.pyc +0 -0
  47. package/plugins/beamng-vehicle/bin/__pycache__/beamng_materials.cpython-312.pyc +0 -0
  48. package/plugins/beamng-vehicle/bin/__pycache__/beamng_stock_events.cpython-312.pyc +0 -0
  49. package/plugins/beamng-vehicle/bin/__pycache__/fmod_studio.cpython-312.pyc +0 -0
  50. package/plugins/beamng-vehicle/bin/__pycache__/fsb5.cpython-312.pyc +0 -0
  51. package/plugins/beamng-vehicle/bin/__pycache__/sim_audio.cpython-312.pyc +0 -0
  52. package/plugins/beamng-vehicle/bin/__pycache__/sim_audio_ac.cpython-312.pyc +0 -0
  53. package/plugins/beamng-vehicle/bin/__pycache__/sim_audio_beamng.cpython-312.pyc +0 -0
  54. package/plugins/beamng-vehicle/bin/__pycache__/sim_audio_fixtures.cpython-312.pyc +0 -0
  55. package/plugins/beamng-vehicle/bin/__pycache__/test_beamng_engine.cpython-312.pyc +0 -0
  56. package/plugins/beamng-vehicle/bin/__pycache__/test_sim_audio.cpython-312.pyc +0 -0
package/README.md CHANGED
@@ -71,9 +71,9 @@ The token is stored in `~/.helix/credentials.json` (mode `600`). It's sent as
71
71
  | `helix item list-slots [--json]` | Print the Character-Creator vocabulary a wearable declares: the cosmetic slot tags, and the genders. |
72
72
 
73
73
  | `helix item distribution create\|list\|update\|disable …` | Manage Marketplace/World Claim or Buy routes without republishing the item or paying another publish fee. |
74
- | `helix item visual-qa <item-id> [--submit] [--local-critic] [--storage-state <file>] [--host <id…>]` | Render the item's current package version headless in the real runtime (test-grounds world for vehicles and whole avatars, the customiser for add-ons and wearables on every declared host/base, the item viewer for props), measure it, and with `--submit` record the backend's verdict (numeric asserts + vision critic) against that exact version. **Marketplace/Vault listing, distributions and version moves on a public item require a pass.** See [docs/visual-qa.md](docs/visual-qa.md). |
75
- | `helix item visual-qa <item-id> --package-version <v> [--vehicle-package <file>]` | Render a version the item is **not pinned to yet**, so a refused version move can pass the gate before the pointer moves. Vehicles and avatars go through Try Now (vehicles also need the move's vehicle package), add-ons and wearables through the customiser; the bundle names the candidate, and the vehicle checksum is the one the server minted for that trial. Never falls back to the current version. See [docs/visual-qa-candidate-versions.md](docs/visual-qa-candidate-versions.md). With `--submit`, a PASS prints the next command (`helix item set-version …`); a 403 for a non-creator says so on the first line; `--status` also lists the item's pending (sealed, not current) versions. |
76
- | `helix item set-version <item-id> --package-version <v> --reason <text> [--expected-current-version-id <uuid>] [--as-admin] [--json]` | Move an item to a sealed Package Version of its own package (pin resolved from the public Package API; `POST /api/v1/universal-items/<id>/versions`). The flow for a **listed** item: `continuum publish-package` seals vN → `item visual-qa <id> --package-version vN --submit` → `item set-version`. A refusal prints the server's message first (it names the next command), then the remedy and any hosted render it queued. An unknown version lists the sealed ones. A **vehicle** moves its car with the pin: the version's sealed root (role `vehicle-definition`) is verified against the manifest and sent as `vehiclePackage`, the same rider `vehicle publish --item` sends; a version without one is refused with a pointer to that resume. A version the item **already had** is a rollback: `PUT /api/v1/universal-items/<id>/versions/current { revision, reason }` (the server restores that revision's retained `vehiclePackage`; a pin-only revision has none and is refused). `--as-admin` (platform admins, for an item another account created) posts the same body to `POST /api/v1/admin/universal-items/<id>/versions`: same gates (visual QA included, no override), `--reason` recorded with you as the actor. |
74
+ | `helix item visual-qa <item-id> [--submit] [--local-critic] [--storage-state <file>] [--host <id…>]` | Render the item's current package version headless in the real runtime (test-grounds world for vehicles and whole avatars, the customiser for add-ons and wearables on every declared host/base, the item viewer for props), measure it, and with `--submit` record the backend's verdict (numeric asserts + vision critic) against that exact version. **The visual check is advisory: it records notes with fix hints and never gates listing, distributions or version moves. Only a technical failure (an unusable file, with its plain reason) or content safety blocks.** See [docs/visual-qa.md](docs/visual-qa.md). |
75
+ | `helix item visual-qa <item-id> --package-version <v> [--vehicle-package <file>]` | Render a version the item is **not pinned to yet** and record advisory notes for it before (or after) the pointer moves; the move itself never waits on it. Vehicles and avatars go through Try Now (vehicles also need the move's vehicle package), add-ons and wearables through the customiser; the bundle names the candidate, and the vehicle checksum is the one the server minted for that trial. Never falls back to the current version. See [docs/visual-qa-candidate-versions.md](docs/visual-qa-candidate-versions.md). With `--submit`, a PASS prints the next command (`helix item set-version …`) for a version not moved yet; a 403 for a non-creator says so on the first line; `--status` also lists the item's pending (sealed, not current) versions. |
76
+ | `helix item set-version <item-id> --package-version <v> --reason <text> [--expected-current-version-id <uuid>] [--as-admin] [--json]` | Move an item to a sealed Package Version of its own package (pin resolved from the public Package API; `POST /api/v1/universal-items/<id>/versions`). The flow for a **listed** item: `continuum publish-package` seals vN → `item set-version`; the visual check is advisory and never gates the move. A refusal (a technical failure or content safety) prints the server's plain reason first, then the remedy. An unknown version lists the sealed ones. A **vehicle** moves its car with the pin: the version's sealed root (role `vehicle-definition`) is verified against the manifest and sent as `vehiclePackage`, the same rider `vehicle publish --item` sends; a version without one is refused with a pointer to that resume. A version the item **already had** is a rollback: `PUT /api/v1/universal-items/<id>/versions/current { revision, reason }` (the server restores that revision's retained `vehiclePackage`; a pin-only revision has none and is refused). `--as-admin` (platform admins, for an item another account created) posts the same body to `POST /api/v1/admin/universal-items/<id>/versions`: same gates (visual QA included, no override), `--reason` recorded with you as the actor. |
77
77
  | `helix item thumbnail refresh <item-id> [--force] [--dry-run] [--json]` | Re-render a published item's canonical thumbnail from its **active Package Version** with the standard server renderer (`POST /api/v1/universal-items/<id>/thumbnail/regenerate`, owner or admin). Prints the status (`generated` / `current` / `dry-run`), old -> new thumbnail URL, renderer version and the source lane + Package Version. `--dry-run` writes nothing; `--force` re-renders even when the stored thumbnail is current. Moving an item to a new Package Version now refreshes the thumbnail automatically unless you uploaded one. An older backend answers 404 and the CLI says it does not support thumbnail refresh yet. Not the world `helix thumbnail set <slug>` command. |
78
78
  | `helix item thumbnail set <item-id> <image> [--json]` | Upload your own thumbnail (png/jpg/webp, up to 10 MiB, checked locally) for a published item (`PUT /api/v1/universal-items/<id>/thumbnail`, moderated). A creator upload stays in place across version moves until you run `thumbnail refresh --force`. 403 = you are not the item's owner. |
79
79
  | `helix device create <dir> --id <slug> --title <t> --model <mesh.glb> --template standing-desk\|clock\|television` | Scaffold a GLB-backed `helix.device/1` definition, including the interactive TV/media-player template. There is intentionally no website Device editor. |
@@ -48,6 +48,8 @@ function registerCityRoadsRestyleCs2(city, fail) {
48
48
  .option('--scene <file>', 'a sealed Scene v2 document whose roads.* elements are replaced by the restyled cells (and the city material library added)')
49
49
  .option('--terrain <dir>', 'terrain source folder to carve under the roads at every stride the engine draws it at (default: the folder beside --scene when it holds terrain.json); written to <out>/terrain')
50
50
  .option('--no-carve', 'leave the terrain as it is')
51
+ .option('--placements <dir>', 'placements bake (placements.json + objects/) to re-seat on the carved terrain (default: placements/ beside --scene); written to <out>/placements')
52
+ .option('--no-snap-placements', 'leave the placements at the heights they were baked at (trees at the cut rims will float or sink)')
51
53
  .option('--engine-asphalt', 'keep the engine\'s own asphalt textures (calibrated to the engine goldens\' lighting) instead of the CS2 calibration for the Granit shell\'s lighting')
52
54
  .option('--library <dir>', 'city material library pack (default: the CLI\'s own assets/city-materials/v1)')
53
55
  .option('--collider-max-triangles <n>', 'collider triangle budget per cell', '60000')
@@ -83,18 +85,36 @@ function registerCityRoadsRestyleCs2(city, fail) {
83
85
  const surfaces = await readRoadSurfaces(resolve(roadsDir), (message) => console.error(message));
84
86
  terrain = await carveTerrainFolder(terrainSource, join(out, 'terrain'), surfaces);
85
87
  }
88
+ // The carve moved the ground after the trees were seated on it. Re-seat every placement on the FINAL terrain at its finest stride.
89
+ let snap;
90
+ const placementsSource = !terrain || !opts.snapPlacements ? undefined : opts.placements ? resolve(opts.placements)
91
+ : opts.scene && existsSync(join(dirname(resolve(opts.scene)), 'placements', 'placements.json')) ? join(dirname(resolve(opts.scene)), 'placements') : undefined;
92
+ const snapped = placementsSource ? join(out, 'placements') : undefined;
93
+ if (placementsSource && snapped) {
94
+ const { lstat, rm } = await Promise.resolve().then(() => __importStar(require('node:fs/promises')));
95
+ // A previous run linked the source placements here as a symlink: drop the link, never write through it.
96
+ if (await lstat(snapped).then((info) => info.isSymbolicLink() || existsSync(join(snapped, 'placements.json')), () => false)) {
97
+ if (!opts.force)
98
+ fail(`✖ ${snapped} already exists - pass --force to replace it`);
99
+ await rm(snapped, { recursive: true, force: true });
100
+ }
101
+ const { readGroundSampler } = await Promise.resolve().then(() => __importStar(require('../../placements/ground')));
102
+ const { snapPlacementsBake } = await Promise.resolve().then(() => __importStar(require('../../placements/snap')));
103
+ snap = (await snapPlacementsBake(placementsSource, snapped, { ground: await readGroundSampler(join(out, 'terrain')) })).report;
104
+ }
86
105
  let scene;
87
106
  if (opts.scene) {
88
107
  const { patchSceneRoads } = await Promise.resolve().then(() => __importStar(require('./scenePatch')));
89
- scene = await patchSceneRoads({ sceneFile: resolve(opts.scene), out, ...(opts.library ? { library: resolve(opts.library) } : {}), ...(opts.engineAsphalt ? { engineAsphalt: true } : {}), ...(terrain ? { terrainDir: join(out, 'terrain') } : {}) });
108
+ scene = await patchSceneRoads({ sceneFile: resolve(opts.scene), out, ...(opts.library ? { library: resolve(opts.library) } : {}), ...(opts.engineAsphalt ? { engineAsphalt: true } : {}), ...(terrain ? { terrainDir: join(out, 'terrain') } : {}), ...(snap && snapped ? { placementsDir: snapped } : {}) });
90
109
  }
91
110
  const seconds = ((Date.now() - started) / 1000).toFixed(0);
92
111
  if (opts.json) {
93
- console.log(JSON.stringify({ report, ...(terrain ? { terrain } : {}), ...(scene ? { scene } : {}) }, null, 2));
112
+ console.log(JSON.stringify({ report, ...(terrain ? { terrain } : {}), ...(snap ? { placements: snap } : {}), ...(scene ? { scene } : {}) }, null, 2));
94
113
  return;
95
114
  }
96
115
  const { formatRestyleReport, formatTerrainCarveReport } = await Promise.resolve().then(() => __importStar(require('./format')));
97
- console.log(`✔ ${target}\n${formatRestyleReport(report)}${terrain ? `\n${formatTerrainCarveReport(terrain)}` : ''}${scene ? `\n scene ${scene.sceneFile} (${scene.validation}${scene.libraryOverridden.length ? `; library: ${scene.libraryOverridden.join(', ')} calibrated for CS2` : ''})` : ''}\n ${seconds} s`);
116
+ const { formatSnapReport } = await Promise.resolve().then(() => __importStar(require('../../placements/snap')));
117
+ console.log(`✔ ${target}\n${formatRestyleReport(report)}${terrain ? `\n${formatTerrainCarveReport(terrain)}` : ''}${snap ? `\n${formatSnapReport(snap)}` : ''}${scene ? `\n scene ${scene.sceneFile} (${scene.validation}${scene.libraryOverridden.length ? `; library: ${scene.libraryOverridden.join(', ')} calibrated for CS2` : ''})` : ''}\n ${seconds} s`);
98
118
  }
99
119
  catch (error) {
100
120
  fail(`✖ ${error instanceof Error ? error.message : String(error)}`);
@@ -1 +1 @@
1
- {"version":3,"file":"command.js","sourceRoot":"","sources":["../../../src/cs2/restyle/command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../../../src/cs2/restyle/command.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,8 @@ export interface PatchSceneRoadsInput {
9
9
  engineAsphalt?: boolean;
10
10
  /** A carved terrain source folder (`terrainCarve.ts`) that replaces the document's terrain heights and normal maps; its files are the bundle's `terrain/`. */
11
11
  terrainDir?: string;
12
+ /** A placements bake (`placements.json` + `objects/`) that replaces the document's placements: the trees re-seated on the carved terrain (`placements/snap.ts`). Its files are the bundle's `placements/`. */
13
+ placementsDir?: string;
12
14
  }
13
15
  export interface PatchSceneRoadsResult {
14
16
  sceneFile: string;
@@ -29,6 +31,11 @@ export interface PatchSceneRoadsResult {
29
31
  };
30
32
  /** Terrain resources whose bytes changed (heights and normal maps of the tiles and the coarse layer the carve rewrote). */
31
33
  terrainResourcesUpdated?: number;
34
+ /** Placements resources swapped for the snapped bake's (files added, files the old declaration owned and the new one does not). */
35
+ placements?: {
36
+ added: number;
37
+ removed: number;
38
+ };
32
39
  /** Library slots that are not the engine's textures (the CS2 asphalt calibration). */
33
40
  libraryOverridden: string[];
34
41
  /** Siblings of the source document linked into `out` so it can serve as a `--base` folder. */
@@ -13,6 +13,7 @@ const compiler_1 = require("../../sceneElements/compiler");
13
13
  const materials_1 = require("../../city/assemble/materials");
14
14
  const library_1 = require("./library");
15
15
  const source_1 = require("../../terrain/source");
16
+ const snap_1 = require("../../placements/snap");
16
17
  /** `roads` is the near cells; `roadlod` is the far layer (an element of its own, so the ids never collide). */
17
18
  const isRoadId = (id) => id === 'roads' || id.startsWith('roads.') || id === 'roadlod' || id.startsWith('roadlod.');
18
19
  const MIB = 1024 * 1024;
@@ -154,6 +155,7 @@ async function patchSceneRoads(input) {
154
155
  { id: 'ext.city-materials', extension: 'web.city-materials/1', runtime: 'web', targetNodes: [], required: false, fallback: 'portable', parameters: { version: 1, library: library.manifestResourceId } },
155
156
  ];
156
157
  const terrainResourcesUpdated = input.terrainDir ? patchTerrain(scene, input.terrainDir) : undefined;
158
+ const placements = input.placementsDir ? (0, snap_1.replaceScenePlacements)(scene, input.placementsDir) : undefined;
157
159
  scene.resources.sort((a, b) => (a.id < b.id ? -1 : a.id > b.id ? 1 : 0));
158
160
  scene.revision = (0, helix_manifest_1.computeSceneDocumentIntegrity)({ ...scene, integrity: { sha256: '0'.repeat(64) } }).slice(0, 16);
159
161
  scene.integrity = { sha256: (0, helix_manifest_1.computeSceneDocumentIntegrity)(scene) };
@@ -181,6 +183,7 @@ async function patchSceneRoads(input) {
181
183
  removed,
182
184
  added: { resources: newResources.length, nodes: newNodes.length, streamGroups: newGroups.length, collisionSets: newSets.length, libraryResources: library.resources.length },
183
185
  ...(terrainResourcesUpdated === undefined ? {} : { terrainResourcesUpdated }),
186
+ ...(placements ? { placements } : {}),
184
187
  libraryOverridden: pack.overridden,
185
188
  linked: await linkSiblings(input.sceneFile, input.out),
186
189
  };
@@ -1 +1 @@
1
- {"version":3,"file":"scenePatch.js","sourceRoot":"","sources":["../../../src/cs2/restyle/scenePatch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scenePatch.js","sourceRoot":"","sources":["../../../src/cs2/restyle/scenePatch.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1130,7 +1130,7 @@ vehicleCommand
1130
1130
  .description('Publish a vehicle package directory: validate (package, GLB, host manifest, audio), upload the model and samples, seal a '
1131
1131
  + 'public Vehicle Package whose root pins them, make the vehicle Item from that exact Version, and read it back (pin, package '
1132
1132
  + 'identity, mesh pin, every audio URL, and the host board: hostKind vehicle, sockets, tunable paths). Resumable from '
1133
- + '<dir>/.helix-publish/ledger.json. With --item: seal a STAGED new Version of that car and move it (visual QA gates the move). '
1133
+ + '<dir>/.helix-publish/ledger.json. With --item: seal a STAGED new Version of that car and move it (the visual check is advisory and never gates the move). '
1134
1134
  + 'Directory: vehicle-package.json + model.glb (asset.extras.HELIX_vehicle with sockets) + WAVs; optional publish.json '
1135
1135
  + '{ title, description, tags, version, contentRating, provenance, hostGrantExtensions }. '
1136
1136
  + 'Exit 0 = published and verified, 1 = a check or read-back failed, 2 = could not run')
@@ -1241,7 +1241,7 @@ vehicleAddOnCommand
1241
1241
  + 'Package (root: the helix.vehicle-addon-definition/1 JSON; a tune-only part seals no model), make the add-on Item from that exact '
1242
1242
  + 'Version, and read it back: pinned, the backend fit lists every host, every host\'s add-on rail lists it. No offer is opened. '
1243
1243
  + 'A CHANGED part is a new Version of the SAME Item: --package-version <semver> with --item <id> (or in the directory that first published it) '
1244
- + 'seals a staged Version and moves the Item to it (visual QA gates a listed meshed part; re-run the same command to finish the move); '
1244
+ + 'seals a staged Version and moves the Item to it (the visual check is advisory and never gates the move; re-run the same command to retry one the server refused); '
1245
1245
  + 'sealing a version name that already holds different bytes is refused. --dry-run also runs the seal-side validation '
1246
1246
  + '(provenance.source <= 256 chars, contentRating, Package shape, version clash). '
1247
1247
  + 'Resumable from <dir>/.helix-publish/ledger.json. Exit 0 = published and verified, 1 = a check or read-back failed, 2 = could not run')
@@ -2032,9 +2032,8 @@ itemThumbnail
2032
2032
  }
2033
2033
  });
2034
2034
  // Ship a corrected mesh onto an already-published GLB add-on/prop/avatar IN PLACE: seal a new Version of the item's
2035
- // own Continuum Package, then move the item pointer. On a listed item the move is refused by the visual-QA gate (the
2036
- // sealed Version stays behind), and the refusal names the two finishing steps: `item visual-qa --package-version vN
2037
- // --submit`, then `item set-version`. This is step 1 of `VERSION_MOVE_FLOW_HELP`.
2035
+ // own Continuum Package, then move the item pointer. The visual check is advisory and never gates the move; a refusal
2036
+ // (technical failure or content safety) leaves the sealed Version behind and says why. See `VERSION_MOVE_FLOW_HELP`.
2038
2037
  item
2039
2038
  .command('publish-version')
2040
2039
  .description('Ship a corrected mesh onto an already-published GLB add-on/prop/avatar, IN PLACE — new Package Version, same item id/owner/listings; every existing owner gets it at their next spawn')
@@ -2069,7 +2068,7 @@ item
2069
2068
  return;
2070
2069
  }
2071
2070
  console.log(`✔ Sealed ${result.packageId}@${result.version} — a new Version of ${itemId} (manifest ${result.manifestCid}).`);
2072
- console.log(` The move is gated by visual QA; the seal is left in place and is reused by a retry with the same mesh.`);
2071
+ console.log(` The item was not moved; the seal is left in place and is reused by a retry with the same mesh.`);
2073
2072
  if (result.refusal)
2074
2073
  console.log((0, itemSetVersion_1.renderSetVersionError)(result.refusal));
2075
2074
  process.exitCode = 1;
@@ -2078,16 +2077,16 @@ item
2078
2077
  fail(error instanceof lib_1.ApiError ? error.render() : `✖ ${error instanceof Error ? error.message : String(error)}`);
2079
2078
  }
2080
2079
  });
2081
- // Move a (listed) item to an already-sealed Package Version of its own package. The visual-QA gate refuses the move
2082
- // until that version has a passing run; a refusal prints the server's message first because it names the next command.
2080
+ // Move a (listed) item to an already-sealed Package Version of its own package. The visual check is advisory and never
2081
+ // gates the move; a refusal (technical failure or content safety) prints the server's plain reason first.
2083
2082
  item
2084
2083
  .command('set-version')
2085
- .description('Move an item to a sealed Package Version of its own package (the version-move step after `item visual-qa --package-version <v> --submit` passed). A vehicle moves its car with the pin: the version\'s sealed vehicle definition is sent as properties.vehiclePackage (refused if the version has none). A version the item already had is a rollback (PUT versions/current), so moving back to an older version works too')
2084
+ .description('Move an item to a sealed Package Version of its own package (the visual check is advisory and never gates the move; only a technical failure or content safety refuses it). A vehicle moves its car with the pin: the version\'s sealed vehicle definition is sent as properties.vehiclePackage (refused if the version has none). A version the item already had is a rollback (PUT versions/current), so moving back to an older version works too')
2086
2085
  .argument('<item-id>', 'universal item UUID')
2087
2086
  .requiredOption('--package-version <version>', 'the sealed version to move to, e.g. 1.0.12')
2088
2087
  .requiredOption('--reason <text>', 'required, lands in the audit ledger')
2089
2088
  .option('--expected-current-version-id <uuid>', 'refuse if the item has moved off this Package Version since you last read it')
2090
- .option('--as-admin', 'platform admins only: move an item another account created (POST /api/v1/admin/universal-items/<id>/versions). Same gates as the creator move, including visual QA; --reason is recorded with you as the actor')
2089
+ .option('--as-admin', 'platform admins only: move an item another account created (POST /api/v1/admin/universal-items/<id>/versions). Same gates as the creator move (technical failure, content safety); --reason is recorded with you as the actor')
2091
2090
  .option('--json', 'machine-readable output')
2092
2091
  .addHelpText('after', moveUx_1.VERSION_MOVE_FLOW_HELP)
2093
2092
  .action(async (itemId, opts) => {
@@ -2289,16 +2288,16 @@ function initialDistributionInputFromPackFlags(opts) {
2289
2288
  // Distinct from `item distribution disable` below: a distribution is ONE
2290
2289
  // acquisition route (you can have several); delist takes the whole item
2291
2290
  // definition off browse/marketplace regardless of how many routes it has.
2292
- // Visual QA: the publish/listing gate judges an item RENDERED, in the real runtime, not its numbers. This command is
2291
+ // Visual QA: an advisory check that looks at an item RENDERED, in the real runtime, not its numbers; it never gates. This command is
2293
2292
  // the harness: it renders the item's current package version headless (test-grounds world for vehicles, the
2294
2293
  // customiser for add-ons and wearables, the item viewer for props), measures it, and with --submit hands it to the
2295
- // backend, which runs the vision critic, records the verdict against that exact version and serves a contact sheet.
2294
+ // backend, which records the advisory notes against that exact version and serves a contact sheet.
2296
2295
  item
2297
2296
  .command('visual-qa')
2298
- .description('Render an item headless in the real HELIX runtime, measure it, and (with --submit) record the visual-QA verdict that Marketplace/Vault listing requires. --hosted asks the platform to render it on a GPU runner instead')
2297
+ .description('Render an item headless in the real HELIX runtime, measure it, and (with --submit) record the advisory visual-QA notes (never a gate on publishing, listing or moving; only an unusable file or content safety blocks). --hosted asks the platform to render it on a GPU runner instead')
2299
2298
  .argument('[item-id]', 'universal item UUID (its CURRENT package version is rendered, or --package-version); omit with --hosted-worker')
2300
2299
  .option('--submit', 'submit frames + measurements to the backend, which judges and records the verdict (needs `helix login`)')
2301
- .option('--hosted', 'queue a hosted render on the platform GPU runner and wait for the verdict (needs `helix login`; exit 0 pass, 0 warn (an avatar judged with generator-limit warnings only: released privately, `verdict: "warn"` + `warnings` in --json), 1 fail, 2 error)')
2300
+ .option('--hosted', 'queue a hosted render on the platform GPU runner and wait for the verdict (needs `helix login`; exit 0 pass, 0 warn (advisory notes only: `verdict: "warn"` + `warnings` in --json), 1 fail (notes, never a gate), 2 error)')
2302
2301
  .option('--retry', 'with --hosted: REQUEUE this version after a failed, errored or exhausted hosted run (a fresh job, attempts start again; inside the backend cooldown it waits it out, up to --timeout)')
2303
2302
  .option('--no-wait', 'with --hosted: queue the render and return without waiting')
2304
2303
  .option('--timeout <minutes>', 'with --hosted: how long to wait for the verdict', '30')
@@ -2404,7 +2403,7 @@ item
2404
2403
  else if (!req.job)
2405
2404
  console.log(`✖ nothing queued${req.skipped ? ` (${req.skipped})` : ''}${req.message ? `: ${req.message}` : ''}`);
2406
2405
  else if (req.skipped === 'warned_run')
2407
- console.log(`! this version already has a WARN run (judged, nothing blocks; released privately with warnings): nothing to re-queue. Read the warnings with: helix item visual-qa ${id} --status`);
2406
+ console.log(`! this version already has a WARN run (advisory notes only, nothing blocks): nothing to re-queue. Read the warnings with: helix item visual-qa ${id} --status`);
2408
2407
  else if (req.skipped)
2409
2408
  console.log(`✖ not re-queued (${req.skipped})${req.message ? `: ${req.message}` : ''}${req.retryAfter ? ` Retry after ${req.retryAfter}.` : ''} Showing the existing job: ${hosted.describeJob(req.job)}`);
2410
2409
  else
@@ -2479,12 +2478,12 @@ item
2479
2478
  if (outcome.server?.contactSheetUrl)
2480
2479
  console.log(` recorded: ${outcome.server.contactSheetUrl}`);
2481
2480
  if (!opts.submit)
2482
- console.log(' (local run only — add --submit to record the verdict the listing gate checks)');
2481
+ console.log(' (local run only — add --submit to record the advisory notes; nothing waits on them)');
2483
2482
  for (const line of (0, moveUx_1.nextStepAfterPass)({ itemId: id, packageVersion: outcome.bundle.item.packageVersion, candidate: !!outcome.candidate, submitted: !!outcome.server, verdict: outcome.verdict, vehiclePackageFile: opts.vehiclePackage }))
2484
2483
  console.log(line);
2485
2484
  console.log(` ${(outcome.timings.totalMs / 1000).toFixed(1)} s (render ${(outcome.timings.renderMs / 1000).toFixed(1)} s)`);
2486
2485
  }
2487
- // pass 0 · warn 0 (an avatar judged with generator-limit warnings: released privately, nothing blocks) · fail 1 · error 2
2486
+ // pass 0 · warn 0 (advisory notes only, nothing blocks) · fail 1 · error 2
2488
2487
  process.exitCode = (await Promise.resolve().then(() => __importStar(require('./visualQa/verdictText')))).exitCodeForVerdict(outcome.verdict);
2489
2488
  }
2490
2489
  catch (error) {
@@ -6454,6 +6453,40 @@ placements.command('attach-foliage-lods').argument('<scene>', 'local sealed Scen
6454
6453
  fail(error instanceof Error ? error.message : String(error));
6455
6454
  }
6456
6455
  });
6456
+ placements.command('snap-to-terrain').argument('<dir>', 'validated placements bake (placements.json + objects/)')
6457
+ .description('Re-seat every placement on the final terrain: re-sample each record\'s ground at the finest stride (after any carve), rewrite the region files and distant tree pages that moved, copy the rest')
6458
+ .requiredOption('--terrain <dir>', 'the FINAL terrain source folder (terrain.json, tiles/, coarse.*): for a CS2 city, the carved <out>/terrain')
6459
+ .requiredOption('--out <dir>', 'new placements bake folder')
6460
+ .option('--scene <file>', 'sealed Scene v2 document to re-point at the snapped bake; needs --scene-out. <out> must be the document\'s placements/ folder')
6461
+ .option('--scene-out <file>', 'where to write the re-pointed, resealed document')
6462
+ .option('--embed <metres>', 'how far a trunk sits in the ground', '0.03')
6463
+ .option('--max-elevated <metres>', 'a base further above the ground than this stands on a roof or deck and keeps its height', '3')
6464
+ .option('--json', 'machine-readable report')
6465
+ .action(async (directory, options) => {
6466
+ try {
6467
+ if (Boolean(options.scene) !== Boolean(options.sceneOut))
6468
+ fail('✖ --scene and --scene-out go together');
6469
+ const embedMetres = Number(options.embed), maxElevatedMetres = Number(options.maxElevated);
6470
+ if (!(embedMetres >= 0 && embedMetres < 1) || !(maxElevatedMetres > 0))
6471
+ fail('✖ --embed must be 0 to 1 m and --max-elevated above 0');
6472
+ const { readGroundSampler } = await Promise.resolve().then(() => __importStar(require('./placements/ground')));
6473
+ const { snapPlacementsBake, formatSnapReport, replaceScenePlacements, sealScene } = await Promise.resolve().then(() => __importStar(require('./placements/snap')));
6474
+ const { report } = await snapPlacementsBake((0, node_path_1.resolve)(directory), (0, node_path_1.resolve)(options.out), { ground: await readGroundSampler((0, node_path_1.resolve)(options.terrain)), embedMetres, maxElevatedMetres });
6475
+ let scene;
6476
+ if (options.scene && options.sceneOut) {
6477
+ const document = JSON.parse((0, node_fs_1.readFileSync)((0, node_path_1.resolve)(options.scene), 'utf8'));
6478
+ replaceScenePlacements(document, (0, node_path_1.resolve)(options.out));
6479
+ document.resources.sort((a, b) => (a.id < b.id ? -1 : a.id > b.id ? 1 : 0));
6480
+ const sealed = sealScene(document);
6481
+ (0, node_fs_1.writeFileSync)((0, node_path_1.resolve)(options.sceneOut), `${JSON.stringify(sealed, null, 2)}\n`);
6482
+ scene = { sceneFile: (0, node_path_1.resolve)(options.sceneOut), revision: sealed.revision };
6483
+ }
6484
+ console.log(options.json ? JSON.stringify({ report, ...(scene ? { scene } : {}) }, null, 2) : `\u2714 ${(0, node_path_1.resolve)(options.out)}\n${formatSnapReport(report)}${scene ? `\n scene ${scene.sceneFile}` : ''}`);
6485
+ }
6486
+ catch (error) {
6487
+ fail(`✖ ${error instanceof Error ? error.message : String(error)}`);
6488
+ }
6489
+ });
6457
6490
  placements.command('inspect').argument('<dir>', 'baked placements source folder').option('--json', 'machine-readable report')
6458
6491
  .action(async (dir) => {
6459
6492
  try {