Skip to content

refactor: backport AISim rename to release/0.14.0 - #815

Merged
saturley-hall merged 11 commits into
release/0.14.0from
refactor/backport-796-release-0.14.0
Nov 11, 2026
Merged

saturley-hall merged 11 commits into
release/0.14.0from
refactor/backport-796-release-0.14.0

Conversation

@saturley-hall

@saturley-hall saturley-hall commented Nov 10, 2026 •

Copy link
Copy Markdown
Member

Summary

Adapted backport of #796 to release/0.14.0. Release CI, consumer compatibility, and the coordinated repository/runner cutover remain pending.

  • Starting release tip: 62f4eaa2b092056f79d96682fcc67322dde279ce.
  • Rename/compatibility backport source: fc85294e633b0aa7e15968ee84cfad76aefb00a4. refactor: rename AISimulate to AISim with legacy Python and CLI support #796 now also integrates newer main at 69bcbac348d553a040d53bedcff10b572cccb02a; that main-only AFD migration is intentionally not introduced into release.
  • Current backport head: 9777cacdaefa0f5ab252bbc697475e5f57ee3b07, integrating refreshed release target 852a0e662ee3baf9602760e8eaa5a7a046f53fe0.
  • This is a selective adaptation of the rename and compatibility changes onto release-owned implementations. It does not merge main into the release.

Changes from the latest #796 review

Upstream change Release treatment
b4ec4d1b8: reject overlapping distributions Cherry-picked with attribution. Detect overlapping aisim / aisimulate installations before native extension loading and provide remediation.
d8ab3eacc: saved onboarding compatibility and CI fixes Adapted applicable runtime, checkpoint, plan, documentation, and test changes. Preserve the release's own qualification fingerprints.
580ad9883: saved formats and Pages fixes Applied remaining fixes; retained browser corrections already present in this backport. Added frozen legacy onboarding fixtures.
Final accuracy integration through fc85294e6 Migrated public accuracy summaries to v2 with canonical aisim fields. Python and browser readers accept v1, normalize it, and reject mixed or mislabeled schemas. Numeric results, evidence identities, and distribution identities are unchanged.
Main merges in f5e94a70a Excluded unrelated #547 provenance, #801 grouped-pool charging, and #776 sliding-window features. #814 provenance is now included through the release target; its checker, notices and inventory use the renamed paths.

Release preservation

Main contains newer vLLM observation support, G2/MTP and cache changes, collector mechanisms/data, and build features. Release has its own GPU-budget, documentation, synchronous-admission, retired-session-pin, and default-support-version backports. The migration retains the release implementations.

The initial adaptation reconciled 202 three-way file adaptations and 89 overlapping hunks across 57 files, excluding 86 main-only paths. The checked-in parity-runner Cargo lock remains at its renamed path.

  • Product version remains 0.14.0; Python dependencies and optional dependency groups remain unchanged.
  • Primary Cargo.lock and Python uv.lock remain byte-identical to the starting release base.
  • Release Maturin features remain ["extension-module"]; main's jemalloc policy is not imported.
  • 1,703 performance/model/provenance data files remain byte-identical, accounting for their new paths.
  • vLLM 0.32/0.33 support is retained from fix: backport vLLM 0.32.0 and 0.33.0 FPM self-service support to 0.14.0 #809, now merged into the release target. Main-only AFD/host-offload/MTP features, collector skip-policy rewrites, performance data, and version bumps are not imported.
  • Release-specific golden report fingerprints are retained. Main's differing performance-result hashes are not copied into the release.

Canonical names and legacy compatibility

Canonical project path is python/aisim, Python namespaces are aisim / aisim_core, the native extension is aisim._runtime, and Rust imports use aisim_core.

