P3: flow-runtime quality — held (omitted) outputs as state, fuzz generator gaps, README wording

Abierto
#67 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
3/5
Tiempo estimado
1-2 días
Aptitud para principiantes
35/100
Tipo de issue
Documentación
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
typescript

Línea de trabajo

Start with the evaluate "it holds" branch in packages/flow-runtime/src/run.ts, then the fuzz generator fuzz.mix in quality.property.test.ts, and the "Quality and the write gate" section of the README. Done when fuzz.mix sometimes omits its output, the generator covers variadic, multi-output, bool/string conversion and null-emitting blocks, and the README says held outputs count as block state and uses "derived from" wording for loop-delay taps. The issue is non-blocking and touches safety-relevant semantics, so confirm the intended wording with maintainers before editing.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Found in the #62 re-review at df8b26f. P3, non-blocking.

1. Omitted outputs act as implicit block state, but the docs and the fuzz test don't cover them.
When evaluate leaves an output out of its result, that output holds its old value (packages/flow-runtime/src/run.ts, the evaluate "it holds" branch). On the next scan where the inputs are good, the held value takes on that scan's quality.

Repro: a sample-and-hold block, y = en ? x : (omit).

  • Scan 1: x=999 (bad), en=true (good). Nothing is written.
  • Scan 2: x=1 (good), en=false. The block writes 999, and s.y reads {999, good}.

This matches the documented block-state exception, so it is not a new safety hole. The gaps are:

  • The README "Quality and the write gate" names only initialState/state. It should also say that held outputs count as block state.
  • fuzz.mix in quality.property.test.ts always returns its output. It should sometimes omit it. The oracle would then latch through S:<id>.

Related: #66 covers the stateful-block quality API.

2. Fuzz generator coverage gaps.
The generator never produces:

  • variadic inputs;
  • multi-output blocks;
  • bool/string typed conversions (it only uses number);
  • blocks that emit null from good inputs.

The unit tests cover each of these, but the taint oracle does not.

3. README wording.
The README says a reader outside the loop "never sees good while anything feeding the loop is not good". That overclaims for loop-delay taps. For one scan after an input turns bad, a tap still shows the health of the scan that stored the value. This is safe, because the value predates the bad reading. Reword it in terms of "derived from".

🤖 Generated with Claude Code

Lenguaje dominante
TypeScript
Estrellas
0
Forks
0
Merge medio
12 h 24 min
PR fusionados (30 d)
46

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de hyperdrive-technology/holodeck

Todos los issues de hyperdrive-technology/holodeck

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.