release(v1.12.0): pi 1.3.0, mempalace 3.11.0, pi-atelier v0.16.0
Lint / hadolint (push) Successful in 11s
Lint / skill-floor (push) Successful in 13s
Lint / doc-drift (push) Successful in 14s
Lint / actionlint (push) Successful in 24s
Publish Docker Image / lint-gate (push) Successful in 27s
Publish Docker Image / resolve-versions (push) Successful in 11s
Publish Docker Image / base-decide (push) Successful in 15s
Publish Docker Image / build-base (push) Successful in 55m24s
Publish Docker Image / smoke-studio (push) Successful in 6m45s
Publish Docker Image / smoke (push) Successful in 9m1s
Publish Docker Image / build-variant-studio (push) Successful in 18m17s
Publish Docker Image / build-variant (push) Successful in 16m56s
Publish Docker Image / update-description (push) Successful in 8s
Publish Docker Image / promote-base-latest (push) Successful in 11s

Every component at its newest upstream release; each pinned one audited
against this image before tagging, none breaking.

- ARG PI_VERSION 1.2.0 -> 1.3.0. No breaking-changes section. pi-agent-core,
  pi-tui and dist/core/extensions are byte-identical to 1.2.0. The only
  removed export (parseModelPattern, not index-exported) and pi-ai's dropped
  assistant-message-frame re-export have 0 consumers; all 54 runtime-imported
  names across the stack and /opt/fleet-pi resolve (negative control
  reported). With a copy of tor-ms22's ~/.pi/agent: pi -p exits 0 in 10 s,
  all extensions load, bridge 45 tools, /om:* and /studio offered, atelier
  paints in both renderers (-ne controls: none).
- ARG MEMPALACE_VERSION 3.10.0 -> 3.11.0. init --yes still writes
  config.json; a 3.10.0-built palace opens, searches and serves MCP under
  3.11.0, re-mines its convo file once, then skips it; stdio MCP 45 -> 47
  tools, none removed. research() removal: 0 callers. synlig hub stays
  3.10.0 (newer-client direction); upgrade notes in CHANGELOG.
- ARG PI_ATELIER_REF/VERSION v0.15.0 -> v0.16.0 (3b42825). Additive
  (keyValues rows, progress bars, two roles, meter background). Protocol
  and pi floor unchanged; fleet:todos panel renders a real todo on both
  versions; the meter-background escape tells the two arms apart.
- Base rebuilds anyway, so BASE_REBUILD_DATE marker refreshed (uv 0.13.1,
  gitea-mcp 1.9.0, Node 24.22.0 re-resolve).
- CHANGELOG: Unreleased -> v1.12.0 — 2026-10-18. README pin table (and
  "Three" -> "Four" components), sanity-check example; DOCKER_HUB.md's stale
  "29 mempalace_* tools".

