Repository navigation
Issue fixes: Rust ARM discovery robustness + CI/toolchain reproducibility (#445, #474, #475, #477) - #482
Merged
Seth Juarez (sethjuarez) merged 4 commits intoAug 19, 2026
Conversation
| agent && | ||
| parentInputs && | ||
| typeof parsedArgs === "object" && | ||
| parsedArgs !== null && |
fetch_all accumulated every value-array entry, so a stray non-object entry (null/string/number) in the S1 projects response became a phantom FoundryProject with empty fields. That made projects non-empty and suppressed the classic-hub (S2) fallback, hiding the real projects. Extract a page_objects helper that keeps only JSON objects and call it from fetch_all, mirroring the Java runtime's paging helper so the two behavioural references agree. Add regression tests analogous to Java's FoundryArmTest.Paging.nonObjectEntriesAreSkipped. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Add a root rust-toolchain.toml (channel 1.97.1 + rustfmt/clippy) and a root global.json (9.0.317, rollForward latestFeature) so local and CI toolchains agree by construction. rustup, cargo, dtolnay/rust-toolchain and the .NET CLI all honour these files, which is what makes 'npm run generate' reproducible off-CI and stops false generated-code drift in schema-repro-check. global.json uses rollForward: latestFeature (not disable) so it stays compatible with every 9.0.x setup-dotnet pin already used across the C# workflows, while blocking accidental roll to 10.x. dotnet format output was measured SDK-invariant, so exactness is unnecessary and would needlessly break contributors. Simplify schema-repro-check.yml: the committed global.json replaces the ephemeral one the job wrote and deleted, so both steps are removed. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Add a weekly schedule trigger to schema-repro-check so drift from inputs no path filter can see — a runner image rotating its default SDK, a transitive formatter dep, a base image bump — is surfaced on a fixed cadence instead of on an unrelated contributor's next schema PR. Largely subsumed by the committed toolchain pins (#474); kept as a backstop for what those pins cannot bind. Also add rust-toolchain.toml and global.json to the pull_request trigger paths, since bumping either changes the rustfmt / dotnet format version the emitter uses. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
packages/*/lint was only 'tsc --noEmit', so hand-written TypeScript had no formatting verification. That let the prettier 3.8.3 -> 3.9.6 bump in #465 sit unnoticed on main until an unrelated schema-repro run found it four months later. Add root 'format' and 'format:check' scripts (prettier over packages/*/src, excluding the Typra-emitted packages/*/src/model so this hand-written check never polices generated code — that stays schema-repro-check's job), reformat the 37 hand-written source files to prettier 3.9.6 (the repo's own lockfile version), and run 'npm run format:check' in the TypeScript CI. Generated model/ was already 3.9.6-clean and is untouched; build, tests and tsc all pass. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Seth Juarez (sethjuarez)
force-pushed
the
sejuare-microsoft/prs-issues-runtimes
branch
from
August 19, 2026 01:12
81f476f to
c11a9a7
Compare
Seth Juarez (sethjuarez)
deleted the
sejuare-microsoft/prs-issues-runtimes
branch
August 19, 2026 03:21
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
This PR lands the self-contained, individually-tested issue fixes from the open backlog. Each was rubber-ducked and verified locally.
Closes #445
Closes #474
Closes #475
Closes #477
Changes
#445 — Rust ARM discovery skips non-object page entries
fetch_allaccumulated every entry in an ARMvaluearray, so a stray non-object entry produced a phantom Foundry project that suppressed the classic-hub (S2) fallback. Extracted a purepage_objects(body)helper that keeps only JSON objects, and wired it intofetch_all. Added two regression tests mirroring the Java runtime'snonObjectEntriesAreSkippedfor cross-runtime parity.cargo test -p prompty-foundry --lib→ 53 passcargo fmt --check→ cleancargo clippy→ clean#474 — Pin repo-wide Rust and .NET toolchains (schema reproducibility root cause)
Added root
rust-toolchain.toml(1.97.1+ rustfmt/clippy) and rootglobal.json(9.0.317,rollForward: latestFeature) sonpm run generateand formatter runs are deterministic. ChoselatestFeature(notdisable) so existing9.0.xsetup-dotnetCI jobs don't break while still blocking a 10.x jump. Simplifiedschema-repro-check.ymlby removing the ephemeralglobal.jsonwrite/cleanup steps now that the file is committed.dotnet --version→ 9.0.317cargo fmt --checkclean#477 — Run the schema reproducibility check weekly
Added a
schedule: cron '17 9 * * 1'trigger toschema-repro-check.ymland wired the new pin files into its trigger paths, so drift is caught even without a PR touching schema.#475 — Prettier format check for hand-written TypeScript
Added root
format/format:checkscripts scoped topackages/*/src/**and excluding the Typra-emittedpackages/*/src/model/**(prettier!negation rather than a.prettierignore, which the emitter's own prettier run would otherwise honor and cause drift). Reformatted 37 hand-written files to prettier 3.9.6; zero generated files touched. Added the check to TS CI.tsc --noEmitcleanTriage — left open (valid, not stale)
Deferred (documented, not in this PR)
PRs #438, #447, #439 (Swift), #444 (Java) are ~37 commits stale across the major restructure + schema regeneration. Per the project principle, emitted files must never be hand-edited — these require rebase onto main,
.tspsource edits,npm run generate(now reproducible thanks to the #474 pins), then behavior porting + per-runtime tests. Landing this PR first provides the reproducible toolchain needed to do that correctly.