Let the sealed-output guard check pull requests larger than 256 MiB (GST-2494) (#4300)

* Let the sealed-output guard read pull requests larger than 256 MiB (GST-2494)

The guard's text check and landed-patch check buffered git diff-tree's whole output under spawnSync's 256 MiB maxBuffer, so a PR with millions of generated lines always refused with an empty-stderr error. Both now spool git's stdout to a private temp file and read it a line at a time after git exits 0; failures name the exit code, signal or timeout.

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>

* Accept the platform spawn error text in the missing-git test (Windows says Executable not found)

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>

* Reword the sealed guard changelog entry to pass the prose check

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>

---------

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
This commit is contained in:
Garry Tanandcapy-ai[bot] authored and GitHub committed 2026-11-11 22:48:18 +00:00
1 parent 0ead11c8e2
commit 842fef1f95
4 files changed
+353 -26

No files matched your search

+11
View File
@@ -5007,6 +5007,17 @@ destination sets `"visibility": "private"` under `sealed` in the base branch's
`.gstack/pregate.json`. Capy's pull-request tool may not run local hooks, so
run `gstack-pregate sealed` yourself before any push or PR creation.
**`could not read the published commits: git diff-tree -p failed (<why>)`.**
The guard could not read the published patches, so it refuses instead of
passing them unread. `<why>` names what failed: an exit code followed by git's
own error (`exit 128): fatal: ...`), a signal (`killed by SIGKILL`), the
120-second timeout, or a git that could not start. The guard writes git's
output to a temporary file in the system temp directory and reads it a line at
a time, so patch size has no limit, but that directory needs free space about
the size of the patch (hundreds of MB for millions of generated lines); a full
disk shows up as a git exit. Fix the cause and rerun `gstack-pregate sealed`.
Older gstack refused any patch over 256 MiB here with nothing after the colon.
<a id="eval-gate-unpriced"></a>
### `EVAL_GATE_UNPRICED`