add an explicit Core execution-scratch option and CLI environment configuration for runtime package probes
keep /tmpnoexec while the canonical verifier mounts a bounded, ephemeral, nodev,nosuid,exec tmpfs at /run/ekklesia-verifier
report missing, read-only, or Linux noexec scratch as MODULE_PACKAGE_VERIFIER_SCRATCH_UNAVAILABLE instead of package load corruption
document that backend probing executes package code and that the hardened verifier container is the isolation boundary
Regression coverage
The image check builds the existing sharp 0.35.5 / libvips 1.3.4 native proof package and exercises real mount behavior. It proves the otherwise-valid package cannot load its addon from actual noexec/tmp, verifies it through the supported exec scratch, runs a real sharp image operation from the extracted package alone, rejects missing/read-only/noexec scratch clearly, runs concurrent verification, and checks cleanup. Core tests cover pure-JS verification, success/failure cleanup, unsafe-path ordering, and CLI configuration; existing missing-dependency, Node-API, glibc, and package-alone resolution coverage remains green.
Verification
pnpm --filter @ekklesia/core exec vitest run tests/module-package-verification.test.ts tests/verify-module-package-cli.test.ts
pnpm --filter @ekklesia/module-pack exec vitest run tests/native-target.test.ts
pnpm exec vitest run --config vitest.config.ts tests/ci-scripts.test.ts
bash scripts/check-image.sh
pnpm verify
pnpm test:package-release was not run because no published package contents changed. Migration integration was not run because no database or migration behavior changed. There is no version bump, package/manifest format change, publication, tag, or Signage change.
## Summary
- add an explicit Core execution-scratch option and CLI environment configuration for runtime package probes
- keep `/tmp` `noexec` while the canonical verifier mounts a bounded, ephemeral, `nodev,nosuid,exec` tmpfs at `/run/ekklesia-verifier`
- report missing, read-only, or Linux `noexec` scratch as `MODULE_PACKAGE_VERIFIER_SCRATCH_UNAVAILABLE` instead of package load corruption
- document that backend probing executes package code and that the hardened verifier container is the isolation boundary
## Regression coverage
The image check builds the existing sharp 0.35.5 / libvips 1.3.4 native proof package and exercises real mount behavior. It proves the otherwise-valid package cannot load its addon from actual `noexec` `/tmp`, verifies it through the supported exec scratch, runs a real sharp image operation from the extracted package alone, rejects missing/read-only/noexec scratch clearly, runs concurrent verification, and checks cleanup. Core tests cover pure-JS verification, success/failure cleanup, unsafe-path ordering, and CLI configuration; existing missing-dependency, Node-API, glibc, and package-alone resolution coverage remains green.
## Verification
- `pnpm --filter @ekklesia/core exec vitest run tests/module-package-verification.test.ts tests/verify-module-package-cli.test.ts`
- `pnpm --filter @ekklesia/module-pack exec vitest run tests/native-target.test.ts`
- `pnpm exec vitest run --config vitest.config.ts tests/ci-scripts.test.ts`
- `bash scripts/check-image.sh`
- `pnpm verify`
`pnpm test:package-release` was not run because no published package contents changed. Migration integration was not run because no database or migration behavior changed. There is no version bump, package/manifest format change, publication, tag, or Signage change.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
/tmpnoexecwhile the canonical verifier mounts a bounded, ephemeral,nodev,nosuid,exectmpfs at/run/ekklesia-verifiernoexecscratch asMODULE_PACKAGE_VERIFIER_SCRATCH_UNAVAILABLEinstead of package load corruptionRegression coverage
The image check builds the existing sharp 0.35.5 / libvips 1.3.4 native proof package and exercises real mount behavior. It proves the otherwise-valid package cannot load its addon from actual
noexec/tmp, verifies it through the supported exec scratch, runs a real sharp image operation from the extracted package alone, rejects missing/read-only/noexec scratch clearly, runs concurrent verification, and checks cleanup. Core tests cover pure-JS verification, success/failure cleanup, unsafe-path ordering, and CLI configuration; existing missing-dependency, Node-API, glibc, and package-alone resolution coverage remains green.Verification
pnpm --filter @ekklesia/core exec vitest run tests/module-package-verification.test.ts tests/verify-module-package-cli.test.tspnpm --filter @ekklesia/module-pack exec vitest run tests/native-target.test.tspnpm exec vitest run --config vitest.config.ts tests/ci-scripts.test.tsbash scripts/check-image.shpnpm verifypnpm test:package-releasewas not run because no published package contents changed. Migration integration was not run because no database or migration behavior changed. There is no version bump, package/manifest format change, publication, tag, or Signage change.