Repository navigation
Multi-runtime release-please + Python harness correctness - #534
Merged
Seth Juarez (sethjuarez) merged 4 commits intoSep 9, 2026
Merged
Conversation
…ge harness Harness correctness for the Python runtime, validated live against OpenAI, Anthropic, and keyless Foundry (Entra): - core/discovery.py: replace deprecated EntryPoints[0] index access with next(iter(eps), None) (EntryPoints is a DeprecatedList on 3.11+). - Remove Azure re-export shims (providers/azure/*) and the top-level AzureExecutor/AzureProcessor aliases; both `azure` and `foundry` entry-point keys already route to FoundryExecutor/FoundryProcessor. Repoint model conftest and drop the two obsolete backward-compat alias tests. - Integration harness: default OpenAI image model dall-e-2 -> gpt-image-1 (dall-e-2/3 retired on the platform); relabel integration marker as Foundry. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
…ctor Closes the one agent-loop gap not exercised against a real endpoint: a multi-ITERATION tool chain (get_weather -> convert_temperature -> grounded answer). Rather than invent a bespoke scenario, the live test reuses the same canonical TurnConformance.run `multi_turn_tool_calls` @vector that the deterministic model-conformance suite replays through a scripted double. - conftest.py: add load_turn_vector()/turn_vector_tool_order() that read the Typra-emitted cross-runtime corpus (schema/tsp-output/.typra-generated/ vectors.json), so the live scenario, tools, and expected tool-dispatch order all come from one Typra-governed definition. - test_agent_vector.py: drive that vector live against OpenAI (sync+async) and keyless Foundry. Asserts the exact ordered dispatch sequence, that the convert step consumed the weather step's output (~72F -> proves a real multi-iteration dependency chain, not parallel calls), and that the final answer is grounded in the converted value. Skips (never mocks) when live creds are absent, since a mocked model cannot choose a two-step tool chain. Verified live: 46 passed, 13 skipped; ruff clean. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Introduce independent, per-runtime releases driven by release-please so each runtime (python, rust, typescript, csharp, java, go, swift) versions and ships on its own cadence. Graduates the 2.0.0-beta.N train to a clean 2.0.0 semver line (no prerelease mode). - release-please-config.json / .release-please-manifest.json: one component per runtime; tag format separator=/ + include-component-in-tag + no v, reproducing existing python/2.x, rust/*, typescript/*, csharp/* tags so publish workflows are unchanged. - .github/workflows/release-please.yml: opens Release PRs on main; uses RELEASE_PLEASE_TOKEN so cut tags trigger the publish workflows. - Normalize python _version.py to semver 2.0.0-beta.3 (flit still builds a valid 2.0.0b3 PEP440 wheel) and annotate for the generic updater. - Annotate csharp *.csproj <Version> and java build.gradle.kts version lines. - RELEASING.md: document the automated flow, components, token requirement, and first-Release-PR verification steps. VS Code extension intentionally excluded. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Reflow long lines in tests/integration/conftest.py and test_agent_vector.py so `ruff format --check` passes in CI. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
This was referenced Sep 9, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Two related pieces of work from one session on this branch:
2.0.0-beta.Ntrain to a clean2.0.0semver line.Release automation (new)
Each runtime versions and ships on its own cadence via release-please. No shared version number —
python/2.1.0andrust/2.0.3can coexist.release-please-config.json/.release-please-manifest.json— one component per runtime (python,rust,typescript,csharp,java,go,swift). Tag formatseparator:"/"+include-component-in-tag+include-v-in-tag:falsereproduces the existingpython/2.x,rust/*,typescript/*,csharp/*tags exactly, so no publish workflow was changed..github/workflows/release-please.yml— opens/maintains one Release PR per runtime onmain.node-workspace(anchored onpackages/core) for TypeScript;x-release-please-versionannotations on the csharp*.csprojand javabuild.gradle.ktsversion lines._version.pynormalized2.0.0b3→2.0.0-beta.3(flit still builds a valid2.0.0b3PEP440 wheel; the publish workflow's raw tag↔source string check still passes).RELEASING.mdupdated with the automated flow, component table, and first-Release-PR verification steps.vscode/2.0.0-pre.NMarketplace channel.Add a
RELEASE_PLEASE_TOKENsecret (GitHub App installation token or fine-grained PAT withcontents:write+pull_requests:write). Tags cut with the defaultGITHUB_TOKENdo not trigger the tag-listening publish workflows. Without it, Release PRs still open but publishing won't auto-fire on the cut tag.Graduation to 2.0.0
Manifest is seeded at each runtime's last beta with no prerelease mode, so the first Release PR per runtime graduates it to a clean
2.0.0.Harness correctness (earlier commits)
tests/integration/test_agent_vector.py) anchored to themulti_turn_tool_callsconformance vector, proving real tool dispatch + multi-iteration dependency on OpenAI and keyless Foundry.gpt-image-1.Validation
prompty.__version__→2.0.0-beta.3; ruff clean.Co-authored-by: Copilot App 223556219+Copilot@users.noreply.github.com