Skip to content

Release 1.2.0: aito-mcp, upload_csv, aito start on engine v2.11.2 (multi-arch) - #85

Merged
arauhala merged 4 commits into
masterfrom
release/1.2.0
Oct 7, 2026
Merged

arauhala merged 4 commits into
masterfrom
release/1.2.0

Conversation

@arauhala

@arauhala arauhala commented Oct 7, 2026

Copy link
Copy Markdown
Member

Release 1.2.0. Antti's go, 7.10. After merge: ./do release on master, held until the two linked docs pages are live on aito.ai.

In it (see docs/source/changelog.rst, 1.2.0)

Fixes found while preparing it

  • A copy of the engine image for another CPU no longer breaks aito start. An arm64 copy of v2.11.2, pulled with --platform, shadowed the multi-arch image on an amd64 host and died with "exec format error". Docker's classic store refuses to re-pull a digest it already maps, so _ensure_image removes the stale reference and pulls the host's variant. A single-arch image still falls back to emulation. Fail-first: TestImageForTheHostsCpu.
  • Smoke: from engine v2.11.2 a refused key is HTTP 401 (403 up to v2.11.1), and the rotate check now accepts both.

Verified

  • test_release_pin (the pin matches the changelog's engine) is green.
  • The aito start smoke (scripts/ci/local_server_smoke.py) passes end to end on v2.11.2, natively on amd64: start, write and predict, rotate keys, status, stop, in 7.1 s.
  • Offline SDK suite: identical to master apart from the new tests.
  • The "aito start across platforms" workflow is dispatched on this branch with image=ghcr.io/aitohq/aito:v2.11.2.

Not in it

  • The other unreleased branches: hotfix/1.1.1, fix/relate-no-orderby, docs/sdk-v2-coverage.
  • The aito-mcp companion PyPI package and the MCP registry entry: separate step, separate yes.

🤖 Generated with Claude Code

https://claude.ai/code/session_01AGxAujqUXtXMNcLfpqm96r

araufuturice and others added 4 commits October 5, 2026 09:44
…s yes)

- Version 1.2.0; changelog: upload_csv, the first-hour fixes, and the engine
  pin v2.11.2 (multi-arch: native on Apple Silicon and arm64 Linux).
- scripts/pin-engine.py: resolves a ghcr tag to its index digest, refuses a
  single-arch image unless --allow-single-arch, rewrites PINNED_IMAGE;
  --check-multiarch [REF] for CI; --show.
- tests/sdk/test_release_pin.py: the pin must be the engine the newest changelog
  section names. RED on purpose until v2.11.2 is published and pinned: this
  branch cannot be released claiming v2.11.2 while aito start pulls v2.11.1.
- local-server.yml: a workflow_dispatch 'image' input tests a candidate engine
  before pinning; the native arm64 row runs the full path when the image is
  multi-arch and expects the clean refusal otherwise.

To release, once v2.11.2 is on ghcr:
  1. python scripts/pin-engine.py v2.11.2        (gate test turns green)
  2. dispatch 'aito start across platforms' with image=ghcr.io/aitohq/aito:v2.11.2
  3. push, PR, CI green, merge; ./do release on Antti's yes

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AGxAujqUXtXMNcLfpqm96r
…riant; smoke takes 401

- PINNED_IMAGE -> ghcr.io/aitohq/aito:v2.11.2@sha256:4b3d5344 (linux/amd64 + linux/arm64),
  via scripts/pin-engine.py. The release gate (test_release_pin) is green.
- aito start / upgrade: a local copy of the pinned image built for another CPU no longer
  shadows the multi-arch image. Found running the smoke on this branch: the machine held
  an arm64 copy of v2.11.2 (pulled with --platform elsewhere), Docker ran it on amd64 and
  it died with 'exec format error'. Docker's classic store refuses to re-pull a digest it
  already maps ("cannot overwrite digest"), so _ensure_image removes the stale reference
  and pulls --platform linux/<host>; a single-arch image is pulled back and runs under
  emulation as before. Fail-first: TestImageForTheHostsCpu (4).
- scripts/ci/local_server_smoke.py: a refused key is 401 from engine v2.11.2 (403 up to
  v2.11.1); the rotate check accepts both and names the code it saw.

The smoke now passes end to end on v2.11.2, natively on amd64, in 7.1 s.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AGxAujqUXtXMNcLfpqm96r
…d the plugin

https://aito.ai/docs/articles/when-to-use-aito-and-when-not/ (CRO, 5.10; prod goes live
before this release). In the server instructions (WHEN_TO_USE_URL), the
add-predictive-feature skill and the plugin README; a test keeps it in both.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AGxAujqUXtXMNcLfpqm96r
@arauhala
arauhala merged commit cefa278 into master Oct 7, 2026
16 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.

2 participants