Files
ElyOffice/tasks/reviews/L1.7-r1.md
T

2.8 KiB

FAIL

  1. packaging/linux/package.sh:146 — The RUNPATH guard checks only a string prefix, so paths beginning with $ORIGIN can still escape the AppDir. In a copied tree, an ELF with $ORIGIN/../../../../../../../../outside passed packaging and produced all four formats. Its library loaded successfully while the external build-tree dependency existed, then failed with libleaf.so: cannot open shared object file when that dependency was removed. $ORIGINsuffix also passed. Resolve recognized origin tokens relative to each ELF, normalize the resulting paths, and reject destinations outside the packaged runtime tree. Add regression cases for traversal and malformed tokens. Evidence: .work/L1.7-r1/guard-probes.log.

  2. packaging/linux/package.sh:147 — RUNPATH extraction errors do not propagate out of the process substitution. Making the guard's sed exit 73 caused a library with RUNPATH /old/lo/workdir/fontconfig to bypass validation; the copied packager exited 0 and produced all four formats. Check the extraction pipeline's status before consuming its output, and add a regression that requires packaging to fail when extraction fails. Evidence: .work/L1.7-r1/guard-errors.log.

  3. scripts/ci.sh:44 — Linux CI bypasses the required Ubuntu 26.04 container. The branch calls the packager directly, whose staging step invokes Cargo in the caller's environment; the engine-build branch likewise runs directly. An isolated CI invocation with shared engines ran all six packagers with container=no and reported success. This contradicts the container requirement in tasks/TASKS.md:202 and agents.md:307; the new same-glibc statement does not enforce that requirement. Route Linux builds and packaging through packaging/linux/container.sh, preserve access to shared engines, and test that CI actually enters it. Evidence: .work/L1.7-r1/ci-probe.log.

  4. agents.md:310 — The replacement Linux binaries have no matching published source entry, violating PRD §§21.3 and 24.2. The v0.1.3 release has an empty description and only binary assets; its source archives still reference commit 62f9839170efe66f80be74975c65de53b9876438. That version's Cargo.toml enables only font-kit, without the Wayland/X11 fix, and its new packaging script returns 404. The local L1.6 commit also returns 404 from the public commit API. A recipient following the release's source link therefore receives the old headless implementation and cannot reproduce the replacement packages. Publish an immutable corresponding-source snapshot, including the fixes and build materials, and link it from the release. Evidence: .work/L1.7-r1/release.log and .work/L1.7-r1/source-release.log.