Skip to content

update io.pilot.bowmark v1.0.2: exits with its daemon, drops abandoned calls, keeps a live instance's socket - #120

Draft
TeoSlayer wants to merge 1 commit into
mainfrom
fix/bowmark-lifecycle
Draft

TeoSlayer wants to merge 1 commit into
mainfrom
fix/bowmark-lifecycle

Conversation

@TeoSlayer

Copy link
Copy Markdown
Contributor

Draft. Do not merge yet. Merging this runs publish-rich-from-r2.sh, which builds the catalogue entry from whatever is on R2 under bundles/io.pilot.bowmark/1.0.2/. Merge only after all of these are done:

  1. fix(scaffold): generated adapters exit with their daemon and drop abandoned calls #111 is merged. It is the template fix this version exists to ship.
  2. fix(publish): rich republish keeps the listing's categories, license and source_url #112 is merged. Without it, the generated catalogue entry drops bowmark's categories and license and changes its source_url.
  3. Optional: fix(publish): bundle tarballs no longer record the builder's account #119 is merged, so the tarballs stop recording the builder's account. The current 1.0.1 bundles list alexgodo staff.
  4. The four 1.0.2 bundles are built from that main with publish.BuildBundle, signed with bowmark's publisher key (ed25519:Lmf0vzz0CNPu94pbqsbD/ueSuOaKsGc0xU/DoL+Yu7c=), uploaded to R2, and checked over their public URLs (docs/UPDATING-BUNDLES.md).

What this is

Only the version changes, 1.0.1 → 1.0.2. The bowmark adapter is generated from the template, so the fix is in #111 and this PR ships it. Nothing in bowmark's spec changes. pilot-app verify-submission passes (4 platforms), and so does pilot-app verify-update (1.0.2 ≥ 1.0.1).

Verified: published 1.0.1 vs 1.0.2 rebuilt from #111

1.0.2 was built from 80d19b2 (#111 head) plus #119, using publish.BuildBundle, go1.25.3 and a TEST-ONLY key. Nothing was uploaded, and nothing was signed with a real key. Binary sha256 was identical across two builds made with different keys, on all 4 platforms.

pilot-app verify passed on all 4 1.0.2 tarballs. file: Mach-O arm64, Mach-O x86_64, ELF aarch64, ELF x86-64.

Test setup:

  • Harness: spawns the app with the supervisor's flags in its own process group, with no Pdeathsig, like app-store v1.0.2, which daemon v1.13.9 pins.
  • The bowmark.run / get_library backend was a local mock, set via BOWMARK_BACKEND_URL, so api.bowmark.ai was not called.
  • Platforms: darwin/amd64 ran under Rosetta. Linux ran in docker --init --network none, with the app at RLIMIT_NOFILE=256 (the supervisor's childFDLimit). linux/amd64 was emulated on an arm64 host.
1.0.1 (published) 1.0.2
bowmark.help ×200 200/200 on all 4, fd flat (7→7, linux-amd64 19→19) 200/200 on all 4, fd flat
get_library ×200 (mock) 200/200, fd 7→8 200/200, fd 7→8
Parent SIGKILLed (orphan) ORPHAN on all 4: alive 6 s later, ppid=1, still answering IPC SELF-EXIT in 224–251 ms on all 4, socket removed
20 abandoned bowmark.run (darwin) fd 8→47, 20/20 backend requests still open fd 8→7, 0/20 still open
300 abandoned bowmark.run (linux, fd limit 256) crashes after 124 (arm64) / 118 (amd64): serve: accept: accept unix …/app.sock: accept4: too many open files, then exit 1 alive, fd 8→8 (arm64) / 20→20 (amd64), 300/300 backend requests cancelled, help OK
160 waiting callers, then hang-up (linux) fd peaks at 256; after hang-up fd stays at 185 / 173 (held until the 180 s method timeout) fd peaks at 256, the app stays up; after hang-up fd back to 8 / 20, help OK
Socket ownership: A bound, B rebinds the path, then SIGTERM to A B's socket deleted: connect: no such file or directory while B runs (all 4) B's socket intact (same inode), help via B OK (all 4)
SIGTERM exits in 51–87 ms, code 0, socket removed, process group empty same
SIGKILL of the pid (supervisor stop path) exit -1, app.sock left behind same. This is the supervisor's job (app-store cmd.Cancel), not the adapter's

RSS over 200 help calls: 1.0.2 grew 3–6 MB (e.g. darwin-arm64 12.1→17.2 MB), 1.0.1 by the same amount.

🤖 Generated with Claude Code

…abandoned calls, keeps a live instance's socket

Version bump only. 1.0.2 is 1.0.1 rebuilt from the template fix in
#111; nothing in bowmark's spec changes.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants