Add jpkg package CI

ober

8f6a5364473c34c605c653557b8720f5318cdb33

diff --git a/.build.yml b/.build.yml
index a0d3e31..889f377 100644
--- a/.build.yml
+++ b/.build.yml
@@ -3,7 +3,7 @@ packages:
   - build-essential
   - libncurses-dev
   - uuid-dev
-  - libz-dev
+  - zlib1g-dev
   - liblz4-dev
   - libx11-dev
   - git
@@ -13,6 +13,8 @@ packages:
 sources:
   - https://git.sr.ht/~lisp/jerboa-code
   - https://git.sr.ht/~lisp/jerboa
+artifacts:
+  - jerboa-code/jerboa-code-0.1.0.jpkg
 tasks:
   - setup-rust: |
       # jerboa's native FFI lib (libjerboa_native) is built with cargo and is
@@ -23,11 +25,20 @@ tasks:
       curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain stable
       echo 'source "$HOME/.cargo/env"' >> ~/.buildenv
   - build-jerboa-tools: |
-      # The v0.2.0 Linux release jerbuild does not register libc strerror for
-      # one of its bundled stdlib imports. Build current jerbuild from source
-      # until the next release includes that static-symbol fix.
+      # Build the current multicall tool so CI exercises the same
+      # jerboa/jerbuild/jpkg image users install.
       cd jerboa
-      make jerbuild
+      make jerboa
+      echo 'export PATH="$HOME/jerboa/dist:$PATH"' >> ~/.buildenv
+  - package-code: |
+      cd jerboa-code
+      J="$HOME/jerboa/dist/jerboa"
+      "$J" pkg verify
+      "$J" pkg policy
+      "$J" pkg build
+      "$J" pkg pack --output "$PWD/jerboa-code-0.1.0.jpkg"
+      "$J" pkg verify "$PWD/jerboa-code-0.1.0.jpkg"
+      "$J" pkg verify --reproduce
   - vendor-code: |
       cd jerboa-code
       mkdir -p vendor
diff --git a/Makefile b/Makefile
index 10993fb..abfaedb 100644
--- a/Makefile
+++ b/Makefile
@@ -3,11 +3,11 @@
 # native `binary` need NO jerboa source checkout and NO separately-built Chez.
 JERBOA_VERSION ?= v0.2.0
 JERBOA_TOOL_DIR ?= $(CURDIR)/.jerboa/bin
-JERBUILD ?= $(shell if [ -x ./jerbuild ] && [ -x ./jerboa ]; then echo ./jerbuild; \
-	elif [ -x "$(JERBOA_TOOL_DIR)/jerbuild" ] && [ -x "$(JERBOA_TOOL_DIR)/jerboa" ]; then echo "$(JERBOA_TOOL_DIR)/jerbuild"; \
-	elif [ -x ../jerboa/dist/jerbuild ] && [ -x ../jerboa/dist/jerboa ]; then echo ../jerboa/dist/jerbuild; \
+JERBUILD ?= $(shell if [ -x ./jerbuild ]; then echo ./jerbuild; \
+	elif [ -x "$(JERBOA_TOOL_DIR)/jerbuild" ]; then echo "$(JERBOA_TOOL_DIR)/jerbuild"; \
+	elif [ -x ../jerboa/dist/jerbuild ]; then echo ../jerboa/dist/jerbuild; \
 	elif [ -x ../jerboa/jerbuild ]; then echo ../jerboa/jerbuild; \
-	elif command -v jerbuild >/dev/null 2>&1 && command -v jerboa >/dev/null 2>&1; then command -v jerbuild; \
+	elif command -v jerbuild >/dev/null 2>&1; then command -v jerbuild; \
 	else echo "$(JERBOA_TOOL_DIR)/jerbuild"; fi)
 
 # Bundled stdlib path (Chez + jerboa libs live under $(JH)/lib). Resolved by
@@ -80,15 +80,15 @@ help:
 	@echo "  android-clean  Remove android/build/"
 
 ensure-jerboa-tools:
-	@if [ -x ./jerbuild ] && [ -x ./jerboa ]; then \
+	@if [ -x ./jerbuild ]; then \
 	  echo "=== Using project-local ./jerbuild ==="; \
-	elif [ -x "$(JERBOA_TOOL_DIR)/jerbuild" ] && [ -x "$(JERBOA_TOOL_DIR)/jerboa" ]; then \
+	elif [ -x "$(JERBOA_TOOL_DIR)/jerbuild" ]; then \
 	  echo "=== Using downloaded Jerboa toolchain: $(JERBOA_TOOL_DIR) ==="; \
-	elif [ -x ../jerboa/dist/jerbuild ] && [ -x ../jerboa/dist/jerboa ]; then \
+	elif [ -x ../jerboa/dist/jerbuild ]; then \
 	  echo "=== Using sibling Jerboa build: ../jerboa/dist/jerbuild ==="; \
 	elif [ -x ../jerboa/jerbuild ]; then \
 	  echo "=== Using sibling Jerboa build: ../jerboa/jerbuild ==="; \
-	elif command -v jerbuild >/dev/null 2>&1 && command -v jerboa >/dev/null 2>&1; then \
+	elif command -v jerbuild >/dev/null 2>&1; then \
 	  echo "=== Using Jerboa toolchain from PATH: $$(command -v jerbuild) ==="; \
 	else \
 	  echo "=== Fetching Jerboa $(JERBOA_VERSION) release tools into $(JERBOA_TOOL_DIR) ==="; \
diff --git a/jpkg.policy.sexp b/jpkg.policy.sexp
new file mode 100644
index 0000000..7d85b4a
--- /dev/null
+++ b/jpkg.policy.sexp
@@ -0,0 +1,3 @@
+(policy
+  (mode dev)
+  (allow (native-build) (build-network) (test-network) (ffi)))
diff --git a/jpkg.sexp b/jpkg.sexp
new file mode 100644
index 0000000..cd2c047
--- /dev/null
+++ b/jpkg.sexp
@@ -0,0 +1,14 @@
+(package
+  (name "@lisp/jerboa-code")
+  (version "0.1.0")
+  (description "Portable AI coding agent")
+  (license "UNLICENSED")
+  (source "https://git.sr.ht/~lisp/jerboa-code")
+  (jerboa ">=0.2.0")
+  (modules ((root "src")))
+  (dependencies ())
+  (dev-dependencies ())
+  (capabilities ((native-code reason: "termbox TUI shim and jerboa-native TLS/crypto")
+                 (network build: #t test: #t)
+                 (ffi libraries: ("jerboa_native" "termbox2"))
+                 (executables ("jcode")))))