Handoff: fix stale extras patch failures and verify all-features build #102

Open
opened 2026-09-25 17:04:14 -04:00 by ober · 0 comments
Owner

Handoff objective

Continue and complete the fix for the shell all-features build reported in the attached failure log:

/Users/user/.codex/attachments/4f3f7249-e0bd-4095-b703-d1d88b66ce32/pasted-text-1.txt

The original failure showed patch rejects during the merged jerboa-shell build, followed by an untrusted claim that a binary had been built and tested. The required outcome is a reproducible current-master build with no stale patch rejects, a real all-features macOS binary, and a runtime smoke check.

Exact failure reproduced

On current merged master (shell PR #98 already merged), a clean vendor bootstrap produced:

  • support/source-lock.tsv.rej
  • test/test-jdisk.sh.rej (“Ignoring previously applied (or reversed) patch.”)
  • support/jsh-jerbuild-symbols.list.rej
  • jerboa-src/src/jsh/mux-server.ss.rej

The Android rollback patch targeted an older mux-server.ss layout. The current extras checkout has no MSG-ANDROID-UNLOCK handler, so the patch was obsolete for this target. The jdisk test, dependency lock, and symbol-list content already exist in the pinned merged extras commit, so those patch hunks were stale. The original noninteractive attempt also failed at the embed passphrase prompt because there was no /dev/tty; batch verification must set JSH_BATCH=1 JSH_EMBED_ENCRYPT=0 (or provide a passphrase file).

Completed implementation

Working checkout:

/Users/user/work/jerboa-shell-fix

Branch:

fix/clean-patch-application

Final commit:

5af08db Fix stale extras patch application

Final commit changes only:

  • VERSION: 0.12.0 -> 0.12.1
  • support/patch-extras-build.sh:
    • gate the Android rollback patch on the presence of MSG-ANDROID-UNLOCK;
    • capture expected jdisk/top patch output so stale expected hunks do not print false patch failures;
    • preserve diagnostic output for unexpected patch failures;
    • remove generated reject files through the existing recovery paths.

The full patch payloads in support/extras-jdisk-integration*.patch and support/extras-top-build.patch were deliberately preserved because repository static tests require their historical content.

No files in /Users/user/mine/jerboa-shell were edited for the feature work. No infra_ansible push was performed.

Verification already completed

In the disposable checkout:

  1. Clean patch replay against the pinned extras commit:

    • exit code 0;
    • no “hunks failed”, “hunks ignored”, “saving rejects”, or .rej output;
    • no .rej or .orig files remained.
  2. Static extras test:

    sh test/test-make-extras.sh
    

    Result: PASS: make extras wiring.

  3. Clean all-features macOS build:

    make clean
    git clean -xfd
    # vendor was absent before bootstrap
    JSH_EMBED=/Users/user/.embed JSH_BATCH=1 make features-all
    JSH_BATCH=1 JSH_EMBED_ENCRYPT=0 make binary
    

    Result: exit code 0.

  4. Binary evidence:

    • jsh-macos: Mach-O 64-bit executable arm64
    • runtime smoke:
    timeout 10 env JSH_BATCH=1 JSH_EMBED_ENCRYPT=0 ./jsh-macos -c 'printf "JSH_BINARY_SMOKE_OK\\n"' </dev/null
    

    Result: JSH_BINARY_SMOKE_OK.

  5. PR and CI:

    • jerboa-shell PR #100
    • required CI: success
    • version-policy: success
    • PR head: 5af08dba5229de2ea7768ae25deda4da94a184de

Remaining work

  • A human must merge PR #100. Do not self-merge.
  • After merge, update the authoritative /Users/user/mine/jerboa-shell checkout from origin/master.
  • Confirm the merged checkout’s normal make features-all / make binary path and the resulting binary before handing it to the user.
  • Remove the disposable checkout /Users/user/work/jerboa-shell-fix only after the PR is merged and the deliverable is handed off.
  • Do not push or create a PR in infra_ansible; that repository has no real remote and the user explicitly prohibited that.

Important handoff constraints

  • Always include direct PR URLs when discussing PR status.
  • Never claim a build or test without command output proving it.
  • Do not edit /Users/user/mine/jerboa-shell directly for feature work; use a pristine ~/work/ checkout.
  • Do not reintroduce the deleted patch hunks as a “fix”; static tests require the patch files to retain their content, while the application script must recognize and quietly handle expected stale hunks.
## Handoff objective Continue and complete the fix for the shell all-features build reported in the attached failure log: `/Users/user/.codex/attachments/4f3f7249-e0bd-4095-b703-d1d88b66ce32/pasted-text-1.txt` The original failure showed patch rejects during the merged `jerboa-shell` build, followed by an untrusted claim that a binary had been built and tested. The required outcome is a reproducible current-master build with no stale patch rejects, a real all-features macOS binary, and a runtime smoke check. ## Exact failure reproduced On current merged `master` (shell PR #98 already merged), a clean vendor bootstrap produced: - `support/source-lock.tsv.rej` - `test/test-jdisk.sh.rej` (“Ignoring previously applied (or reversed) patch.”) - `support/jsh-jerbuild-symbols.list.rej` - `jerboa-src/src/jsh/mux-server.ss.rej` The Android rollback patch targeted an older `mux-server.ss` layout. The current extras checkout has no `MSG-ANDROID-UNLOCK` handler, so the patch was obsolete for this target. The jdisk test, dependency lock, and symbol-list content already exist in the pinned merged extras commit, so those patch hunks were stale. The original noninteractive attempt also failed at the embed passphrase prompt because there was no `/dev/tty`; batch verification must set `JSH_BATCH=1 JSH_EMBED_ENCRYPT=0` (or provide a passphrase file). ## Completed implementation Working checkout: `/Users/user/work/jerboa-shell-fix` Branch: `fix/clean-patch-application` Final commit: `5af08db Fix stale extras patch application` Final commit changes only: - `VERSION`: `0.12.0 -> 0.12.1` - `support/patch-extras-build.sh`: - gate the Android rollback patch on the presence of `MSG-ANDROID-UNLOCK`; - capture expected jdisk/top patch output so stale expected hunks do not print false patch failures; - preserve diagnostic output for unexpected patch failures; - remove generated reject files through the existing recovery paths. The full patch payloads in `support/extras-jdisk-integration*.patch` and `support/extras-top-build.patch` were deliberately preserved because repository static tests require their historical content. No files in `/Users/user/mine/jerboa-shell` were edited for the feature work. No `infra_ansible` push was performed. ## Verification already completed In the disposable checkout: 1. Clean patch replay against the pinned extras commit: - exit code `0`; - no “hunks failed”, “hunks ignored”, “saving rejects”, or `.rej` output; - no `.rej` or `.orig` files remained. 2. Static extras test: ``` sh test/test-make-extras.sh ``` Result: `PASS: make extras wiring`. 3. Clean all-features macOS build: ``` make clean git clean -xfd # vendor was absent before bootstrap JSH_EMBED=/Users/user/.embed JSH_BATCH=1 make features-all JSH_BATCH=1 JSH_EMBED_ENCRYPT=0 make binary ``` Result: exit code `0`. 4. Binary evidence: - `jsh-macos: Mach-O 64-bit executable arm64` - runtime smoke: ``` timeout 10 env JSH_BATCH=1 JSH_EMBED_ENCRYPT=0 ./jsh-macos -c 'printf "JSH_BINARY_SMOKE_OK\\n"' </dev/null ``` Result: `JSH_BINARY_SMOKE_OK`. 5. PR and CI: - [jerboa-shell PR #100](https://git.jerboa.sh/ober/jerboa-shell/pulls/100) - required CI: success - version-policy: success - PR head: `5af08dba5229de2ea7768ae25deda4da94a184de` ## Remaining work - A human must merge [PR #100](https://git.jerboa.sh/ober/jerboa-shell/pulls/100). Do not self-merge. - After merge, update the authoritative `/Users/user/mine/jerboa-shell` checkout from `origin/master`. - Confirm the merged checkout’s normal `make features-all` / `make binary` path and the resulting binary before handing it to the user. - Remove the disposable checkout `/Users/user/work/jerboa-shell-fix` only after the PR is merged and the deliverable is handed off. - Do not push or create a PR in `infra_ansible`; that repository has no real remote and the user explicitly prohibited that. ## Important handoff constraints - Always include direct PR URLs when discussing PR status. - Never claim a build or test without command output proving it. - Do not edit `/Users/user/mine/jerboa-shell` directly for feature work; use a pristine `~/work/` checkout. - Do not reintroduce the deleted patch hunks as a “fix”; static tests require the patch files to retain their content, while the application script must recognize and quietly handle expected stale hunks.
Sign in to join this conversation.
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#102
No description provided.