Skip to content

Release Meridian 1.7.15-beta - #317

Merged
MathisVerstrepen merged 8 commits into
mainfrom
dev
Sep 18, 2026
Merged

MathisVerstrepen merged 8 commits into
mainfrom
dev

Conversation

@MathisVerstrepen

Copy link
Copy Markdown
Owner

Meridian 1.7.15-beta

Meridian 1.7.15-beta improves how follow-up conversations retain tool results, keeps legacy tool-context markup out of chat, and upgrades Python services and sandbox execution to Python 3.14. This release also separates pull-request image checks from publishing and updates shared build caching.

Highlights

Tool Results in Follow-Up Conversations

Completed tool calls can now return to model history as paired calls and results rather than being embedded in assistant prose.

  • Replay uses referenced, persisted tool arguments and model-facing results from the same user, graph, generator, and parallel-model entry. Missing, pending, mismatched, or malformed records are omitted without rerunning tools.
  • Supported provider integrations receive native historical tool pairs. Claude Agent and GitHub Copilot receive explicitly labeled historical tool data in their prompt transcripts, rather than reconstructed native sessions.
  • Context mergers retain complete generator turns when selecting recent history, including eligible tool context. Parallel aggregators receive child answers as user context rather than system instructions.
  • Historical image inspection keeps its existing bounded provenance without loading old image pixels. Replaying history does not enable tools disabled for the current request.

Cleaner Chat History

Reserved legacy tool-context blocks stay out of rendered replies and derived conversation text.

  • Hide complete and unfinished legacy tool-context blocks, including partial opening markers while responses stream.
  • Preserve surrounding prose, ordinary JSON, and escaped examples without rewriting saved replies, tool records, or cached summaries.
  • Keep displayed chat history focused on messages and summary cards rather than synthetic tool-call messages.

Updated Runtime and Image Builds

Python services and sandbox workers now use Python 3.14, with build checks aligned to that runtime.

  • Browser-service builds select the pinned official Camoufox asset directly instead of querying release listings, avoiding release-discovery rate limits while retaining browser-cache validation.
  • Pull-request image checks build without publishing images or caches. Guarded tag publications update shared registry build caches for later builds.
  • Image matrices allow up to five concurrent builds after lint passes, subject to runner availability. Missing cache imports fall back to cold builds.

Self-Hosting and Upgrade Notes

Meridian 1.7.15-beta requires Python 3.14 for source-based Python environments and changes the Python runtime used by sandbox code. It adds no database schema migration, configuration keys, or secrets.

  • Redeploy matching API and UI versions, and update the browser-service, sandbox-manager, and sandbox Python worker images to apply the runtime and history changes. Check custom sandbox code and packages for Python 3.14 compatibility.
  • Recreate older development virtual environments with Python 3.14, or supply fresh environment paths. Install and check scripts reject older environments without replacing them automatically.
  • Development dependencies update mypy to 1.19.1 across Python services and add pytest 9.0.3 to the API development environment. Application dependency manifests and frontend lockfiles are unchanged.
  • Existing chats and tool records require no data conversion. Historical replay uses eligible stored model-facing payloads; it does not reconstruct missing tool facts or original provider reasoning.
  • Existing database migration files receive import corrections only; no new migration revision is introduced.
  • Shared registry build caches are publicly readable intermediate build layers, not release artifacts. Keep credentials and private data out of build inputs and intermediate layers. Pull-request checks do not write these caches.

MathisVerstrepen and others added 8 commits September 16, 2026 18:46
Rework the Docker publish workflow so pull requests only build images
while only tag pushes publish them, sharing build cache through GHCR
instead of the per-ref Actions cache.

- Add a build-pr job (build only, no push, no cache export) and gate
  build-and-push to tag pushes; raise max-parallel to 5 for both.
- Replace type=gha cache with a registry cache at
  ghcr.io/<lowercased-repo>/<image>:buildcache so cache survives across
  runs, using a trusted lowercased cache repository output and mode=max.
- Keep PR and lint jobs read-only by disabling persisted checkout
  credentials and requesting only packages: read, with no GHCR login.
- Install the pinned Camoufox browser through a build-only adapter that
  avoids release-list discovery, preventing GitHub API rate limits.
- Add the offline cache probe, workflow policy tests, and a local min/max
  cache benchmark, and wire them into CI and run-tests.sh.
- Document cache trust boundaries, rollback, and measured local results.
Add pytest 9.0.3 to the development dependencies so tests can be
installed and run consistently in local and CI environments.
…igate-github-job-duration

Split PR builds from tag publishing and use registry cache
Move every Python service (api, browser_service, sandbox_manager) and the
sandbox worker image from 3.11 to 3.14, declaring the version once in
.python-version so local tooling, CI, and containers stay aligned.

- Bump Docker base images to python:3.14 with service-specific OS baselines
  (Trixie for api to keep Node compatibility, Bookworm for browser, sandbox
  manager, and sandbox worker).
- Pin CI to .python-version via setup-python and include the file in the pip
  cache key so runtimes are selected before any Python step runs.
- Add scripts/python-env.sh to create/validate virtualenvs and reject older
  or broken environments without deleting or upgrading them in place; wire
  Make, run-dev, run-linter, run-checks, and run-tests through it with
  API_VENV/BROWSER_SERVICE_VENV/SANDBOX_VENV overrides.
- Update typecheck targets, mypy, and dev requirements to match, and adjust
  a few annotations that 3.14 type checking now enforces.
- Add scripts/tests/test_python_runtime.py to keep runtime declarations,
  container baselines, CI ordering, and non-destructive env guards honest.
- Run the Gemini bridge import smoke check in the API image build as the
  runtime user to catch Node bridge breakage early.
…e-python-version

Upgrade all Python services to Python 3.14
Replace inline tool_call_context expansion with paired, typed history
reconstructed from persisted tool records, so providers receive native
call/result messages instead of model-written markup.

- Add get_completed_tool_calls_for_history and build_tool_history to
  reconstruct assistant calls plus tool results, scoped by user, graph,
  node, model entry, and completed status.
- Serialize history per provider: OpenAI-style call/result, Anthropic
  tool_use/tool_result, Responses and Codex function_call/output, and
  Gemini functionCall/functionResponse without inventing signatures.
- Label escaped tool data as non-instruction user context for prompt-only
  SDKs (Claude Agent, GitHub Copilot) instead of elevating it to system.
- Preserve final answers by cleaning reserved legacy spans, with matching
  cleanup in the UI so raw context never reaches rendered output.
- Keep reduced/presentation history free of synthetic tool pairs and add
  offline regression coverage for mapping, consumers, and UI cleanup.
…ol-call-rewrite

Replay persisted tool calls as native history pairs
@MathisVerstrepen
MathisVerstrepen merged commit 1d51812 into main Sep 18, 2026
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant