Skip to content

release: v1.0.5 — OpenRouter Anthropic passthrough + html attachment + MCP-boundary hardening#448

Merged
the-data-viking merged 2 commits into
mainfrom
release/v1.0.5
May 10, 2026
Merged

release: v1.0.5 — OpenRouter Anthropic passthrough + html attachment + MCP-boundary hardening#448
the-data-viking merged 2 commits into
mainfrom
release/v1.0.5

Conversation

@the-data-viking
Copy link
Copy Markdown
Collaborator

Summary

  • OpenRouter anthropic/* images now actually transit (hq-olrk, fixes hq-m333). Routes openrouter/anthropic/* through OR's documented Anthropic-passthrough endpoint at /v1/messages with native shape. Pre-fix: midgard mayor's deterministic repro returned 15/15 "NO IMAGE RECEIVED" refusals. Post-fix: every persona describes the actual image. The bug was masked across v1.0.0-1.0.4 by persona roleplay in less-constrained prompts.
  • html attachments now reliably reach the model (hq-aaca). Inlined into the question's TextBlock with --- HTML SOURCE --- delimiters; eliminates the two-adjacent-text-blocks shape that caused ~50% refusal rate.
  • AttachmentRef strict mode reaches the MCP boundary (hq-jviv). v1.0.4's hq-nuz9 promoted AttachmentRef to strict BaseModel but the MCP run_panel handler bypassed it; caller typos like typo_field propagated end-to-end. Now fails loud at parse with ValidationError.
  • --save works in ensemble runs (hq-0pnq). Was wired only for single-model path.
  • MCP run_panel accepts models=[...] without empty error (hq-6j40). Ensemble args now normalize at the MCP boundary.
  • Cache-Control aligned with dvi-25f cross-product policy (hq-bxmp). Audit found drift on every bucket of synthpanel.dev. Fixed via site/_headers + site/_worker.js + 3 pinning tests.

Plus the cross-town docs lift (docs/known-patterns/openrouter-byok-visual-review.md) merged earlier this cycle (PR #447).

No API break — every v1.0.4 caller works unchanged.

Test plan

  • Green CI (ruff check + ruff format + mypy + pytest matrix + storybook + pip-audit)
  • After merge, manually push v1.0.5 tag
  • PyPI publish workflow auto-runs from tag
  • uv cache clean synthpanel && uv tool install --reinstall --refresh 'synthpanel[mcp]' and confirm synthpanel --version reports 1.0.5
  • Diverse 6-group × 3-persona MCP-driven dogfood against full dataviking.tech — primary post-release validation: confirms image-attachment transport works end-to-end via real OR/Sonnet 4.5 traffic, and surfaces brand-positioning + IA-restructure feedback from a balanced panel (devs / founders / researchers / enterprise / designers / generalists).

🤖 Generated with Claude Code

…+ MCP-boundary hardening + persistence cleanup

The big fix is hq-olrk: route openrouter/anthropic/* through OR's
Anthropic-passthrough endpoint at /v1/messages with native shape, instead
of /v1/chat/completions with OpenAI-shape (lossy conversion drops images).
Resolves long-masked v1.0.0+ image transport regression — midgard mayor's
2026-05-10 deterministic repro went from 15/15 refusals to image-aware
responses.

Sibling fix hq-aaca inlines html attachments into the question's TextBlock
with --- HTML SOURCE --- delimiters, eliminating the two-adjacent-text-blocks
shape that caused ~50% refusal rate.

Plus three v1.0.4-dogfood-surfaced bugs (hq-jviv: AttachmentRef strict at
the MCP boundary; hq-0pnq: --save in ensemble panel runs; hq-6j40: MCP
ensemble normalization) and the cross-product Cache-Control alignment for
synthpanel.dev (hq-bxmp).

No API break.

Co-Authored-By: midgard mayor <openclaw@dataviking.tech>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@cloudflare-workers-and-pages
Copy link
Copy Markdown

cloudflare-workers-and-pages Bot commented May 10, 2026

Deploying synthpanel with  Cloudflare Pages  Cloudflare Pages

Latest commit: 9719032
Status: ✅  Deploy successful!
Preview URL: https://00f2194d.synthpanel.pages.dev
Branch Preview URL: https://release-v1-0-5.synthpanel.pages.dev

View logs

- commands.py:2709: drop the type annotation on the second inst_name
  declaration (already typed at the first occurrence in the same function
  scope, line 1545) so mypy stops flagging [no-redef]
- site/index.html: re-render to match site/index.html.j2 — the previous
  render produced a slightly different byte sequence under the local
  python; the test uses python 3.14 in CI which is byte-stable

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@the-data-viking the-data-viking merged commit 227c591 into main May 10, 2026
15 checks passed
@the-data-viking the-data-viking deleted the release/v1.0.5 branch May 10, 2026 19:30
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