# CETRA Lite dependency and model selection — 2026-11-02

Selected runtime: **facefilter 3.4.3 (Jeeliz)** and **three 0.180.0**. Both exact npm metadata records declare no runtime dependencies; package-lock.json pins tarball SHA-512 integrity. Installation uses `npm ci --ignore-scripts`. No third-party install lifecycle scripts are required. Only the selected runtime modules/default model and original licenses are copied into the served app, not upstream demos/assets/other engines.

FaceFilter's npm archive was independently compared against its published SHA-512 integrity. The bundled `neuralNets/NN_DEFAULT.json` is 3,756,740 bytes, SHA-256 **f348ce0fb3b30b8cf27e1666bc56de0c6b1f1b8f02cadc4cd5ca53169534b182**, and byte-identical to the official repository file at commit **6f2695120b992511fd6cb1fd80c600bb957cd08c**. Its npm LICENSE also exactly matches that commit's Apache-2.0 LICENSE. The official README identifies neuralNets as the trained models of this project and gives the project Apache-2.0 terms with commercial use allowed; no separate model exception/restrictive notice was found in the package. This is a publisher license covering the included project model, not merely an unrelated SDK-family license. The model is unmodified. Retain the full license and copyright header; no NOTICE file was found in this exact archive. No proprietary algorithm-hiding or patent investigation is undertaken.

Primary pinned evidence:
- [Publisher model](https://github.com/jeeliz/jeelizFaceFilter/blob/6f2695120b992511fd6cb1fd80c600bb957cd08c/neuralNets/NN_DEFAULT.json)
- [Publisher license](https://github.com/jeeliz/jeelizFaceFilter/blob/6f2695120b992511fd6cb1fd80c600bb957cd08c/LICENSE)
- [Publisher README and license scope](https://github.com/jeeliz/jeelizFaceFilter/blob/6f2695120b992511fd6cb1fd80c600bb957cd08c/README.md#license)
- [Exact npm package metadata](https://registry.npmjs.org/facefilter/3.4.3)
- [Three.js r180 MIT license](https://github.com/mrdoob/three.js/blob/r180/LICENSE)

The npm facefilter gitHead value cannot be resolved in the advertised GitHub repository (404); it is not presented as a verified source-build identity. Instead the independently pinned publisher model/LICENSE byte matches and the authenticated exact npm package establish the selected rights evidence. This does not independently audit training-data title, every contributor's authority, or assert legal clearance. Founder should retain this evidence and original notices with release. No model whose applicable publisher terms remained unidentified was adopted.

Three.js 0.180.0 is MIT, with its full original license retained; no models/assets are pulled from Three demos. Only geometric meshes and system fonts are used. Playwright-core 1.58.2 is a development-only Apache-2.0 browser harness with no npm dependencies; it is excluded from dist. The installed test browser is not part of the app distribution. Node's built-in static server/build/test tools avoid a bundler or server framework dependency tree. No GPL/LGPL native library from the desktop stack is included.

MediaPipe was considered but not selected: existing exact-weight/source/telemetry questions were unresolved and the task requires a verified model route. Its desktop weights/SDK are not used. No claim is made that every MediaPipe browser release is unsuitable. Jeeliz directly supplies Euler head angles and a mouth expression coefficient, so no additional landmark model is needed. This coefficient is not the desktop lip-distance ratio: the UI has a separate adjustable threshold. Motion dead zones, proportional response, signs, per-axis cap, exponential smoothing, calibration and stale-stop behavior are ported from existing CETRA; detector accuracy and pose conventions require real-user acceptance rather than being called identical.

Privacy engineering: the selected runtime has model-loading XMLHttpRequest sites and generic POST helper definitions (no direct calls to those helpers were found), with no fetch/sendBeacon/WebSocket calls found in its selected module; URL literals inspected are project/license references. This is a bounded code review, not a proof against every encoded behavior. Enforced same-origin CSP, no forms/workers/external scripts and a GET/HEAD-only static server prevent external SDK uploads in this build. Browser tests record/deny external requests and use fake camera input, not real faces. No intentional telemetry is introduced. Camera output is handled as a local MediaStream/WebGL texture and never passed to a server API by first-party code. Production hosting must preserve security headers and disclose any hosting logs; real-user/hardware/browser acceptance remains required before public approval.

`dependencies.json` records each exact runtime/model/license hash. Preparation verifies all hashes before copying. Full package metadata, authenticated archive and pinned repository evidence stay in local evidence/ (excluded from Git, as are downloaded models); npm lock + dependencies.json + original license texts are retained in source. `npm run build` includes license texts and this review for recipients.
