v0.12.0
This release hard-cuts the project from
pi-shell-acptoentwurf. It is not a compatibility rename: the package/provider/model/MCP identity is nowentwurf, v1 entwurf verbs are gone, andentwurf_v2is the canonical garden-id dispatch verb. The repo is entwurf-core (v2 dispatch) + meta-bridge + pi adapter + ACP plugin. Pi remains an important adapter and ACP host, but the project subject is the garden-citizen dispatch substrate. Verified release floor:pnpm check,check-pack,check-pack-install, andLIVE=1 ./run.sh release-gate <scratch>MUST tierPASS=17 FAIL=0 SKIP=0on 2026-06-29, with BEHAVIOR (advisory model-in-loop autonomous MCP tool-selection)PASS=1 FAIL=0and recorded separately from the cut decision.
Added
entwurfpackage/provider identity. Package metadata, provider id, model prefix, MCP server name, repo URL, env namespace, install surface, and package-source resolver now useentwurf/@junghanacs/entwurf/entwurf-bridge. Runtime aliases and legacy provider-id accept are intentionally absent.- 0.12.0 install surface.
./run.sh setup .is the one-command local setup path:pnpm install→ project install → Claude Code meta-bridge install when available → v2 smoke.run.sh installnow preflights broken/missingnode_modulesand fails loud before writing settings.check-install-preflightlocks the relocation/reinstall gap found after the repo move. - Published-package smoke.
check-packandcheck-pack-installpack the release tarball, install it into a fresh temp project with pi 0.80.x peers, and prove the pi loader registers theentwurfprovider and curated Claude model anchors. - ACP plugin on the v2 core. Provider registration via
pi-extensions/acp-provider.tspluspi-extensions/lib/acp/*, curated Claude models (claude-sonnet-4-6,claude-opus-4-8), no-auth sentinel, explicit config overlay, tool-surface preflight, ACP→pi event mapping, session reuse, first-user augment, and display-only lifecycle notices. - Meta-bridge install/state cutover. Claude Code meta-bridge install state, MCP entry, statusline, permissions, and sender/receiver markers now use the
entwurfnaming surface; stalepi-tools-bridgeMCP entries are pruned as one-shot cutover state, not accepted as a runtime alias.
Changed
- Project framing is entwurf-first. README / ROADMAP / DELIVERY / BASELINE / VERIFY were reframed around garden ids, shipped vs verified-probe harness lanes, thin bridge boundaries, tool narrowing, and the ACP plugin as one ingress rather than the boundary.
- ACP is a plugin, not a second harness. The host
--entwurf-controlpi session supplies socket citizenship; the ACP plugin owns backend process lifecycle, overlay, per-backend dialect, and turn evidence only. No auth proxy, no subscription bypass, no transcript hydration, no ambient MCP scan. - Dependencies bumped and fenced. pi dev/runtime floor is now 0.80.2 (
>=0.80.2 <0.81), withgetModelsreached through the loader-compatible/compatentrypoint. Claude ACP moved to@agentclientprotocol/claude-agent-acp@0.50.0and@agentclientprotocol/sdk@0.29.0; model forcing usessession/set_config_option(configId="model"). The deprecatedClientSideConnectionpath was replaced by the fluentclient().connect(stream)adapter with explicit teardown close. - Release gate remains two-tier. MUST owns the cut decision and now includes v2-native live gates plus ACP plugin live smokes (socket-citizen, raw-turn, overlay, provider, reuse, carrier augment, memory containment, RGG, operator MCP, skill, bundled bridge). BEHAVIOR is advisory model-in-loop autonomous tool-selection and never blocks the cut.
- Install docs are npm-first. README and the clean-host walk-through lead with
pi install npm:@junghanacs/entwurf(resolving to~/.pi/agent/npm/node_modules/@junghanacs/entwurf, the pathcheck-package-source-routingpins); thegit:source path and a local clone are documented as alternatives for trackingmainor hacking on the bridge. - Release hero refreshed for the entwurf identity. The README hero and pi package gallery image now use a GLGMAN Universe
entwurfrelease-day illustration (four sibling schools, shared forged driver) instead of the old demo GIF as the public first impression. - Verification docs simplified to the 0.12 surface.
VERIFY.mdwas reduced from 621 to 260 lines andBASELINE.mdfrom 284 to 227 lines by deleting broken/dead v1 procedures, moving historical rows back to CHANGELOG/git, and keeping the load-bearing 0.12 evidence axes: install paths, identity interview, carrier separation, backend MCP identifiers, tuple formula, JSONL memory axis, and pass criteria. - v1 residue swept from runnable comments and stale ledgers. Retired
entwurf_send/entwurf_resumereferences in current-source comments and the absorbedNEXT--acp-on-v2.mdbranch ledger were removed or rewritten to the v2 surface; historical CHANGELOG rows remain historical evidence, not current recipes.
Removed
- v1 entwurf entrypoints. MCP tools
entwurf/entwurf_resume/entwurf_send, pi-nativeentwurf_send,spawn_async_resume, and/entwurf*commands are removed. Current surface:entwurf_v2,entwurf_peers,entwurf_self,entwurf_inbox_read, plus/entwurf-sessionsand/gnewon the pi adapter. - Legacy
pi-shell-acpruntime identity. No permanent package/provider alias, no legacy provider accept, no dual-read of old runtime state. Old install/cache state is a one-shot operator cutover only. - OpenClaw install surface. The old plugin/importer path remains historical only; it is not a live consumer.
- Phantom compaction surface. Documentation no longer claims bridge-owned compaction knobs or a compaction smoke surface; backend-native compaction remains backend-owned.
Fixed
- Mailbox reply instructions point at the canonical v2 surface. Replyable meta-session bodies now tell agents to use
entwurf_v2, not the retiredentwurf_sendtool. - Branch-lane handoff pointers no longer dangle.
AGENTS.mdnow points at the main-laneNEXT.mdrather than a deleted branch ledger. - npm-managed installs resolve hoisted runtime dependencies before writing settings.
run.sh installwalks Node's module-resolution paths, sopi install npm:@junghanacs/entwurfworks from~/.pi/agent/npm/node_moduleswith no package-localnode_modules; the@earendil-works/pi-*peer trio is treated as loader-provided.check-pack-installlocks the layout with a real npm-managedrun.sh installregression under an isolated HOME.
Deferred
- npm publish / old package deprecation — maintainer-owned final step after the release cut.
package.jsonis already@junghanacs/entwurfwithpublishConfig.access: public; registry publication is intentionally last. - Demo / GIF retake — the recorded demo scripts and archived GIF still describe the retired v1
entwurf/entwurf_resume/entwurf_sendflow, so they ship as pre-0.12 evidence; a v2-native demo retake is a post-0.12 minor follow-up. - Fresh sibling minting — v2 dispatch targets already-identified citizens only. Creating a brand-new sibling from nothing is a later
spawn-freshlane. - Persisted resume/load — current ACP reuse is in-memory plus record write; persisted read/use stays off.
- Non-Claude ACP backends / Cortex lane — next backend work should first define the backend-addition rail and verification contract.
- Codex / Antigravity shipped adapter lanes — delivery probes are verified, but 0.12.0 ships them as documented evidence, not managed install surfaces.
- Bundled-MCP deterministic split —
smoke-acp-bundled-mcp-livestill exercises a model-in-loopentwurf_selfcall inside the MUST floor; it passed on the current cut, but the deterministic surface proof vs autonomous echo split remains a follow-up before hardening the taxonomy.
Final hygiene before npm publish
- The
v0.12.0tag was realigned to3360b3bbefore npm publication so the GitHub release tag and the npm tarball can describe the same source tree. - Removed stale Biome
noExplicitAnysuppression comments from ACP session-reuse verification scripts;pnpm lintnow runs without the prior unused-suppression warnings. - README now includes the explicit npm package URL: https://www.npmjs.com/package/@junghanacs/entwurf.