# Procedencia del motor Stockfish 18 smallnet

## Artefactos activos

- `lib/sf_18_smallnet.ae80571975ad.js`
  - SHA-256: `AE80571975ADDCB01582DBA1AF19E9F4C11DECB0F2D98309D9CDB8E6978CAB18`
- `lib/sf_18_smallnet.c36d35b35c6f.wasm`
  - SHA-256: `C36D35B35C6F2A99B0D5535171844EF6E4E9A983D58C66BF4411152EAC486784`
- `lib/nn-4ca89e4b3abf.nnue`
- `lib/sf_18_worker.20a33d94d157.js`
  - Adaptador Worker publicado bajo AGPL-3.0-or-later.
  - SHA-256: `20A33D94D157082D3CD9CB0D42100E76F011A26EC595632B6F6DC110E26AA0A2`.

## Origen verificado

El WASM coincide byte por byte con `sf_18_smallnet.wasm` del paquete
`@lichess-org/stockfish-web` 0.3.0.

- npm: https://www.npmjs.com/package/@lichess-org/stockfish-web/v/0.3.0
- repositorio: https://github.com/lichess-org/stockfish-web
- gitHead npm: `8cf4f1249951fc9f52b71f2ffe8176f3a8bb5437`
- fuente exacta: https://github.com/lichess-org/stockfish-web/tree/8cf4f1249951fc9f52b71f2ffe8176f3a8bb5437
- base declarada de Stockfish 18: `cb3d4ee9`, etiqueta `sf_18`.
- red neuronal declarada: `nn-4ca89e4b3abf.nnue`.
- licencia declarada en `package.json`: AGPL-3.0-or-later.
- el archivo `LICENSE` de esa revisión contiene el texto de GNU GPLv3 y se
  conserva sin alteración dentro del archivo de fuente original.
- archivo de fuente conservado:
  `source-offer/stockfish-web-8cf4f1249951-source.tar.gz`.
- SHA-256 del archivo de fuente:
  `55D1E35C5FDFD53EE7368C9FF7145AC10A676EA0E4A75CDF2FF5F3D8C2660ED7`.

## Modificaciones locales del JavaScript generado

El archivo JS deriva de `sf_18_smallnet.js` de ese paquete. Se hicieron cambios
mínimos para ejecutarlo mediante un Worker clásico:

1. `import.meta.url` se sustituyó por una resolución compatible con
   `self.location.href` o `document.currentScript.src`.
2. Las dos construcciones `new URL(..., import.meta.url)` usan la misma base
   compatible.
3. La exportación ESM se sustituyó por `self.Stockfish = Sf_18_Smallnet_Web`.

`source-offer/apply-silicio-worker-compat.mjs` aplica esas tres adaptaciones de
forma reproducible y comprueba que el resultado tenga exactamente el SHA-256
del archivo activo. También puede compararse el resultado con el archivo
publicado mediante `git diff --no-index`.

## Frontera con la aplicación

El motor se ejecuta dentro de un Worker independiente. El resto de la
aplicación intercambia cadenas del protocolo UCI mediante `postMessage`; no
incorpora el código del motor dentro de SilicioRules o SilicioBoard.

Se publica como parte del componente abierto el motor, el JavaScript derivado y
el adaptador `sf_18_worker.20a33d94d157.js`. Los controladores de interfaz del
sitio no se declaran parte de Stockfish. La suficiencia jurídica de esta
separación debe validarse sobre el paquete comercial final.

Debido a la diferencia entre el identificador del manifiesto y el texto
`LICENSE` incluido por el proveedor, Ajedrez de Silicio aplica de manera
conservadora AGPL-3.0-or-later a sus adaptaciones publicadas y ofrece la fuente
correspondiente, sin eliminar ni reinterpretar la evidencia GPLv3 de origen.

## Oferta de fuente

`source-offer/` conserva la licencia, metadatos, una copia del archivo JS
original y la transformación local reproducible. El archivo comprimido del
repositorio oficial en la revisión indicada contiene scripts, parches y
referencias reproducibles para obtener y compilar la fuente correspondiente.

La carpeta histórica `src/` de `stockfish.wasm-master` pertenece a un port
anterior y no debe presentarse como fuente correspondiente del binario SF18.
