fix: restore static SSH/SCP runtime bindings #25

Merged
ober merged 1 commit from fix/complete-ssh-ffi-symbol-registry into main 2026-08-26 11:38:47 -04:00
Owner

Problem

The all-features static shell failed immediately when ,scp initialized the current jerboa-ssh transport:

Exception in foreign-procedure: no entry for "jerboa_ssh_tcp_connect_bv_timeout"

After restoring that entry, downloads whose destination was a directory such as . also attempted to open the directory as a file.

Root cause

  • The pinned jerboa-ssh dependency and seven native/platform FFI registries had drifted apart.
  • The registries still named the older TCP entry points and omitted the current timeout-safe bytevector functions plus related crypto/filesystem helpers.
  • An obsolete vendor override was non-idempotently rewrapping the same OpenSSL fallback during every refresh.
  • The ,scp wrapper passed a destination directory directly to ssh-scp-get instead of appending the remote basename.

Changes

  • Pin current authoritative jerboa-ssh and remove the obsolete self-matching vendor rewrite.
  • Register all 29 native SSH functions referenced by jerboa-ssh across native jerbuild, Linux, macOS, and FreeBSD generators.
  • Add a regression that compares referenced/exported jerboa-ssh functions with all seven registries.
  • Resolve directory download destinations using the remote basename.
  • Advance VERSION and jpkg metadata to 0.5.2.

Verification

  • make test: SSH registry coverage passed; 691 jsh unit, 25 search UI, and 13 secure-history PTY checks passed.
  • make binary: macOS standalone binary built successfully.
  • End-to-end isolated SSH/SFTP smoke: ,scp ... <directory> printed scp: done; downloaded bytes matched the source.
  • make pre-pr-macos-linux-amd64-all: passed and produced a static stripped x86-64 Linux ELF.
  • Generated Linux main contains Sforeign_symbol registrations for all eight formerly missing entries.
  • Changed-line security scan and Scheme balance/compile verification passed.
  • Vendored jerboa-shell, jerboa-ssh, and jsqlite tracked sources match their authoritative local checkouts.
## Problem The all-features static shell failed immediately when `,scp` initialized the current jerboa-ssh transport: ``` Exception in foreign-procedure: no entry for "jerboa_ssh_tcp_connect_bv_timeout" ``` After restoring that entry, downloads whose destination was a directory such as `.` also attempted to open the directory as a file. ## Root cause - The pinned jerboa-ssh dependency and seven native/platform FFI registries had drifted apart. - The registries still named the older TCP entry points and omitted the current timeout-safe bytevector functions plus related crypto/filesystem helpers. - An obsolete vendor override was non-idempotently rewrapping the same OpenSSL fallback during every refresh. - The `,scp` wrapper passed a destination directory directly to `ssh-scp-get` instead of appending the remote basename. ## Changes - Pin current authoritative jerboa-ssh and remove the obsolete self-matching vendor rewrite. - Register all 29 native SSH functions referenced by jerboa-ssh across native jerbuild, Linux, macOS, and FreeBSD generators. - Add a regression that compares referenced/exported jerboa-ssh functions with all seven registries. - Resolve directory download destinations using the remote basename. - Advance VERSION and jpkg metadata to 0.5.2. ## Verification - `make test`: SSH registry coverage passed; 691 jsh unit, 25 search UI, and 13 secure-history PTY checks passed. - `make binary`: macOS standalone binary built successfully. - End-to-end isolated SSH/SFTP smoke: `,scp ... <directory>` printed `scp: done`; downloaded bytes matched the source. - `make pre-pr-macos-linux-amd64-all`: passed and produced a static stripped x86-64 Linux ELF. - Generated Linux main contains `Sforeign_symbol` registrations for all eight formerly missing entries. - Changed-line security scan and Scheme balance/compile verification passed. - Vendored jerboa-shell, jerboa-ssh, and jsqlite tracked sources match their authoritative local checkouts.
fix: complete static SSH FFI registry for scp
All checks were successful
version-policy / required (pull_request) Successful in 2s
required-ci / required (pull_request) Successful in 11m33s
1d09a4b96c
ober scheduled this pull request to auto merge when all checks succeed 2026-08-26 11:38:28 -04:00
ober merged commit eb9eda58ad into main 2026-08-26 11:38:47 -04:00
ober referenced this pull request from a commit 2026-08-26 11:38:50 -04:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ober/jerboa-shell-extras!25
No description provided.