Files
ssmithxandClaude Opus 5.5 19cc5603c7 build(routstr): build Routstr main 8ce9ef69 for X-Cashu failure refunds
v0.5.0 kept an X-Cashu payment without refund when forwarding or
settlement failed after redemption (an upstream timeout, a read error, an
upstream error). Upstream #829 and #872 fix that, but no release is tagged
after v0.5.0, so the image pins main at 8ce9ef69 (2026-10-24, upstream CI
green), still by immutable commit with the frozen lock.

Checked against the interfaces the node uses: unchanged, plus one additive
migration. On a fake-Lightning test mint, starting on a copy of a v0.5.0
database: migrations run and settings and price carry over; an upstream
timeout now returns all redeemed sats (424 with x-cashu) and saves them for
claims; a buyer hanging up mid-request gets its change saved. A Routstr
restart mid-request still saves nothing (claims stay "pending"), recorded
for an upstream report.

App 0.5.0-archy2, image localhost/archy-routstr:0.5.0-archy2.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 21:26:03 +00:00

39 lines
1.9 KiB
Docker

# Candidate package: lifecycle and paid-provider acceptance remain pending.
# Source is immutable; the base image is pinned by multi-arch index digest.
FROM ghcr.io/astral-sh/uv:python3.14-bookworm-slim@sha256:7cf77f594be8042dab6daa9fe326f90962252268b4f120a7f5dccce4d947e6c1
RUN apt-get update && apt-get install -y --no-install-recommends \
git build-essential pkg-config libffi-dev libsecp256k1-dev \
autoconf automake libtool \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /opt/routstr
# Routstr Core main at 8ce9ef69 (2026-10-24): v0.5.0 plus 87 commits, among
# them the X-Cashu refunds on upstream failure (#829, #872). No release is
# tagged after v0.5.0 yet. Do not substitute latest or a moving branch.
RUN git init . \
&& git remote add origin https://github.com/Routstr/routstr-core.git \
&& git fetch --depth 1 origin 8ce9ef69fc1b5ecd6f92f1baf54d8c2620ea0e89 \
&& git checkout --detach FETCH_HEAD \
&& test "$(git rev-parse HEAD)" = 8ce9ef69fc1b5ecd6f92f1baf54d8c2620ea0e89 \
&& uv sync --frozen --no-dev --no-install-project \
&& rm -rf .git
# alembic.ini's script_location is cwd-relative, but cwd is /data below.
RUN sed -i 's|^script_location = migrations$|script_location = %(here)s/migrations|' alembic.ini \
&& grep -qx 'script_location = %(here)s/migrations' alembic.ini
ENV PYTHONPATH=/opt/routstr \
PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1 \
GIT_COMMIT=8ce9ef69fc1b5ecd6f92f1baf54d8c2620ea0e89 \
GIT_TAG=
# Upstream's .wallet and logs paths are relative to cwd. Keep them beside
# keys.db and the encryption key, not on the read-only application filesystem.
WORKDIR /data
EXPOSE 8000
# Starts uvicorn, then applies the node wallet's mints/payout address and the
# install-default model price through Routstr's own admin API.
COPY archy-start.py /opt/archy/archy-start.py
CMD ["/opt/routstr/.venv/bin/python", "/opt/archy/archy-start.py"]