Skip to content

ci: verify Pi support endpoints and restore host compatibility - #719

Open
JS-banana wants to merge 7 commits into
openpi-dev:mainfrom
JS-banana:chore/pi-compatibility-matrix
Open

JS-banana wants to merge 7 commits into
openpi-dev:mainfrom
JS-banana:chore/pi-compatibility-matrix

Conversation

@JS-banana

@JS-banana JS-banana commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

Problem

Refs #328. The frozen Node matrix exercises Pi 1.2.0 while the published peer floor is 0.99.1. It cannot independently detect minimum-host or newly released stable-host incompatibility.

The new endpoints exposed existing drift: Web configuration imports a module absent from Pi 0.99.1; Pi 1.5.0 changes StringEnum's schema type; and Pi 1.3+ drops cross-model thinking where older hosts converted it to text. OpenPI's search replay still counted the old text row, so later saved answers could be rejected. New renderer, dialog and persistence contracts also need accurate tests. The selector incorrectly rejects Pi 1.5.0's declared pi-schema package.

Value

Continuously verify the declared support endpoints, restore their existing behavior, and retain reproducible frozen-host checks. Pi and credentials remain host-owned; published support ranges are unchanged.

Approach

  • Keep all locked Node, Linux/Windows/UI/E2E jobs and aggregate gates. Add minimum/latest on Node 22.19.0 and require both through the existing matrix result. Reuse the existing discovery, packed-extension, separate-host packed-Web and committed-Git-source smokes.
  • Derive minimum from peers and resolve npm stable once. Transiently pin the seven base Pi packages and restore original manifest/lock bytes in finally. Verify listing tokens, physical identities, exact versions and the real coding-agent entry. Accept pi-schema only when the verified host declares the exact selected version; missing, mixed, unknown or undeclared packages still fail closed.
  • Construct tool enums with existing TypeBox Type.Enum, preserving string type, values, descriptions and defaults. Extract the existing reasoning-level list into a browser-safe shared leaf, retaining setup-config exports, instead of importing the SDK module missing from the minimum host. Regenerate the committed Web build.
  • Preserve source-occurrence identity in Anthropic search replay. Use the loaded host's public VERSION and the documented Pi 1.3.0 conversion boundary to select one exact thinking projection. Keep row/block counts, ordinary content, arguments, tool IDs and repeated-answer ownership checks. VERSION stays in the server extension entry and is passed explicitly into the pure replay function, keeping the browser's evidence reader free of SDK runtime imports.
  • Complete renderer/exec fixtures with native key helpers and non-truncated results. Exercise the real native dialog lifecycle; assert the exact model-visible active tool set; and require failed timing persistence to publish no unread activity whether the host retains or rolls back the unwritten entry.
  • Give UI files the existing bounded Node worker budget. Preserve complete test selection, assertions and deadlines. Keep admission recovery on the Host's open event stream so artificial EOF reconnects cannot supersede its explicit check.
  • Rebase the final topic onto main 0addb739. Preserve main's Decision 0005 and renumber the still-proposed support policy to Decision 0006. This does not adopt that policy or close chore(deps): define and enforce the supported Pi baseline #328.

Validation

Current head: 4e12b7b18f277c6e7415153fe20999c3b7a9d325.

Current-head CI run 41630860431 completed successfully on 2026-11-03: all 19 jobs passed, including all Linux/Windows runtime and UI jobs, both Web E2E shards, provider handoff and aggregate gates. The minimum job verified Pi 0.99.1 (seven packages) with 2,455 Node tests passed / 15 skipped / 0 failed; the latest job verified Pi 1.5.0 (eight packages) with 2,462 passed / 8 skipped / 0 failed. Each endpoint also passed the full check, committed-Web-build verification and all four installation smokes.

Local host Final full bun run check Node evidence
Minimum 0.99.1 Passed Final complete suite: 2,455 passed / 15 skipped / 0 failed
Locked 1.2.0 Passed Final affected regressions: 49 passed / 0 failed
npm stable 1.5.0 Passed Final affected regressions: 49 passed / 0 failed; preceding complete run: 2,462 passed / 8 skipped / 0 failed
  • The latest full suite passed after the behavior fixes; the subsequent server-only version plumbing was rechecked with the final 49 regressions and full check. The minimum full suite includes that final plumbing.
  • Actual minimum/latest installations verified seven/eight coherent Pi packages. Original package.json and bun.lock bytes were restored. The final checkout uses frozen Pi 1.2.0; no TypeBox pin or published-range change is included.
  • The preceding locked-host full run on b9dc6762 had 2,460 passed / 8 skipped / 2 unchanged Code Mode failures at tests/extensions/code-mode/index.test.ts:181 and :203. A fresh clean-main@0addb739 control with the same frozen dependencies reproduces both. No local green locked complete-suite result is claimed.
  • Search lifecycle tests use the real SDK provider conversion and Pi/Jiti loader. They verify both repeated saved-answer positions and reject added/removed rows, altered ordinary content/tool arguments, and thinking rows that do not belong to the current host policy, requiring the specific native replay error.
  • Current-source Pi 1.5.0 package discovery and the existing packed-Web smoke with a separate host and no local Pi peer packages passed.
  • Earlier complete UI validation of the unchanged bounded runner passed 108 files / 1,632 tests. Runner dispatch, complete selection and failure propagation tests pass; no assertion, timeout or retry policy was relaxed.
  • Final Web artifacts match the canonical build exactly; minimum, locked and latest builds have identical app.js and build-info.json hashes. Browser builds contain no newly externalized Node SDK modules.
  • git diff --check: passed.

Impact

  • User-visible: restore minimum-host Web configuration loading and preserve native search replay when model switching removes earlier thinking.
  • Model-visible: enum values, types, descriptions and defaults remain equivalent. Search evidence stays bound to its original assistant occurrence; altered turns still fail closed. No tools or permissions are added.
  • Runtime/lifecycle: retain Pi ownership, cancellation, transport, configuration writes and browser/server boundaries.
  • Persisted data/dependencies: none. Published ranges, manifest, lockfile and saved evidence format are unchanged.
  • CI: two additional required Linux host rows, exact selected-host receipts, original installation smokes and bounded UI file concurrency. Decision 0006 remains proposed. These checks cover named hosts and offline installation contracts, not every intervening/future release or live provider/account acceptance.

@JS-banana
JS-banana requested review from a team and tt-a1i as code owners October 9, 2026 04:29
@github-actions github-actions Bot added documentation Improvements or additions to documentation area:workflows Workflow engine, capability, skills, or tests area:setup OpenPI setup, configuration, or setup documentation area:ui Terminal UI, rendering, themes, or visual assets area:github GitHub workflows, templates, ownership, or tests labels Oct 9, 2026
tt-a1i
tt-a1i previously approved these changes Oct 13, 2026

@tt-a1i tt-a1i left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed head: 1f4e06cd14e3102310ced2b7a0154f7c5baab9fe against main a18f457687b45c877bc8a15d689a7580c4f0659a.

Standards: no confirmed code-level blocker in the scoped change.

Spec: the inspected change matches the stated behavior in this PR. The compatibility CI implementation is separate from formally adopting its proposed support-policy Decision.

Validation: node --test --experimental-strip-types tests/extensions/setup/package-contract.test.ts: 通过 8 项;Node26.8.1,archive exact head,共享Pi0.99.1依赖

The unchanged-head focused receipts are reused after a live head/main refresh; #718 uses this round's latest-head tests. This code review does not claim installed-runtime, live-provider, full merged-queue or visual acceptance. No merge is authorized by this review.

@tt-a1i

tt-a1i commented Oct 14, 2026

Copy link
Copy Markdown
Collaborator

Thanks for this. #815 has now landed on main with the Pi 1.2 compatibility fixes, including structural aborted reads and fixtures that are safe on Pi 0.99.1. Both hosts pass bun run check and the node suite locally. That makes the compatibility code changes here redundant. Could you rebase onto main and keep only the dual-version CI matrix (Pi minimum 0.99.1 + Pi latest 1.2)? It currently conflicts with main in .github/workflows/ci.yml, README.md, tests/extensions/workflows/dashboard-page.test.ts, tests/extensions/workflows/execute.e2e.test.ts and tests/web/pi-coding-agent-entry.test.ts. The new matrix job should then go green on top of main.

@github-actions github-actions Bot removed area:workflows Workflow engine, capability, skills, or tests area:ui Terminal UI, rendering, themes, or visual assets labels Oct 15, 2026
@JS-banana
JS-banana force-pushed the chore/pi-compatibility-matrix branch from 920c578 to 0eac7ae Compare November 3, 2026 09:32
@github-actions github-actions Bot added area:workflows Workflow engine, capability, skills, or tests area:subagents Subagent delegation, skills, or tests area:ui Terminal UI, rendering, themes, or visual assets labels Nov 3, 2026
@JS-banana JS-banana changed the title ci: verify minimum and latest supported Pi hosts ci: verify Pi host endpoints and preserve schema compatibility Nov 3, 2026
@JS-banana JS-banana changed the title ci: verify Pi host endpoints and preserve schema compatibility ci: verify Pi support endpoints and restore host compatibility Nov 3, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:github GitHub workflows, templates, ownership, or tests area:setup OpenPI setup, configuration, or setup documentation area:subagents Subagent delegation, skills, or tests area:ui Terminal UI, rendering, themes, or visual assets area:workflows Workflow engine, capability, skills, or tests documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

chore(deps): define and enforce the supported Pi baseline

2 participants