Windows: gstack-review-scope summary always refuses because it spawns the bash gstack-review-read directly
Los mantenedores suelen responder en 1 día
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 78/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- bash, bun, node.js, typescript
Línea de trabajo
Lee bin/gstack-review-scope alrededor de la línea 238 y bin/gstack-ship-receipt alrededor de la línea 145; después, examina bashScriptInvocation() en lib/gbrain-exec.ts y su gestión de Windows en lib/script-invocation.ts. Confirma cómo se ejecutan ambos helpers en Windows y cómo se notifican los errores de ejecución. El trabajo estará terminado cuando funcione el resumen de revisión y los receipts conserven el tipo de sesión en Windows; el issue también sugiere incluir read.error en el mensaje de rechazo.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
What happens
On Windows, gstack-review-scope summary always refuses, so /ship can't produce the --review-loop file that gstack-ship-receipt write needs:
$ gstack-review-scope summary --since 2026-10-28T11:54:27Z --out .gstack/tmp/review-loop.json
gstack-review-scope summary: gstack-review-scope was given input it cannot classify: … — gstack-review-read failed: ; fix: pass the Step 9.3 findings as a JSON array … (REVIEW_SCOPE_INPUT)
The review log is fine (gstack-review-read works when run from Git Bash). The cause is bin/gstack-review-scope:238, which starts the bash script directly:
const read = spawnSync(path.join(path.dirname(Bun.fileURLToPath(import.meta.url)), 'gstack-review-read'), [], { … });
if (read.status !== 0) return refuse('summary', 'REVIEW_SCOPE_INPUT', `gstack-review-read failed: ${(read.stderr ?? '').trim().split('\n')[0] ?? ''}`);
Windows can't execute an extensionless shebang script, so the spawn itself fails and read.error holds the reason. read.stderr is empty, which is why the message ends in failed: with nothing after it, and why it's reported as an input problem.
Reproduction (not specific to one machine)
The same call outside gstack, on a two-line bash script, fails in both runtimes:
Bun 1.4.4: Error: Executable not found in $PATH: "…\spawn-test\hello"
Node 22.22: Error: spawnSync …/spawn-test/hello ENOENT
and on the real helper:
spawnSync('…/gstack/bin/gstack-review-read') → status null, Error: ENOENT: no such file or directory, uv_spawn '…/gstack-review-read'
Same pattern elsewhere
bin/gstack-ship-receipt:145 starts gstack-session-kind (also a bash script) the same way. It doesn't refuse; it silently leaves the session kind unset when --session-kind and GSTACK_SESSION_KIND are absent, so receipts written on Windows carry no session kind.
Suggested direction
lib/gbrain-exec.ts already has bashScriptInvocation() (backed by resolveWindowsBash() in lib/script-invocation.ts), which runs a bash script through Git Bash on Windows. Using it for both spawns would fix this. Separately, including read.error in the refusal message would have made the cause obvious.
Workaround used
Run gstack-review-read in Git Bash to a file, then feed it to summarizeReviewLoop() / reviewLoopLine() from lib/review-scope.ts in a small Bun script that writes the same JSON to .gstack/tmp/review-loop.json.
Environment
Windows 11 (10.0.26300), Git Bash, Bun 1.4.4, Node 22.22.3, gstack 1.91.293.0 (9e3308f).
- Lenguaje dominante
- TypeScript
- Estrellas
- 138k
- Forks
- 20.5k
- Merge medio
- 8 h 37 min
- PR fusionados (30 d)
- 320
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
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 garrytan/gstack
-
ubicloud: usage is an awk syntax error on macOS, which also disables the vCPU quota preflightPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
Los mantenedores suelen responder en 1 día
-
ubicloud: reap and up die with "invalid VM name '-'" on a project with no VMsPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
Los mantenedores suelen responder en 1 día
-
gstack-jsonl-merge: non-UTF-8 redirected Python stdout fails on Unicode JSONL and emits CRLF on WindowsPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día
-
autoplan guard: init via `cd <outside dir> &&` permanently denies the session with code evidence (host appends "Shell cwd was reset" to the JSON result)Posiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 79/100
Los mantenedores suelen responder en 1 día
-
lib/pricing.ts has no rows for claude-haiku-5-5, gemini-4-argon or TypeSafe Jev, so gstack-eval-plan refuses those arms (EVAL_PRICE_MISSING)Posiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
Los mantenedores suelen responder en 1 día
Todos los issues de garrytan/gstack
Issues similares
-
bug low priority
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día
-
enhancement good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
laaielichter/Godotwright#81 ·
Los mantenedores suelen responder en 1 día
-
gebied: infra
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
VincentSmedinga/sc-heerenveen-fansite#538 ·
Los mantenedores suelen responder en 1 día
-
CI grants a token it does not need, never cancels superseded runs, and cannot fail on lint warningsAbiertogood first issue help wanted type:infrastructure type:security
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
Open-Glassbeetle/glassbeetle#247 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día