Local gates: check-doc-drift rc 0 (check 9 names pi, mempalace, atelier,
pi-extensions), lint-shell, check-workflow-shell, test-link-pi-models
13/13, test-link-pi-extensions 16/16, directive guard, skill floor.
This commit is contained in:
2026-10-18 17:19:26 +02:00
parent a6abe17edc
commit ea6605bfae
5 changed files with 163 additions and 19 deletions
+90 -8
View File
@@ -11,20 +11,49 @@ Pre-v1.0.0 tags followed the pi npm version (`v{pi_version}[letter]`).
---
## Unreleased
## v1.12.0 — 2026-10-18
No pin changes. One floating component moves (pi-extensions, below); the rest
is docs and comments. Two of the edited files are baked into the base image
(`rootfs/usr/local/bin/studio-expose` and the `pi-devbox-environment` skill),
and `base_tag` hashes all of `rootfs/`, so **the next release rebuilds the
base** rather than reusing `base-6f3b20266de1`.
Minor release. Headlines: **pi 1.3.0**, **mempalace 3.11.0**, **pi-atelier
v0.16.0**, and **fleet pi extensions linked in at every container start**
(*Added*, below). Every component is at its newest upstream release; each
pinned one was audited for breaking changes against this image before tagging
(*Changed*, below), and none was found. Unchanged upstream, re-checked
2026-10-18: pi-observational-memory `022da5e` (= `master`), pi-studio `v0.10.1`
(`76db01f`, newest tag), pi-fork `e69725c`, pi-toolkit `3760d90`,
mempalace-toolkit `d5a03f4`. The skillset is still at `1e02b44` and its
mempalace `SKILL.md` is byte-identical to the recorded `96b840e`, so the
snapshot is not refreshed (`vendor-mempalace-skill.sh --check`: OK). The base
image is rebuilt (rootfs, `Dockerfile.base` and the mempalace pin all changed),
so the base tools pinned to `latest` re-resolve too: uv `0.13.0` → `0.13.1`,
gitea-mcp `v1.8.1` → `v1.9.0` (additive: mTLS, extra headers,
`create_organization`), Node `v24.21.0` → `v24.22.0`; nvim, fzf, gitleaks,
bat, eza, zoxide, git-lfs, gosu, tealdeer, typst, yq, agent-browser and
playwright unchanged.
### Components that move with the next build
### Components that move with this release
| Component | Baked in v1.11.2 | Next build | Why |
| Component | Baked in v1.11.2 | v1.12.0 | Why |
|---|---|---|---|
| **pi** | `1.2.0` | **`1.3.0`** | audited, see *Changed* below |
| **mempalace** | `3.10.0` | **`3.11.0`** | audited, see *Changed* below |
| **pi-atelier** | `v0.15.0` (`3befe02`) | **`v0.16.0`** (`3b42825`) | audited, see *Changed* below |
| pi-extensions | `750b2a8` | **`4c1d28d`** (or later: CI resolves `main` at build time) | the `confirm-destructive` gate stops prompting on harmless redirects and catches `tee`/`dd of=` (below); picks up the AWS SSO keeper's 24-hour times too (below) |
### Upgrade notes
- **Local palaces re-mine their conversations once.** mempalace 3.11.0's
exchange chunker no longer discards text, so the first conversation mine
after upgrading re-chunks and re-embeds each conversation file it covers
(drawers of transcripts no longer on disk are kept). This only applies to a
devbox with its own palace: with `MEMPALACE_REMOTE_URL` set, the hub does the
mining, and nothing changes until the hub itself is upgraded.
- **The central palace (synlig) is still on 3.10.0.** That is the safe
direction (newer client), and the bridge's tools come from the hub, so
shared-palace devices see no change. When synlig is upgraded, its first
conversation mine re-mines every inbox transcript still on disk (upstream
estimates 40 minutes to 3 hours per million drawers): back it up first and
run it at a quiet time.
### Added
- **Fleet pi extensions are linked in at every container start**
@@ -49,6 +78,59 @@ base** rather than reusing `base-6f3b20266de1`.
`common/pi` from `docker-compose-repo`, and three of them are not reachable
from a devbox to create a symlink by hand.
### Changed
- **pi `1.2.0` → `1.3.0`.** Audited 2026-10-18 on tor-ms22 from an isolated npm
prefix, against the 1.2.0 tarballs unpacked side by side:
- 1.3.0 has **no** breaking-changes section. Its behaviour changes don't
reach this image: `--model` and `enabledModels` now resolve a bare model
id across providers by which one has credentials (every model here is
written `amazon-bedrock/…`, and pi-fork's profiles name a provider);
resumed sessions keep their active tools; a model switch drops the old
model's thinking; `kimi-coding` base-URL overrides need `/v1` (not used).
- pi-agent-core and pi-tui are byte-identical between 1.2.0 and 1.3.0
(24 and 184 files, same tree hashes), and so is pi's
`dist/core/extensions`. The obsmem turn cap lives in the first and
atelier's painting in the second.
- The only export removed from any type declaration is `parseModelPattern`
(never exported from the package index); pi-ai dropped its
`assistant-message-frame` re-export. Neither has a consumer. All 54 names
that pi-toolkit, pi-extensions, pi-fork, obsmem, pi-studio, pi-atelier,
mempalace-toolkit and the fleet extensions in `/opt/fleet-pi` import at
runtime resolve in 1.3.0; an injected fake name is reported missing.
- With a copy of tor-ms22's real `~/.pi/agent`: `pi -p` exits 0 in 10 s
(1.2.0: 9 s) with nothing on stderr. The TUI loads every extension with no
extension issues; the mempalace bridge registers its 45 tools;
`/om:status`, `/om:view` and the `/studio` commands are offered; and the
atelier sidebar paints ACTIVITY/READY/TOOLS in fullscreen and regular mode
(with `-ne`: no sidebar). pi shows its 1.3.0 "What's new" once and records
`lastChangelogVersion`; nothing else in `settings.json` changes.
- **mempalace `3.10.0` → `3.11.0`.** Core requirements unchanged. Measured with
both wheels in throwaway venvs and a throwaway palace:
- `mempalace init --yes` (the entrypoint's first-run call) still writes
`config.json`, rc 0.
- A palace built by 3.10.0 opens under 3.11.0, searches, and serves MCP with
no embedder warning. Its one conversation file was re-mined once (see
*Upgrade notes*) and skipped on the next mine.
- MCP over stdio lists 47 tools instead of 45. None is removed or renamed;
`mempalace_get_drawers` and `mempalace_delete_drawers` are new, and the 14
read-only tools now carry `readOnlyHint`.
- The removed `EntityRegistry.research()` / `confirm_research()` have no
caller in pi-devbox, mempalace-toolkit, skillset or myconfigs.
- **pi-atelier `v0.15.0` → `v0.16.0`.** Additive: a contributed sidebar panel
can send label/value rows with an optional progress bar (`keyValues`; plain
`rows` remain the fallback), two new roles (`success`, `caution`), and the
context meter no longer draws a hard-coded dark background, so it works on
light terminals. The panel protocol is unchanged (channel
`pi-atelier:sidebar-panels`, version 1, 24 rows of 160 chars), as is the pi
floor (`>=0.84.0`). On pi 1.3.0 it paints in both renderers, and the fleet's
`fleet:todos` panel (`fleet-todos-panel.ts`, plain rows) showed a todo
written in a real turn, as on v0.15.0. The v0.15.0 run still drew the old
meter background and the v0.16.0 run did not, so each ran the version it
claims.
- **DOCKER_HUB.md no longer says "29 `mempalace_*` tools".** The palace server
decides the set; it now says so, with the measured counts.
### Fixed
- **`confirm-destructive` asked for approval on nearly every `2>/dev/null`**