• v1.8.2 ffd54750b9

    v1.8.2 — ship the feeder fix for a silent transcript-feed failure
    Publish Docker Image / resolve-versions (push) Successful in 25s
    Lint / actionlint (push) Successful in 30s
    Publish Docker Image / base-decide (push) Successful in 8s
    Lint / hadolint (push) Successful in 46s
    Publish Docker Image / build-base (push) Successful in 41m26s
    Publish Docker Image / smoke (push) Successful in 4m45s
    Publish Docker Image / smoke-studio (push) Successful in 5m11s
    Publish Docker Image / build-variant-studio (push) Successful in 17m44s
    Publish Docker Image / build-variant (push) Successful in 23m41s
    Publish Docker Image / update-description (push) Successful in 6s
    Publish Docker Image / promote-base-latest (push) Successful in 10s

    joakimp released this 2026-08-16 00:53:46 +02:00 | 92 commits to main since this release

    The v1.8.1 image was the first to actually run the pi transcript feeder, and its
    first boot (EMB-7KJ4VR4G, 2026-08-15) shipped seven session transcripts to the
    palace host and filed none of them — while reporting success.

    Two halves, either of which alone would have been caught:

    1. The feeder's default MEMPALACE_PI_REMOTE_PATH is /data/feed, which assumes a
      CONTAINERIZED palace server with the inbox bind-mounted there. That fleet's
      primary runs natively (systemd user unit + uv tool), so it sees only host
      paths and the mine failed with "source directory not found". rsync had
      already succeeded, so the inbox on the palace host looked perfectly healthy.
    2. Success was decided with '"error"' in body. MCP returns HTTP 200 with the
      tool's own JSON ESCAPED inside result.content[].text, so those bytes are
      "error" and the substring never matched: the catch-up log printed
      "Done. Wing 'wing_conversations' updated." directly under the error JSON and
      exited 0.

    Ships:

    • mempalace-toolkit >= b609cf5 baked: envelope parsing (JSON-RPC error, MCP
      isError, inner success=false), an "unverified" state instead of assuming the
      good case, a preflight warning when the ship path and MEMPALACE_PI_REMOTE_PATH
      disagree, and no more faking NEW/SKIP from the local palace in remote mode.
    • smoke: mempalace-pi-session --self-test against the BAKED toolkit — six
      recorded MCP responses (fixture 1 is the verbatim failure body) plus a
      regression guard asserting the old substring check is blind to it. A stale
      MEMPALACE_TOOLKIT_REF can no longer ship a silently-failing feeder.
    • .env.example: MEMPALACE_PI_REMOTE_PATH is the path the SERVER PROCESS opens.

    Image pins unchanged from v1.8.1: pi 0.84.2, pi-atelier v0.8.1.

    The new smoke call is deliberately bare, with no HOME= prefix: run() uses
    docker run --entrypoint="" and no Dockerfile sets HOME, so it exercises the
    no-HOME container that cost v1.8.0 a release — b609cf5 makes the feeder derive
    HOME from the passwd database rather than assuming the image provides it.

    Downloads