Actualización 2.77
10/6/2026
SIN Puerta 3 del constructor de cadenas: AiScriptLab puente de validación para el `SinApplyPlan` (de solo lectura) — valida planes, hace NO aplicar; SIN permanece BLOQUEADO para escribir. Carril Jarvis-NEMESIS (MAGIC/SIN). Abre Puerta 3 del SIN Constructor de cadenas: se necesita de SHINRYU solo de vista previa `SinApplyPlan` (Puerta 2) y corre AiScriptLab/`AiValidator`-compatible lo revisa, todavía sin cargar un monstruo, sin `Rebuild`/`Splice`, sin un AEON diff, sin disco y sin aplicar nada. Responde exactamente una pregunta: "Es esto solo de vista previa plan estructuralmente aceptable (el código de bytes que emitiría es bien formado), y ¿cuáles son los bloqueadores/advertencias/errores honestos que aún se interponen entre esto y una aplicación?". nuevas clases en `FfxLib/Ai/Sin`: `SinPlanValidator` (`Validate(SinApplyPlan) → SinPlanValidationResult`, solo lee `AiScript_File` tablas estáticas + `AiStackModel` + el plan), `SinPlanValidationResult` (espejos `AiValidationReport`Vocabulario a nivel de plan: `Errors`/`Blockers`/`Warnings`/`Infos`, `StructurallyValid` = sin errores, `ApplyAcceptable` = falso por construcción en la puerta 3) y `SinAiScriptLabBridge` (los campos de registro bajo nivel controles sobre un suelto `AiInstruction` corriente, no `AiScriptFile`). cheques (los campos de registro SOUND subconjunto fuera de línea, idéntico a lo que `AiValidator` se utiliza): (1) cada código de operación ∈ los 48 probados (`AiScript_File.IsKnownOpcode`); (2) `HasOperand` está de acuerdo con el `0x80` regla de tamaño (`IsOperandBearing`) - demás `Emit()` mis-sizes el arroyo; (3) por-instruction RT0 (`Emit()` re-decodes al mismo código de operación+operando); (4) statement-nivel equilibrio de pila a través de `AiStackModel` (un cuerpo lineal genera 0; un guardia se va exactamente 1 bool seleccionados para obtener los valores D7/POPXNCJMP). Veredicto para los 3 pilotos: todos estructuralmente válido PERO aplicar-BLOQUEADO (solo de vista previa) — SIN-006/SIN-009 (lineal) saldo neto 0; SIN-010 (HP-protector) deja exactamente 1 bool + a neto 0 acción. de SHINRYU DIV/MUL hallazgo manejado EXPLÍCITAMENTE (NEMESIS decisión = mantener como ESPERADO BLOQUEADOR, hacer NO corrección): la dirección está probada (`0x16=DIV`/`0x17=MUL` a través de un censo de 345 monstruos + IDA `FFX_Atel_InterpretWorkerOpcodes@0x864180` + FFXDataParser), entonces `AiSnippetLibrary`'s `MUL` obligado a `0x16` es un error confirmado, pero el reconciliación completa (arregla la constante + re-validate CADA consumidor: `MonsterAiEditor`, `AiAutomation`, `--aiasm-rt0`/`--ai2`/`--ai3` + re-prove RT0/RT2) es un dedicado PARCHE fuera de un de solo lectura puerta de validación (y RT2 Está prohibido para la puerta 3.). La idea estructural que demuestra por qué debe ser una BLOQUEADOR y no un error: `AiStackModel` da neto -1 para AMBOS DIV y MUL → la pila se equilibra de forma idéntica, el byte vuelve a analizar solo RT2 detecta la aritmética incorrecta. El validador lo presenta como un Advertencia + Bloqueador con la evidencia completa, y la puerta confirma la HP% receta permanece bloqueado y fue NO arreglado silenciosamente (el planificador todavía emite `0x16`, `AiSnippetLibrary` intacto). Aditivo (compatible hacia atrás) extensión: `SinPlannedStep` ganado `GuardOps`/`BodyOps` (lo crudo `AiInstruction`el planificador ya ha calculado) entonces el validador inspecciona exactamente lo que produjo el planificador (única fuente de verdad; predeterminado vacío → cada Puerta-2 sitio de construcción sigue compilando y `--sin-dryrun-rt0` permanece PASS). Nuevo de solo lectura puerta `--sin-validate-rt0`: valida a los 3 pilotos y afirma válido estructuralmente + aplicar-NO-aceptable + bloqueadores honestos + la escala de ascenso insatisfecha + ningún candidato→creación-ready + (SIN-010) los campos de registro DIV/MUL bloqueador presente y no-corregido; Validación determinista. MENOR (NUEVO capacidad ejecutable: validador + puerta). Alcance/honestidad: SIN permanece BLOQUEADO para escribir — Puerta 3 valida planes, no aplica planes; "Limpio para DISEÑO no está desbloqueado para ESCRITURA" - y limpio-structure Tampoco desbloquea la escritura. lo hace NO escribir/guardar/`Rebuild`/`Splice`/AEON diff/copia de seguridad/RT2/botón/UI; lo hace NO tocar `monster_.bin`/runtime/Aurora/native-menu/Blitzball/Shop/Mix/Sphere/`Common`(ANIMA) o el `MonsterAiEditor`. Errores de compilación 0; `--sin-validate-rt0` + `--sin-dryrun-rt0` (Puerta 2, sin regresión) + `--aicmdmeta-rt0` + `--spiraatlas-rt0` + `--aiasm-rt0` (AiScriptLab, 346/346 RT0 en el corpus REAL) todos PASS. Docs: `docs/ai/SIN_NEMESIS_AISCRIPTLAB_VALIDATION_RESULT_2026-06-10.md` + `docs/ai/HANDOFF_NEMESIS_SIN_AEON_DIFF_GATE_NEXT_2026-06-10.md`.
Leer notas