Legacy compatibility means supported old entry points and persisted formats continue to work:

  • aisimulate / aisimulate_core remain lazy aliases to canonical modules, preserving shared module identity; old CLI/module invocation, plugin discovery, revision flag, supported environment fallbacks, and former checkout-path symlink remain available.
  • Saved onboarding/checkpoint/runtime formats retain their established aisimulate-* schema identifiers and acceptance bindings. Existing generated plans with old CLI text/commands can be verified without rewriting accepted content; tampered plans remain invalid.
  • Public accuracy summaries use canonical v2 fields. Readers normalize valid v1 summaries while rejecting mixed or mislabeled contracts; downloaded source bytes are verified before normalization.
  • External registry/dataset names, immutable provenance, and historical measurements retain their actual identities.
  • The separately team-approved Weka/lifecycle/token hash namespace changes and version-2 token stream remain included with updated expectations. Old saved identities are not automatically migrated.

Rejecting simultaneously installed old and new distributions avoids two distributions owning overlapping compatibility files; legacy imports are supported through the canonical installation.

Workflows, documentation, legal checks, and generated CODEOWNERS use the new paths and replacement team references. Recreate the AISim GitHub teams with the same people; do not rename the old teams. Keep the old teams until both main/release ownership and other consumers are checked, then remove vestigial teams separately.

CI currently retains deployed prod-aisimulate-default-amd64-v1 / prod-aisimulate-default-arm64-v1 selectors, matching #796. Final cutover targets are prod-aisim-default-amd64-v1 / prod-aisim-default-arm64-v1; switch them with runner registration/draining in Velonix #882.

Related release work and cutover

  • #814 is now merged into release. Its bundled-config provenance files, checker paths, legal records and workflow hooks are reconciled with the rename here.
  • #809 is now merged into release. Its newer vLLM FPM self-service support is retained here.
  • #750 and #749 remain independent pending release changes.
  • Dynamo #18536 qualifies Dynamo main against exact refactor: rename AISimulate to AISim with legacy Python and CLI support #796 source fc85294e633b0aa7e15968ee84cfad76aefb00a4. It remains DRAFT / NOT READY FOR MERGE, pending compatible public artifacts; it does not pin this release branch.
  • Velonix #882 describes runner drain/replacement, repository rename/registration, and coordinated merges.
  • Organization-site #94 supplies browser Pages redirects through the existing organization site.

Validation

Latest conflict refresh, 9777cacdaefa0f5ab252bbc697475e5f57ee3b07:

  • Merged release target 852a0e662ee3baf9602760e8eaa5a7a046f53fe0, preserving ci: backport bundled config provenance checks to 0.14.0 #814 provenance and fix: backport vLLM 0.32.0 and 0.33.0 FPM self-service support to 0.14.0 #809 vLLM support. Regenerated CODEOWNERS; retained both new plan-validation imports.
  • Canonicalized provenance inventory/source paths without changing model bytes or the frozen unresolved-baseline file. The checker translates baseline paths in memory. Updated the hash of the canonical LICENSE file to account for its already-approved path rename; license terms are unchanged.
  • 86 focused provenance/workflow checks passed initially; the remaining inventory test exposed that path-dependent LICENSE digest, which was corrected and the exact failed test then passed. Source provenance verifies 124 configs and the unchanged 108-file unresolved baseline; packaged legal parity, targeted Ruff lint/format, whitespace, dependency/lock/build-feature preservation checks passed.
  • New-head Fast CI and Full CI have started. Previous green results below qualify earlier heads only. No full local suites were run.

Latest CI-failure fix, commit 142d2c45e61798667077f6d2405a5bf10158ce55:

  • Unit shards 2 and 4 failed on both AMD64 and ARM64 because two fixtures still referenced pre-rename paths. The isolated collector hash-closure mutation now targets src/aisim_core/sdk/models/deepseek_v41.py; the unified-package change-detection fixture now passes its actual python/aisim root.
  • Both exact failed tests passed locally (2 passed), using the release source with --noconftest to avoid loading the unrelated native CLI fixture. Their assertions and production behavior are unchanged. Ruff lint/format and whitespace checks passed for the modified files. No full local suites were run.
  • Previous-head Full CI failed on these two tests; its aggregate is not a passing qualification. New-head CI must validate the pushed fixes.

