release(v1.9.4): mempalace 3.10.0 with a pinned palace root, pi-atelier v0.10.3, pi held at 0.85.1
Three pins move or are deliberately held; the CHANGELOG's Unreleased section
becomes the v1.9.4 entry in this same commit, because since ee6cb9e the tag
build runs check-doc-drift.sh check 9 and every would-bake value must be named
above the last published heading.
mempalace 3.9.0 -> 3.10.0 (Dockerfile.base). Deferred at v1.9.3 for two
"Upgrade notes" items; both re-measured against the 3.10.0 wheel:
- New installs resolve ~/.config/mempalace. The order is $MEMPALACE_CONFIG_DIR,
then ~/.mempalace IF it holds config.json / people_map.json /
palace/chroma.sqlite3, then XDG. An EMPTY ~/.mempalace fails that test, and
an empty ~/.mempalace is what a freshly mounted devbox-palace volume (or
entrypoint.sh's mkdir on a volume-less container) looks like at first boot.
Measured with a fresh $HOME and `uvx mempalace==3.10.0 init`: config.json
landed in ~/.config/mempalace, ~/.mempalace stayed empty, and
entrypoint-user.sh's `[ ! -d ~/.mempalace/palace ]` would fire every start.
Same run with MEMPALACE_CONFIG_DIR set: everything in ~/.mempalace.
=> ENV MEMPALACE_CONFIG_DIR=/home/${USER_NAME}/.mempalace, placed in the
non-root-user section where USER_NAME is in scope, and entrypoint-user.sh
reads PALACE_DIR from the same variable (old path as fallback). Existing
volumes were safe either way; this is for first boots. MEMPALACE_PALACE_PATH
is still honoured (config.py:927), so smoke-test.sh's stage test holds.
- event_list defaults newest-first without a cursor. Server-side: the
extension talks to synlig over MEMPALACE_REMOTE_URL, so it lands when the
hub upgrades. mempalace-toolkit 2167a1b (floating main) makes every
cursor-less call say order:"desc" so the mailbox reads the same window on
either server version.
Corrected a stale sequencing comment while there: synlig serves the palace as
a `uv tool` under systemd (mempalace-serve.service; measured 2026-09-22:
mempalace 3.9.0, python 3.12.13, chromadb 1.5.9, no palace container), not via
docker-compose.mempalace.yml as the comment had said for two releases.
pi-atelier v0.10.1 -> v0.10.3 (Dockerfile.variant). Fixes only (both tags
released 2026-09-22); package.json at v0.10.3 still has zero runtime deps and no
build script, peerDeps still >=0.84.0. Annotated tags: the CHANGELOG names the
peeled SHA ed3837b, which is what resolve-versions bakes and check 9 compares.
pi HELD at 0.85.1 while 0.86.1 / 0.87.0 exist. 0.87.0 removed the
shouldStopAfterTurn agent option; pi-observational-memory 3.1.4 still uses it
and AgentContext.systemPrompt in observer/reflector/dropper (measured: 1 hit
per worker in src/agents on both the baked 3.1.3 tree and upstream master;
finishTurn 0). peerDeps are `*`, so it would break at runtime, not install.
Upstream #82, fix PR #83 open and unmerged. Bump pi and pi-obsmem together
once #83 ships. The other extensions are clean against the 0.86/0.87 lists.
Verified locally the way CI does: check-doc-drift.sh rc=0 with check 9
reporting all four moved components as named above the v1.9.3 heading;
lint-shell.sh rc=0; hadolint 2.15.1 (CI's pin, with .hadolint.yaml) rc=0 on
both Dockerfiles; PyPI 3.10.0 present, not yanked. Two claims caught by
re-measurement before commit and corrected in the text: a pi issue number
that does not exist on the 0.87.0 changelog line, and "8 shouldStopAfterTurn
hits" that was 3 (one per worker) in src/.
Still open before the tag: run the feeder from the built image against the
3.9.0 hub (dry-run first); recreate acceptance must show ~/.mempalace/palace
still passing and no ~/.config/mempalace appearing. After acceptance: upgrade
synlig's tool to 3.10.0.
This commit is contained in:
+65
-10
@@ -14,7 +14,7 @@
|
||||
# content-addressed over this file, so any byte change invalidates the
|
||||
# cache. Recommended cadence: once per release for security updates.
|
||||
#
|
||||
# BASE_REBUILD_DATE: 2026-09-19 (v1.9.3 — mempalace-version label, mempalace-toolkit 817b3a8 mine deadline, pi-extensions skill floor 25c1265; the marker had been stale since 2026-07-13 through the v1.9.0 Node 24 and v1.9.2 npm-residue rebuilds, updated now because the base is rebuilding anyway)
|
||||
# BASE_REBUILD_DATE: 2026-09-22 (v1.9.4 — mempalace 3.9.0 -> 3.10.0 with ENV MEMPALACE_CONFIG_DIR pinning the layout, mempalace-toolkit 2167a1b explicit event_list order; previous marker 2026-09-19 / v1.9.3)
|
||||
#
|
||||
# ── Lineage note ─────────────────────────────────────────────────────
|
||||
# Adapted from opencode-devbox/Dockerfile.base (commit before v1.16.2).
|
||||
@@ -532,14 +532,22 @@ ARG INSTALL_MEMPALACE=true
|
||||
# the part that should stay manual.
|
||||
#
|
||||
# Deployment sequencing note for whoever ships this bump: synlig (the shared
|
||||
# central palace host) serves mempalace 3.8.0 SERVER-SIDE via
|
||||
# docker-compose.mempalace.yml, which reuses this same devbox image. (Measured
|
||||
# 2026-09-06 over ssh: synlig's UV_TOOL_DIR mempalace entry last changed
|
||||
# 2026-08-25 15:33 — this comment previously said 3.7.1, which was stale.)
|
||||
# Bumping this ARG changes only the CLIENT version baked into pi-devbox
|
||||
# images: it introduces client/server skew until synlig's compose stack is
|
||||
# separately rebuilt/redeployed with the new pin. Not something to code around
|
||||
# here — just sequence the redeploy.
|
||||
# central palace host) serves mempalace SERVER-SIDE as a `uv tool` install run
|
||||
# by the systemd unit `mempalace-serve.service` (`python -m mempalace.mcp_server
|
||||
# --transport http`), NOT via docker-compose.mempalace.yml — that compose file
|
||||
# exists in this repo but is not what runs there. (Measured 2026-09-22 over
|
||||
# ssh: `uv tool list` -> mempalace v3.9.0, python 3.12.13, chromadb 1.5.9;
|
||||
# `docker ps` matched no palace container. This comment previously said the
|
||||
# compose stack served 3.8.0, which was stale on both counts.) Bumping this ARG
|
||||
# changes only the CLIENT version baked into pi-devbox images: it introduces
|
||||
# client/server skew until synlig's tool is upgraded (`uv tool upgrade
|
||||
# mempalace` + restart the unit). Not something to code around here — just
|
||||
# sequence the upgrade. And note which side OWNS what: MCP tool semantics
|
||||
# (event_list ordering, kg_timeline pagination, search result fields) come
|
||||
# from the SERVER the extension talks to over MEMPALACE_REMOTE_URL, so they
|
||||
# change when synlig upgrades; only the local CLI (`mempalace init` at first
|
||||
# run, the mempalace-pi-session feeder) and the on-disk layout under
|
||||
# ~/.mempalace change when THIS pin does.
|
||||
#
|
||||
# v1.8.13: 3.8.0 -> 3.9.0. Audited: no Breaking/Removed changelog headings.
|
||||
# Adopted mainly for #2281 (`mempalace_mine` accepts a single conversation
|
||||
@@ -551,7 +559,42 @@ ARG INSTALL_MEMPALACE=true
|
||||
# (release awareness, `task create`/`task launch` MCP tools) are SERVER-side,
|
||||
# so they stay dark until synlig is redeployed — a client bump alone cannot
|
||||
# light them up.
|
||||
ARG MEMPALACE_VERSION=3.9.0
|
||||
#
|
||||
# v1.9.4: 3.9.0 -> 3.10.0 (PyPI 2026-09-15). Deferred at v1.9.3 for two
|
||||
# "Upgrade notes" items; both re-measured against the 3.10.0 wheel, one needed
|
||||
# an adaptation:
|
||||
# - "New installs keep config and palace under ~/.config/mempalace". The
|
||||
# resolution order is $MEMPALACE_CONFIG_DIR, then ~/.mempalace IF it holds
|
||||
# config.json / people_map.json / palace/chroma.sqlite3, then XDG. An
|
||||
# EMPTY ~/.mempalace does not count — and an empty ~/.mempalace is exactly
|
||||
# what a freshly mounted devbox-palace volume (or entrypoint.sh's mkdir on
|
||||
# a volume-less container) looks like at first boot. Measured with a fresh
|
||||
# $HOME: `mempalace init` wrote to ~/.config/mempalace, outside the
|
||||
# persisted path, and entrypoint-user.sh's first-run test
|
||||
# `[ ! -d ~/.mempalace/palace ]` would stay true on every start. With
|
||||
# MEMPALACE_CONFIG_DIR set, everything landed in ~/.mempalace. Hence the
|
||||
# ENV MEMPALACE_CONFIG_DIR below (in the non-root-user section, where
|
||||
# ${USER_NAME} is in scope): first in the resolution order, so the
|
||||
# heuristic never runs and the image's layout contract no longer depends
|
||||
# on it. Existing volumes were safe either way (config.json is a legacy
|
||||
# marker); the ENV is for first boots. palace_path still defaults to
|
||||
# <config_dir>/palace and MEMPALACE_PALACE_PATH is still honoured (config.py
|
||||
# :927), so scripts/smoke-test.sh's stage-path test keeps its meaning.
|
||||
# - "MCP event listing returns the newest events first when no cursor is
|
||||
# given". SERVER-side (see above), so it lands when synlig upgrades, not
|
||||
# here. mempalace-toolkit 2167a1b made every cursor-less event_list call
|
||||
# in the pi extension say `order: "desc"` explicitly, so the mailbox reads
|
||||
# the same window against either server version.
|
||||
# Also in the notes, neither reaching this image: `mempalace rules` dropped
|
||||
# `--agent` (no caller in pi-devbox, mempalace-toolkit, skillset or myconfigs);
|
||||
# `get_collection()` refuses unknown collection names (library callers only).
|
||||
# MCP tool-schema review, as always: no tool removed or renamed; additive
|
||||
# fields on search results (filed_at / content_date provenance), `limit` /
|
||||
# `offset` on kg_timeline, `last_modified` on drawers. Skew-relevant while
|
||||
# synlig stays on 3.9.0: CLI writes now follow the daemon write-routing policy
|
||||
# (direct / prefer / require) — the feeder against a 3.9.0 hub is the one
|
||||
# thing to exercise before tagging.
|
||||
ARG MEMPALACE_VERSION=3.10.0
|
||||
# Recorded as a label HERE, not in Dockerfile.variant, for three reasons: the
|
||||
# value lives next to the ARG that defines it (a second copy in the variant
|
||||
# would be one more pin able to drift, which is the class check-doc-drift.sh
|
||||
@@ -832,6 +875,18 @@ print('chromadb embedding model warmed: all-MiniLM-L6-v2')" && \
|
||||
ENV NPM_CONFIG_PREFIX=/home/${USER_NAME}/.pi/npm-global
|
||||
ENV PATH="/home/${USER_NAME}/.pi/npm-global/bin:${PATH}"
|
||||
|
||||
# ── MemPalace config/palace root: pin it, do not let a heuristic pick it ──
|
||||
# mempalace >= 3.10.0 resolves its config dir as $MEMPALACE_CONFIG_DIR, then
|
||||
# ~/.mempalace ONLY if it already holds a config/palace, else ~/.config/mempalace
|
||||
# (XDG). An empty ~/.mempalace — a fresh devbox-palace volume, or entrypoint.sh's
|
||||
# mkdir on a volume-less container — fails that test, so a first boot would put
|
||||
# the palace outside the persisted path and re-run first-run init forever. This
|
||||
# ENV is first in the order, so the layout is what entrypoint.sh (mkdir),
|
||||
# entrypoint-user.sh (first-run test), the feeder's <palace-root>/pi-stage and
|
||||
# scripts/recreate-sanity-check.sh all already assume. Rationale and the
|
||||
# measurement live with ARG MEMPALACE_VERSION above; keep the two in step.
|
||||
ENV MEMPALACE_CONFIG_DIR=/home/${USER_NAME}/.mempalace
|
||||
|
||||
# ── Shell defaults (bash history, aliases, readline) ─────────────────
|
||||
RUN mkdir -p /etc/skel-devbox
|
||||
COPY rootfs/home/developer/.bash_aliases /etc/skel-devbox/.bash_aliases
|
||||
|
||||
Reference in New Issue
Block a user