Protect case manifests from validation report output aliases
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 86/100
Direzione di ricerca
Leggi tools/validation_reports.py e i relativi test esistenti sugli alias di input protetti, quindi controlla i chiamanti in tools/run_runtime_cases.py, nell’esecutore degli oggetti e nell’esecutore dei controlli del codice sorgente. Aggiungi il manifest utilizzato tests/cases/cases.toml all’insieme condiviso degli input protetti e verifica che gli alias diretti, normalizzati e di file esistenti falliscano prima di salvare qualsiasi report. Il lavoro è completo quando il manifest rimane intatto nei percorsi di preflight e normali, mentre le destinazioni sicure continuano a ricevere i report.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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.
- Lingua principale
- Rust
- Stelle
- 56
- Fork
- 21
- Merge medio
- 4h 58m
- PR unite (30g)
- 54
Preparare l'ambiente
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di wavefnd/Wave
-
bug good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
I maintainer di solito rispondono entro 1 giorno
-
good first issue performance
Difficoltà 2/5 1-3 ore Idoneità per principianti 83/100
I maintainer di solito rispondono entro 1 giorno
-
enhancement good first issue needs testing
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
bug good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
bug good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di wavefnd/Wave
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
chipsalliance/caliptra-sw#4311 ·
I maintainer di solito rispondono entro 2 giorni
-
`image_generation`: `max_retries` is ignored for OpenAI-compatible providers (always 2 retries)Forse già presa @ericz7900 l’ha presa oggi. Apertallm translation
Difficoltà 2/5 1-3 ore Idoneità per principianti 77/100
I maintainer di solito rispondono entro 1 giorno
-
[Package Request]: LificApertaHelp-Wanted Needs-Triage Package-Request
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
microsoft/winget-pkgs#456324 ·
I maintainer di solito rispondono entro 1 giorno
-
ai_p2
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
ClickHouse/ClickHouse#126833 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno