Skip to content

fix(ci): configure runtime models and MCP test fixtures - #715

Closed
kamilio wants to merge 8 commits into
mainfrom
codex/ci-runtime-models
Closed

fix(ci): configure runtime models and MCP test fixtures#715
kamilio wants to merge 8 commits into
mainfrom
codex/ci-runtime-models

Conversation

@kamilio

@kamilio kamilio commented Sep 10, 2026

Copy link
Copy Markdown
Member

The review workflow and live-agent checks omit runtime model selection, so native CLI defaults can select models unavailable on Poe. Fresh Kimi configuration also lacks a registered model, and Goose rejects its generated provider configuration because the required models field is absent.

Pass explicit supported runtime models while preserving review and per-agent overrides. Reviews use the repository variable POE_CODE_REVIEW_MODEL with gpt-5.4 as fallback; live checks honor POE_CODE_E2E_<AGENT>_MODEL. Kimi forwards its local alias unchanged and registers the selected model only in the isolated fixture, preserving existing provider/model entries. Goose's ACP fixture receives its selected GOOSE_MODEL; normal Goose configuration now supplies an empty required catalog only when absent, preserving user catalog entries and headers. No global model default is written.

Host E2E backends invoke the built MCP fixture through Node and an absolute path because installation before build can leave the workspace bin link missing. Podman retains its installed executable. A separate test-only commit retains the HTTP server's subtype during registration without changing its runtime assertions.

The runtime defaults were verified with the read-only Poe catalog. Kimi follows its registered-alias contract. The installer-selected Goose stable asset digest matches v1.50.0: its pinned provider schema requires models, and its model resolver honors GOOSE_MODEL.

This branch also includes the exact Node20 test prerequisite from #716 (8e9fbc92113c2fe1456c6a6e03db244392a90776) through a normal branch merge. It supplies the browser locale in test realms and uses async iteration to collect stream values while preserving existing assertions. PR716 itself still needs these runtime-model corrections; neither PR has been merged.

Validation:

  • Reproduced missing model forwarding, missing executable, and missing catalog before fixing them. All 188 focused provider/CLI/fixture tests pass, including existing-catalog preservation and a real offline MCP handshake/tool result.
  • Normal full build, complete E2E typecheck, and full guarded lint pass. Independent review found no actionable issues.
  • Pinned native Goose with an isolated fake provider reproduced missing field modelsProvider not set. Adding the required catalog makes it reach the localhost endpoint with the selected model and MCP tools. No external model/API call was used for diagnosis.
  • Before integration, 792300fbb382deaca1be6d83665bae7a06d094a7 passed all 13 live E2E tests, Node22, packed APIs, and exact-head review; its E2E-blocking thread was resolved. General CI failed in the Node20 compatibility cases and two test deadlines.
  • Combined head 106f9f7a044a28c84a586d02d1394f175cc96a18 passes all 139 affected browser/stream tests under Node20.20.0 and full guarded lint. Fresh combined CI passes live E2E (13/13), Node22, and packed APIs, with exact-head review approved and no unresolved review threads. The general check fails only the coverage-demo replay and tiny-MCP NodeNext DOM compiler-test deadlines (both 5000ms): 22,465 tests pass, 2 fail, and 1 is skipped. Both failures remain separately owned, without deadline changes or a flake waiver. This required check keeps the PR unready for merge.

This branch now also carries the exact two-file retained-root optimization from #717 (344ddf40439da30819085a58d8bc94a8f301bda7), preserving its author and source attribution. The source parent and this branch had identical object-model.ts blobs, so only that commit was replayed; newer release ancestry was not merged. It reuses unchanged intrinsic root references while still recursively measuring retained data on every reconciliation, with conservative fallback for restored/untracked objects.

At combined head 17400f2451dc4452cd8af953f5a788ef62fff5b8, all 24 maintained workspace builds, 93 focused Node20 tests (including the unchanged five-second replay), and full guarded lint pass (10,577 files, zero errors/warnings, types and workflows). Fresh combined CI passes live E2E (13/13), Node22, packed public APIs, and exact-head review. General CI still fails the unchanged five-second tiny-MCP NodeNext DOM compiler test (5411ms) and coverage-demo replay (6823ms): 22,465 tests pass, 2 fail, and 1 is skipped. The hosted replay failure remains after this optimization; both failures are routed to their existing owners. This required check keeps the PR unready. The exact run uses Node20.20.2 and npm10.8.2; no rerun or deadline waiver was applied.

The curl metadata change remains separate in #714. PR #712 also depends on the reviewer model correction: its review run failed on the unsupported native model default. Product Goose ACP model propagation remains separate. No timeout changes, skipped tests, manual paid reruns, merge, or release are included.

Offline runtime configuration diagnostic

Actual output captured at 42d8622629cbc8170091bdf7217d05003286c408 from configuration helpers, the Kimi argument builder, and a command recorder exercising the generated reviewer invocation. This shows default/override handling and isolated Kimi registration, not a live agent/model execution, CI pass, or product-browser screenshot.

Offline runtime configuration and argument diagnostic

@poe-code-agent poe-code-agent Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM

@kamilio kamilio changed the title fix(ci): select supported runtime models for agent checks fix(ci): configure runtime models and MCP test fixtures Sep 10, 2026

@poe-code-agent poe-code-agent Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM

@poe-code-agent poe-code-agent Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Requested changes: latest head still fails e2e.

Comment thread e2e/runtime-models.ts

@poe-code-agent poe-code-agent Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM

Provide navigator.language in the Node-hosted browser bundle and Worker
fixtures. Consume async stream results with for-await so Node20 executes
the existing lifecycle, schema failure, and cleanup assertions.

### Tests Updated

| Test group | Verifies |
| --- | --- |
| Real safe-bash browser kernel, execution, filesystem, and session cohorts | Actual browser engine and Worker behavior with explicit browser globals. |
| defineStreamCommand SDK lifecycle | Lazy consumption, status separation, schema rejection, and exactly-once cleanup without Array.fromAsync. |

Validation: Node20.20.0 passed all four browser files (134 tests) and the
stream lifecycle file (5 tests). No production runtime or deadline changes.

@poe-code-agent poe-code-agent Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM

Cache only collected root references for groups backed entirely by tracked
property tables. Successful property/prototype changes and baseline completion
invalidate the cache; untracked and restored tables retain conservative scans.
Nested values are still recursively measured on every reconciliation.

Validation: 248 focused accounting/snapshot tests; maintained 24-workspace
agent-harness build closure; unchanged five-second Node20 coverage-demo replay
passed in 1.29s. Six new regressions cover allocation reuse, nested budget
failure, descriptor/prototype changes, rejected mutations, restored aliases,
and retained callback snapshots. Focused test typing and ESLint gate this commit.

### Tests Added

| Test | Verifies |
| --- | --- |
| reuses the collected roots while still rejecting nested growth above the memory limit | Reference reuse preserves recursive budget rejection |
| refreshes collected roots after define, delete, accessors, prototype changes and baseline completion | Successful mutations invalidate root collection |
| remeasures mutations through an untracked restored property-table alias | Restored aliases keep conservative scanning |
| keeps committed roots after failed definitions and deletions | Rejected mutations preserve committed state |
| keeps both budgets current and ignores rejected prototype mutations | Shared objects invalidate each live budget correctly |
| keeps root snapshots stable when a retained callback mutates the next collection | Callback mutation affects the next capture without changing prior snapshots |

Cherry-picked-from: 344ddf4

@poe-code-agent poe-code-agent Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM

@kamilio

kamilio commented Sep 10, 2026

Copy link
Copy Markdown
Member Author

Integrated unique runtime-model, MCP fixture and Goose configuration commits as f70d76a, 9bf87a7, 6ffb8b4, c49e60b and 67ee43c. Preserved newer main Node20 fixes, applied the shared retained-root cache once via #717, and used actionlint instead of the prohibited workflow-YAML unit test.

Verified on remote main at 4da2a66 after local validation and final installed-package qualification. Closing after cherry-pick/reconciliation rather than merging obsolete branch history.

Release is in progress: https://github.com/poe-platform/poe-code/actions/runs/34500155547 ; scoped packages: https://github.com/poe-platform/poe-code/actions/runs/34500155125 .

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