GSUN-3 (dos tercios para pagar del tesoro, commit anterior) entra con sus pesos medidos.
- scripts/bench/certificados/2026-11-02-spec21-laurha.rs: el fundido de Laurha
(sha256 03fbaf72), el máximo de 5 procesos en el santuario de la rp1 sobre el wasm de banco
6f75bb59. Control negativo de Laurha: en el mínimo, las 14 que no cambian quedan entre
0,990 y 1,002.
- weights.rs: submit_treasury_proposal, finalize_proposal y finalize_override cambian de
esqueleto (leen y escriben TreasurySupermajorityOf). Se les puso el bloque del certificado y
luego se ensamblaron los cuatro certificados. --comprobar coincide, y ningún peso baja
respecto a spec 20.
- Cola de cast_vote: 130,07 µs de un solo proceso. Se cobra; sobre spec 20 (127,72) es un +1,8 %.
- E2E (rv17_tesoro.py) paso 2e: busca el bloque del upgrade sólo dentro de la ventana de estado
del nodo (~256 bloques), o lo toma de ORIGIN_BLOQUE_UPGRADE. La primera versión pedía el
estado de bloques podados y el RPC no respondía.
En vivo en la testnet de la casa, con el WASM 048ea752:
- contrafactual: contra spec 20, el E2E reprueba en 2c porque TreasurySupermajorityOf no existe;
- set_code en el bloque 98268: CodeUpdated, la firma vieja se rechaza, la nueva entra, y la
finalidad avanza;
- E2E verde del 0 al 5, con 2c (2, 3), 2d (la sembrada sin marca) y 2e (frontera en 98268:
5 propuestas de antes sin marca y 2 de después con ella).
Pruebas: 373 del workspace, 0 fallan.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Ya no queda ningun smoke de Charon. weights.rs se ENSAMBLA desde los tres certificados del banco
de referencia (la Pi 5) con scripts/bench/ensamblar-pesos.py:
- Cada funcion cobra el maximo, coeficiente a coeficiente, de todos los certificados que midieron
su mismo codigo (mismo esqueleto de lecturas, escrituras y proof que el del ultimo, que es el del
codigo que corre).
- Con --comprobar dice si el fichero es exactamente ese ensamblado: probado en rojo cambiando a
mano un peso.
- Los tres certificados quedan en scripts/bench/certificados/ (sha256 18b8fcd6, 1e15d04e y
6f5cfec1), con su perfil y su evidencia en la cabecera.
Por que el maximo de todos y no solo el ultimo: «El maximo de 5 de un dia no es el de otro»
(Laurha). La revision adversaria de spec 20 encontro que cobrar solo el certificado vigente de
cada funcion dejaba treasury_disbursement en 136 us, cuando el certificado del 2-nov, sobre el
wasm que corre, mide 155 us, y otros siete por debajo de lo medido. Con la regla, ningun peso baja
respecto a spec 19; los que suben, entre el +1 % y el +33 % de ejecucion.
Probado:
- 365 tests verdes.
- Ensayo en la rp1 sobre una cadena con el codigo vivo de spec 19. Contrafactual: con estos pesos,
el E2E reprueba contra spec 19, porque la cadena cobra los viejos. Tras el upgrade a 20 pasa
entero, y lo cobrado es weights.rs + extensiones.
Ademas: configs.rs ya no dice «Weights INTERIM hand-derived» en los cinco pallets, que cobran
pesos certificados desde spec 17.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>