Latest focused checks:

  • 11 selected distribution-overlap/legacy-import checks passed.
  • 24 selected accuracy schema/publisher checks passed, covering v1-to-v2 normalization, source-byte verification, unknown versions, mixed/mislabeled fields, and publisher/digest support.
  • 6 selected browser schema tests passed.
  • Normalizing the previous release summary produces the new v2 summary exactly; normalizing v2 again is idempotent. This verifies that the migration changes schema/keys without changing numeric results or evidence identities.
  • Frozen v1/v2 support requests parse with the release implementation. A frozen checkpoint round-trips identically, retaining acceptance bindings.
  • Targeted Ruff lint/format, strict CODEOWNERS coverage, packaged legal parity, and whitespace checks passed. This delta changes no dependency manifests or primary lockfiles.
  • Four selected plan-tampering tests could not execute locally because the release native aisim._runtime extension is not built in the minimal environment. These are unverified locally; wheel-dependent resume/plan verification is left to CI.

Earlier backport validation:

  • 503 focused workflow/release contract tests passed, 3 skipped. Cold canonical/legacy imports, shared module identity, legacy plugin discovery, and the approved version-2 token golden were checked.
  • The initial Python Pages/artifact suite passed 1,859 tests. Pages/browser and Fast CI passed on the previous head 5077a7a32; those results do not qualify the new head.
  • CI exposed stale Cargo fixture aliases and 16 identity-bearing qualification fingerprints. Canonical Cargo keys and release-specific fingerprints were corrected; current CI must confirm them.

Full CI passed on prior head 142d2c45e; current-head CI above must qualify the merge refresh.

This PR does not rename the GitHub repository, deploy runners, publish artifacts, merge #796, or select a new release candidate.

Adapted from PR #796 at 9d61bdf, based on release/0.14.0 at 62f4eaa. Apply the rename/compatibility delta to release-owned implementations instead of merging main features. Preserve version 0.14.0, dependencies, primary lockfiles, release build features, and existing performance/provenance data. Retain the release parity-runner lock at its renamed path.

Signed-off-by: Harrison King Saturley-Hall <hsaturleyhal@nvidia.com>
@coderabbitai

coderabbitai Bot commented Nov 10, 2026 •

Copy link
Copy Markdown
Walkthrough

[!WARNING]
Review details and warnings were omitted to fit the comment limit.

Pre-merge checks: Passed 2 · Failed 2 · Inconclusive 2

Failed Failed checks: 2 warnings · 2 inconclusive

