ci: give the macOS archive's launcher a resolved root #365

Merged
natsukium merged 1 commit from release/issue-360-launcher-path into main 2026-09-23 08:20:59 +09:00
Owner

The v0.1.0-rc.4 tag run (actions run 4221) got the macOS archive through the manifest, codesign --verify --strict --deep, the direct felis-client --version, the bin/felis launcher and the daemon spawn. The last check failed only on spelling: the launcher exec'd bin/../felis.app/Contents/MacOS/felis, so the daemon's command line was .../bin/../felis.app/Contents/MacOS/felis-daemon serve … and the smoke's prefix match against <tree>/felis.app/... did not recognize it.

The launcher now resolves the archive root with pwd -P before it execs (verified locally through a symlinked tree: the CLI sees a clean absolute path), and the smoke resolves the tree it was given the same way.

Refs #360. Only a tag run (v0.1.0-rc.5) exercises the darwin smoke itself.

The `v0.1.0-rc.4` tag run (actions run 4221) got the macOS archive through the manifest, `codesign --verify --strict --deep`, the direct `felis-client --version`, the `bin/felis` launcher and the daemon spawn. The last check failed only on spelling: the launcher exec'd `bin/../felis.app/Contents/MacOS/felis`, so the daemon's command line was `.../bin/../felis.app/Contents/MacOS/felis-daemon serve …` and the smoke's prefix match against `<tree>/felis.app/...` did not recognize it. The launcher now resolves the archive root with `pwd -P` before it execs (verified locally through a symlinked tree: the CLI sees a clean absolute path), and the smoke resolves the tree it was given the same way. Refs #360. Only a tag run (`v0.1.0-rc.5`) exercises the darwin smoke itself.
ci: give the macOS archive's launcher a resolved root
Some checks failed
darwin / publish felis (aarch64-darwin) (pull_request) Has been skipped
fuzz / cargo fuzz smoke (per target) (pull_request) Successful in 1m10s
pr / nix flake check (pull_request) Successful in 2m19s
pr / wire schema is compatible with the base (pull_request) Successful in 19s
windows / cargo nextest (Windows) (pull_request) Successful in 3m49s
bench / Criterion full-suite snapshot (pull_request) Has been skipped
fuzz / cargo fuzz nightly long-run (pull_request) Has been skipped
bench / Criterion regression gate (pull_request) Failing after 4m34s
darwin / detect relevant changes (pull_request) Successful in 4s
darwin / darwin docs-only no-op (pull_request) Has been skipped
darwin / build felis (aarch64-darwin) (pull_request) Successful in 54s
pr / cargo build / clippy / test / deny (pull_request) Successful in 2m40s
pr / frontend smoke (x86_64-linux) (pull_request) Successful in 3m54s
pr / publish felis (x86_64-linux) (pull_request) Has been skipped
windows / detect relevant changes (pull_request) Successful in 4s
windows / windows docs-only no-op (pull_request) Has been skipped
windows / cargo clippy (Windows cross) (pull_request) Successful in 14s
windows / frontend smoke (Windows) (pull_request) Successful in 1m34s
windows / package felis (x86_64-pc-windows-msvc) (pull_request) Has been skipped
88c86da503
The bin/felis launcher exec'd the CLI through `bin/../felis.app`, so
the CLI, and the client and daemon it spawns by the directory of its
own executable, all ran under a path carrying `..`. The tag run's smoke
compares the daemon's command line against the unpacked tree and did
not recognize that spelling, though every other step of the macOS
archive gate had passed. The launcher now resolves the archive root
with `pwd -P` before it execs, which also keeps the process list free
of `..` for a user who put the archive behind a symlink, and the smoke
resolves the tree it was given the same way.

Assisted-by: Claude Code
natsukium deleted branch release/issue-360-launcher-path 2026-09-23 08:20:59 +09:00
Commenting is not possible because the repository is archived.
No description provided.