Extraction provenance

The original Sunjack project was read-only throughout this effort. Its relevant source was copied into this project and adapted here. No runtime module imports the original project.

The extraction manifest is verification/harvest.json. It records the original file hashes and destination files. verification/source-snapshot.json records 174 original project files, excluding the new engine folder, .DS_Store, Git metadata and dependency-install directories. The boundary verifier compares those original files read-only; it does not repair or rewrite them.

Direct extraction and adaptation

OriginalEngine destinationTreatment
vendor/three.module.js and three.core.min.jsvendorThree.js r184 preserved, with the full existing MIT notice also embedded in distributable headers.
js/geometry.jssrc/content/geometry.jsPrimitive batching, rounded geometry and consolidation retained.
js/surfaces.jssrc/content/surfaces.jsProcedural maps/materials retained; global cache removed; explicit library cleanup added.
js/characters.jssrc/content/characters.jsSkeletal construction and animation retained; fabric texture ownership made per actor.
js/bird-models.jssrc/content/birds.jsArticulated model retained; city ambience dependency replaced by bounded model-scale defaults.
js/flags.jssrc/content/flags.jsVisible and depth-pass deformation retained.
js/plasma-sun.jssrc/modules/plasma.jsShaders and coronal geometry retained; resource sets made per instance and fully disposed.
js/water.jssrc/modules/water.jsSource reflection/shading retained; size, level and segment count generalized; neutral wake inputs and cleanup added; reflected camera up vector accounts for orientation.
js/postfx.jssrc/modules/postfx.jsSource HDR, contact shading and bloom pipeline retained; lifecycle disposal added.
js/occlusion-fade.jssrc/modules/occlusion.jsBounded generic box-reveal helper retained.
js/vehicles.jssrc/content/craft.jsDetailed craft variants retained; ferry, terminal and boss factories omitted from this module.
js/ship-turret.jssrc/content/craft-rig.jsArticulation geometry retained; dependency on gameplay motion replaced by local model dimensions.
js/world.jssrc/content/architecture.jsConstruction helpers retained; authored world generation, Citizens integration and campaign logic removed.
js/facades.jssrc/content/facades.jsDetailed facade construction retained.
js/ambience-data.jssrc/content/ambience.jsDeterministic appearance helpers retained; global appearance caches removed. City behavior is not instantiated.
js/rooms.jssrc/content/rooms.jsRoom shader retained; lighting groups replace district-power terminology and group levels are validated.

Derived mechanisms and new implementation

Source features intentionally not incorporated as engine requirements

FeatureDisposition
Sunjack missions, campaign, boss and combat rulesExcluded: application-specific.
Save migration and campaign persistenceExcluded: application-specific; shell does not read/write those keys.
City coordinates, district geography and detailed-section residencyExcluded as authored world policy. New finite terrain uses bounded tiles and frustum culling.
Source fixed-altitude ship movement and planar navigationReplaced for general use by 3D motion and collision services.
Resident schedules, bench reservations, feeding and bird routesExcluded behavior; reusable articulated content retained.
Laundry resident/garment interactionsExcluded authored behavior. Reusable fabric deformation is demonstrated by flags.
Ferry, terminal and boss model factoriesNot included in the public content library; original source is available in the isolated baseline fixture during development. They can be extracted separately if requested.
Source weapon ribbon trails and transient combat-light poolsDeferred as standalone APIs; generic particles and ordinary Three.js lights are available, while weapon-specific state is excluded.
Source camera's combat heuristics and city-specific obstruction rulesExcluded. Generic orbit/follow controls and spatial queries are provided.
Audio/music and game UIExcluded: not established engine requirements.

Baseline evidence

The source suite was executed from tests/.work/source-baseline, entirely inside the engine boundary, and passed 99/99 checks. See verification/source-tests.txt. This is a source baseline, not evidence that the new engine passes those exact gameplay tests.

New engine tests and actual Chrome rendering/lifecycle checks are recorded separately in VERIFICATION.md. Whole-scene pixel identity with Sunjack is not claimed: the shell has different scenes, lighting arrangements and cameras. Source-derived objects and effects were visually inspected and are exercised by browser fixtures.

The one-time tools/harvest.py script documents extraction. Do not rerun it as setup; the completed engine does not need access to its original parent.