Check name Status Explanation Resolution
Title check Pending This assessment has not completed. The check will be retried on the next pre-merge check run.
Description check Pending This assessment has not completed. The check will be retried on the next pre-merge check run.
Cross-Layer Contract Warning The output-directory default is still stale in downstream documentation. This PR changes the default for predict and recommend from ./aisimulate-output to ./aisim-output (`python/aisim/src/ais… Update the Dynamo Replay and sweep references and examples to use the new default. Qualify the documentation against this release backport.
Compatibility Boundaries Warning The prior failure remains unresolved. The PR changes the predict and recommend default from ./aisimulate-output to ./aisim-output (python/aisim/src/aisim/cli_args.py:45-56, compared with rel… Preserve the old default, or coordinate the Dynamo documentation and example updates with this release. Qualify the downstream consumer against this release revision.
Passed Passed checks: 2 passed

Check name Status Explanation
Modeling And Data Evidence Passed The model data is retained, and the accuracy summary diff changes field names and title, not numeric results. The token-stream change has an explained versioned golden diff and independently recalcula…
Review Evidence Passed The description reports local checks, boundary cases, prior-head CI results, and pending current-head CI. It does not cite nested workflows as hosted CI evidence. The cited Fast CI and Full CI workflo…
Full details: Modeling And Data Evidence

Explanation

The model data is retained, and the accuracy summary diff changes field names and title, not numeric results. The token-stream change has an explained versioned golden diff and independently recalculated values (docs/ci/README.md:625-629; python/aisim/tests/unit/collector/test_glm53flash_attention_tokens.py:33-65). The replay fingerprint changes are attributed to the hash namespace migration (crates/core/tests/agentx_qualification.rs:671-695).

Full details: Review Evidence

Explanation

The description reports local checks, boundary cases, prior-head CI results, and pending current-head CI. It does not cite nested workflows as hosted CI evidence. The cited Fast CI and Full CI workflows are at the repository root (.github/workflows/fast-ci.yml:1-11 and .github/workflows/ci.yml:6-22).

Full details: Cross-Layer Contract

Explanation

The output-directory default is still stale in downstream documentation. This PR changes the default for predict and recommend from ./aisimulate-output to ./aisim-output (python/aisim/src/aisim/cli_args.py:45-56). Dynamo's Replay and sweep references still specify the old default and use it in output examples (ai-dynamo/dynamo commit 4bf7a661e74dbc56e08406300640151f7c846508, docs/fern/pages/reference/components/dynosim-replay-cli-reference.mdx:45,414 and docs/fern/pages/reference/components/dynosim-sweep-reference.mdx:23,145,158). Users can look for output in the wrong directory or run a command with the wrong path.

Resolution

Update the Dynamo Replay and sweep references and examples to use the new default. Qualify the documentation against this release backport.

Full details: Compatibility Boundaries

Explanation

The prior failure remains unresolved. The PR changes the predict and recommend default from ./aisimulate-output to ./aisim-output (python/aisim/src/aisim/cli_args.py:45-56, compared with release base 852a0e66). Dynamo still documents the old default and uses it in a follow-up command (ai-dynamo/dynamo, commit 4bf7a661e74dbc56e08406300640151f7c846508, docs/fern/pages/reference/components/dynosim-sweep-reference.mdx:13-23,141-158 and docs/fern/pages/reference/components/dynosim-replay-cli-reference.mdx:45-46). The follow-up command looks in the wrong directory.

Resolution

Preserve the old default, or coordinate the Dynamo documentation and example updates with this release. Qualify the downstream consumer against this release revision.

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Signed-off-by: Harrison King Saturley-Hall <hsaturleyhal@nvidia.com>
Signed-off-by: Harrison King Saturley-Hall <hsaturleyhal@nvidia.com>
Follow #796 at fd5b1b5: retain the currently deployed runner labels during CI qualification. No package, Rust/Python implementation, dependency, or data changes.

Signed-off-by: Harrison King Saturley-Hall <hsaturleyhal@nvidia.com>
Signed-off-by: Harrison King Saturley-Hall <hsaturleyhal@nvidia.com>
Signed-off-by: Harrison King Saturley-Hall <hsaturleyhal@nvidia.com>
Signed-off-by: Harrison King Saturley-Hall <hsaturleyhal@nvidia.com>
Signed-off-by: Harrison King Saturley-Hall <hsaturleyhal@nvidia.com>
(cherry picked from commit b4ec4d1)
Adapt rename compatibility fixes from d8ab3ea and 580ad98, and the final accuracy v2 integration at fc85294 in upstream PR #796. Preserve release qualification hashes, dependencies, data, and legal records; exclude unrelated main feature merges.

Signed-off-by: Harrison King Saturley-Hall <hsaturleyhal@nvidia.com>
@saturley-hall
saturley-hall marked this pull request as ready for review November 11, 2026 02:08
@saturley-hall
saturley-hall requested review from a team as code owners November 11, 2026 02:08
Signed-off-by: Harrison King Saturley-Hall <hsaturleyhal@nvidia.com>
Reconcile merged provenance #814 and vLLM support #809 with canonical AISim paths. Preserve frozen provenance baseline and release model bytes; update path-dependent LICENSE digest without changing license terms.

Signed-off-by: Harrison King Saturley-Hall <hsaturleyhal@nvidia.com>
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