watch liveness check resolves relative source identities against process CWD instead of watch root

Aperta Adatta ai principianti
#4,896 5 commenti 0 reazioni 0 assegnatari Vedi su GitHub

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
78/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
python
Ambito
devtools

Direzione di ricerca

Inizia individuando il controllo di liveness di watch che valuta le identità delle sorgenti e il punto di chiamata che gestisce i percorsi relativi a watch root. Riproduci il problema con la directory di lavoro impostata su una directory di progetto temporanea e poi sulla home directory, confermando che un file esistente viene erroneamente trattato come eliminato. Correggi la risoluzione dei percorsi rispetto a watch root e aggiungi il test di regressione parametrizzato richiesto; il lavoro è completo quando i file esistenti rimangono alive, i file realmente eliminati continuano a causare un fail-closed refusal ed entrambi i casi della working directory superano il test.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Version 0.9.93, macOS, daily job under launchd.

SYMPTOM: incremental code rebuild refuses to overwrite (fail-closed, saved semantic nodes missing) only when run under the scheduler; the same rebuild from a shell rooted at the watch root succeeds.

ROOT CAUSE: the alive check does Path(identity).exists() where identity is a watch-root-relative source path. Under launchd with WorkingDirectory set to the home dir, existing files (e.g. memory slash plan docs) resolve to a nonexistent absolute path, are judged deleted, their semantic nodes are evicted, and fail-closed correctly refuses the write. Manual runs succeed only because the shell CWD happens to equal the watch root.

SUGGESTED FIX: resolve against the watch root at the call site (watch_root.joinpath(relative_id).exists()), not bare Path(relative_id).exists(). Prefer this over storing absolute identities (keeps watches relocatable, avoids leaking home-dir layout into stored state).

REGRESSION TEST: parametrize CWD (project tmp dir vs home dir), assert an existing file stays alive and a truly-deleted file still trips refusal.

Lingua principale
Python
Stelle
124k
Fork
11.9k
Merge medio
2h 35m
PR unite (30g)
6

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di Graphify-Labs/graphify

Tutte le issue di Graphify-Labs/graphify

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.