Protect case manifests from validation report output aliases
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 86/100
Línea de trabajo
Lee tools/validation_reports.py y sus pruebas existentes de alias de entrada protegidos; después, revisa los invocadores de tools/run_runtime_cases.py, el ejecutor de objetos y el ejecutor de comprobación del código fuente. Añade el manifiesto consumido tests/cases/cases.toml al conjunto compartido de entradas protegidas y verifica que los alias directos, normalizados y de archivos existentes fallen antes de guardar cualquier informe. El trabajo estará terminado cuando el manifiesto permanezca intacto durante las rutas de preflight y normales, mientras que los destinos seguros sigan recibiendo informes.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Problem
The case validation report guard protects Wave sources, compiler inputs and std files, but omits tests/cases/cases.toml. A report destination can therefore replace the configuration used to select the cases, even during a failed preflight.
Starting points: shared protected-input discovery, runtime preflight and its first save, and the default manifest path.
Reproduction
Executed at canonical master d59bdab376bdc04edacdc8029b256cb8d55b5adf on Linux amd64 with Python 3.14.8. The following invokes the production runtime runner with only its checkout location redirected to a disposable fixture. No compiler or VM starts; the unknown target makes selection fail.
Run from the repository root:
import tempfile
from pathlib import Path
from types import SimpleNamespace
from unittest.mock import patch
from tools import run_runtime_cases as runtime
root = Path(tempfile.mkdtemp(prefix="wave-report-manifest-"))
(root / "tests/cases").mkdir(parents=True)
manifest = root / "tests/cases/cases.toml"
before = "version = 2\n# disposable manifest sentinel\n"
manifest.write_text(before)
(root / "tests/cases/test1.wave").write_text("fun main() {}\n")
compiler = root / "wavec"
compiler.write_text("unused compiler sentinel")
with patch.object(runtime, "ROOT", root):
status = runtime.execute(SimpleNamespace(
report_json=manifest,
wavec=compiler,
sources=["test1.wave"],
target_id="unknown-audit-target",
))
print(status, manifest.read_text() == before)
Observed 2 False: the manifest sentinel is replaced by runtime-report JSON. In the real checkout, --report-json tests/cases/cases.toml selects that configuration file as the report destination and has the same missing pre-write guard. Do not run the destructive case against the real manifest.
Scope
Include the consumed case manifest in the shared protected-input set before initial, preflight, progress and final report writes. Keep the scope to actual runner inputs; std/manifest.json is already protected by the existing std-tree scan, and unrelated documentation does not need to become a protected input.
Related #811 protected compiler/entry sources and #906 extended std/import protection. Neither covers the case configuration file; #941 is the separate source-encoding error path.
Difficulty: easy. This extends an existing helper and its established alias tests; no reporting redesign is needed.
Completion criteria
- Direct, normalized and existing-file alias report paths to the manifest fail before any save.
- Preflight failures and normal runner paths preserve the manifest sentinel.
- Check the shared callers so object, source-check and runtime reports agree.
- Safe report destinations still receive normal success/error reports.
- Lenguaje dominante
- Rust
- Estrellas
- 56
- Forks
- 21
- Merge medio
- 4 h 58 min
- PR fusionados (30 d)
- 54
Preparar el entorno
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de wavefnd/Wave
-
bug good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
Los mantenedores suelen responder en 1 día
-
good first issue performance
Dificultad 2/5 1-3 horas Aptitud para principiantes 83/100
Los mantenedores suelen responder en 1 día
-
enhancement good first issue needs testing
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
bug good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
bug good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
Todos los issues de wavefnd/Wave
Issues similares
-
`image_generation`: `max_retries` is ignored for OpenAI-compatible providers (always 2 retries)Posiblemente ocupada @ericz7900 la tomó hoy. Abiertollm translation
Dificultad 2/5 1-3 horas Aptitud para principiantes 77/100
Los mantenedores suelen responder en 1 día
-
[Package Request]: LificAbiertoHelp-Wanted Needs-Triage Package-Request
Dificultad 2/5 1-3 horas Aptitud para principiantes 67/100
microsoft/winget-pkgs#456324 ·
Los mantenedores suelen responder en 1 día
-
ai_p2
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
ClickHouse/ClickHouse#126833 ·
Los mantenedores suelen responder en 1 día
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
area/runtime good first issue size/S type/refactor
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
lorica-labs/volant#681 ·
Los mantenedores suelen responder en 1 día