Repository navigation
ci: repair red main (advisories, sandbox under dash, tree-sitter in jest, readiness check) - #1
Merged
Merged
Conversation
npm audit flagged hono (moderate) and js-yaml (high); semver-compatible, lockfile-only. Clears the CI Audit dependencies failure; npm audit now reports 0 vulnerabilities.
classeve-public
force-pushed
the
ci/repair-2026-09-18
branch
from
September 18, 2026 09:49
e66dfbe to
1c733c9
Compare
added 3 commits
September 19, 2026 23:06
…un on Debian and Ubuntu /bin/sh is dash on Debian and Ubuntu, and dash has no `ulimit -u` (it spells the process ceiling -p). The chain stopped there and sh exited 2 before exec, so no sandboxed command has run on those hosts since the first release; the new exactly-once test was the first to assert a Linux exit code. - the process ceiling tries -u (bash, busybox) and then -p (dash); if neither sets it, nothing runs - -f is given in 512-byte blocks, the unit every POSIX sh uses; KB had halved the configured size - the process ceiling applies inside the new user namespace only: RLIMIT_NPROC counts every task the user owns, so outside one it stops the target's own threads on any busy host A Linux test reads /proc/self/limits from the sandboxed process and checks each ceiling's value.
Jest re-evaluates tree-sitter's JS wrapper in each test file but loads its native addon once per worker. The second evaluation destructures Tree.prototype after the first replaced rootNode with a getter, captures undefined, and from then on every tree in that worker has no root node. Any test file that was not the first parser in its worker searched empty trees; workspace-parse-cache was the one whose assertions noticed. The shim evaluates the wrapper once per worker and hands every test file that instance, as a real process does. Reproduced without the shim: the six parsing suites in one process, 1 failure; with it, 114 of 114.
2.15.0 moved the detailed readiness report behind authentication at /ready_detail, so /ready answers every caller with the same body. The check still asked /ready and found no migrations field.
classeve-public
force-pushed
the
ci/repair-2026-09-18
branch
from
September 19, 2026 21:06
1c733c9 to
acdd2a1
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Repairs main, red since 2026-09-08 (last green ae9c94d). Four causes:
Audit dependencies —
hono(moderate) andjs-yaml(high).npm audit fix, lockfile-only;npm auditreports 0 vulnerabilities.Sandbox: repository commands never ran on Debian or Ubuntu —
/bin/shthere is dash, which has noulimit -u(dash spells the process ceiling-p). The ulimit chain stopped andshexited 2 beforeexec, on every such host since the first release; the exactly-once test added in 2.15.0 was the first to assert the exit code. The process ceiling now tries-u, then-p, and nothing runs if neither sets it.-fis given in 512-byte blocks, the unit every POSIXshuses (KB had halved the configured size). The process ceiling applies inside the new user namespace only:RLIMIT_NPROCcounts every task the user owns, so outside one it stops the target's own threads on any busy host. A new Linux test reads/proc/self/limitsfrom the sandboxed process and checks each ceiling.workspace-parse-cache — Jest re-evaluates tree-sitter's JS wrapper in every test file but loads its native addon once per worker. The second evaluation captures its own
rootNodegetter instead of the native method, so every later tree in that worker has no root node. A server process evaluates the wrapper once and is unaffected. A test shim now evaluates it once per worker. Without the shim, the six parsing suites in one process fail 1 test; with it, 114 of 114 pass.Docker install path — 2.15.0 moved the migration count behind authentication at
/ready_detail. The check still asked/ready.Local: typecheck, lint, and
npm run test:ci(1941 passed, coverage thresholds met).