Skip to content

feat(repo): migrate to domain-driven architecture#270

Merged
WilliamBerryiii merged 25 commits into
mainfrom
feat/architecture-reorg
Mar 16, 2026
Merged

feat(repo): migrate to domain-driven architecture#270
WilliamBerryiii merged 25 commits into
mainfrom
feat/architecture-reorg

Conversation

@agreaves-ms
Copy link
Copy Markdown
Contributor

feat(repo): migrate to domain-driven architecture

Reorganized the entire repository from a flat monolithic structure into a domain-driven architecture aligned with the Physical AI Toolchain lifecycle. This migration replaced numbered deployment directories (deploy/000-*, deploy/001-*, deploy/002-*) and a centralized src/ directory with purpose-driven domain directories, establishing a consistent structure across all eight lifecycle domains.

The repository's directory hierarchy now reflects the conceptual architecture documented in docs/contributing/architecture.md, making it easier for contributors to locate code by domain rather than deployment stage.

Description

Repository Structure Migration

Moved 864 files across 15 commits to establish the new directory layout. Each domain follows a consistent structure: README.md, specifications/, examples/, scripts/, workflows/, and setup/. Core migration paths:

  • deploy/000-prerequisites/infrastructure/terraform/prerequisites/
  • deploy/001-iac/infrastructure/terraform/
  • deploy/002-setup/infrastructure/setup/
  • src/training/training/rl/
  • src/dataviewer/data-management/viewer/
  • src/inference/ → split across evaluation/sil/ and fleet-deployment/inference/
  • src/common/ → dissolved; symbols now imported from training.rl
  • scripts/shared/ci/ (CI/linting) and shared/lib/ (shell libraries)

Infrastructure Domain

Consolidated all infrastructure-as-code under infrastructure/. Terraform modules moved from deploy/001-iac/ to infrastructure/terraform/ with all modules preserved. Removed the dataviewer module from the main Terraform configuration (~120 lines of variables, outputs, and module references). Added three example tfvars files (terraform.tfvars.dev, terraform.tfvars.hybrid, terraform.tfvars.prod) and five infrastructure specification documents.

Shared Library Centralization

Moved common.sh to shared/lib/common.sh as the canonical location and terraform-outputs.sh to shared/lib/terraform-outputs.sh. Created symlinks at scripts/lib/terraform-outputs.sh, infrastructure/setup/lib/common.sh, and within each domain's scripts/lib/ directory for backward compatibility. CI/linting scripts and Pester tests relocated from scripts/ to shared/ci/.

Training Domain

Split training into three subdirectories: training/rl/ (SKRL/RSL-RL with Isaac Lab), training/il/ (LeRobot ACT/Diffusion), and training/vla/ (scaffolded for future VLA training). Updated Python imports from from common import cli_args to from training.rl import cli_args. Updated pyproject.toml package sources, wheel targets, and coverage configuration to reflect the new layout.

Data Management & Dataviewer

Moved the dataviewer application from src/dataviewer/ to data-management/viewer/. Frontend components received formatting normalization (semicolons, Tailwind class ordering, quote style). Added barrel export files (index.ts) for each component directory, extracted new hooks (use-export.ts, use-labels.ts, use-toast.ts, useTrajectoryPlotSelection.ts), and introduced new UI primitives (separator, skeleton, table, tooltip).

Evaluation Domain

Created evaluation/ by splitting src/inference/. Software-in-the-loop evaluation scripts moved to evaluation/sil/, metrics and plotting utilities to evaluation/metrics/, and hardware-in-the-loop scaffolded at evaluation/hil/. Renamed the package to physical-ai-evaluation. Updated submission scripts to source from new shared library paths.

New Domain Scaffolding

Introduced four new domain directories with specification documents, README files, and initial structures:

  • fleet-deployment/: GitOps bootstrapping, image automation, deployment gating, inference node
  • fleet-intelligence/: Grafana dashboards, drift detection, telemetry agents, IoT Operations setup
  • synthetic-data/: NVIDIA Cosmos integration structure (predict, reason, transfer)
  • data-pipeline/: Recording configuration and capture with schema generation

CI/CD and Configuration

Updated all 13 GitHub Actions workflow files with new directory references. Modified package.json npm scripts, .cspell.json ignore paths, Dependabot directory mappings, .tflint.hcl, .vscode/tasks.json, and .husky/pre-commit. Updated all Copilot artifacts (agents, skills, prompts, instructions) with new paths.

Documentation

Updated 130+ markdown files. Renamed docs/deploy/docs/infrastructure/ and docs/inference/docs/evaluation/. Added documentation sections for all new domains. Fully updated copilot-instructions.md with the new repository structure table and all path references.

Type of Change

  • 🐛 Bug fix (non-breaking change fixing an issue)
  • ✨ New feature (non-breaking change adding functionality)
  • 💥 Breaking change (fix or feature causing existing functionality to change)
  • 📚 Documentation update
  • 🏗️ Infrastructure change (Terraform/IaC)
  • ♻️ Refactoring (no functional changes)

Component(s) Affected

  • infrastructure/terraform/prerequisites/ - Azure subscription setup
  • infrastructure/terraform/ - Terraform infrastructure
  • infrastructure/setup/ - OSMO control plane / Helm
  • workflows/ - Training and evaluation workflows
  • training/ - Training pipelines and scripts
  • docs/ - Documentation

Testing Performed

  • Terraform plan reviewed (no unexpected changes)
  • Terraform apply tested in dev environment
  • Training scripts tested locally with Isaac Sim
  • OSMO workflow submitted successfully
  • Smoke tests passed (smoke_test_azure.py)

Documentation Impact

  • No documentation changes needed
  • Documentation updated in this PR
  • Documentation issue filed

Bug Fix Checklist

Complete this section for bug fix PRs. Skip for other contribution types.

  • Linked to issue being fixed
  • Regression test included, OR
  • Justification for no regression test:

Checklist

- Update terraform-outputs.sh default and all submission script
  read_terraform_outputs calls from deploy/001-iac to
  infrastructure/terraform
- Fix submit-osmo-eval.sh export_policy.py path check and zip paths
- Clean up pyproject.toml per-file-ignores, known-first-party, and
  coverage config for dissolved src/inference and src/common
- Move train-dataset.yaml from training/rl to training/il (correct
  consumer)
- Update OSMO workflow container-side payload paths
- Update documentation, copilot artifacts, and dependabot config
@agreaves-ms agreaves-ms requested a review from a team as a code owner March 15, 2026 18:06
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Mar 15, 2026

Dependency Review Summary

The full dependency review summary was too large to display here (1228KB, limit is 1024KB).

Please download the artifact named "dependency-review-summary" to view the complete report.

View full job summary

- fix 15 broken Python imports (training.scripts → training.rl.scripts / training.il.scripts)
- fix 5 stale src/ PYTHONPATH and code_path references in shell scripts and OSMO YAMLs
- remove dissolved src/common from OSMO payload archive zip commands
- fix CodeQL high-severity incomplete URL substring sanitization in upload_artifacts.py
- update stale documentation paths in CONTRIBUTING.md, ROADMAP.md, and capture config README

🔧 - Generated by Copilot
@codecov-commenter
Copy link
Copy Markdown

codecov-commenter commented Mar 16, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 9.79%. Comparing base (a78cb97) to head (c1ab1c3).

❗ There is a different number of reports uploaded between BASE (a78cb97) and HEAD (c1ab1c3). Click for more details.

HEAD has 1 upload less than BASE
Flag BASE (a78cb97) HEAD (c1ab1c3)
pester 2 1
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #270       +/-   ##
==========================================
- Coverage   37.47%   9.79%   -27.69%     
==========================================
  Files          43      29       -14     
  Lines        6135    3881     -2254     
  Branches      497     497               
==========================================
- Hits         2299     380     -1919     
+ Misses       3826    3491      -335     
  Partials       10      10               
Flag Coverage Δ *Carryforward flag
pester 79.87% <ø> (-4.94%) ⬇️
pytest 6.89% <ø> (ø) Carriedforward from b14143f

*This pull request uses carry forward flags. Click here to find out more.
see 14 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

- modify ruff check and format commands to use current directory
- adjust error message for local execution guidance

🔧 - Generated by Copilot
Copy link
Copy Markdown
Contributor

@nguyena2 nguyena2 left a comment

Choose a reason for hiding this comment

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

Credit score rating (approval confidence):

Score: 790/850
Grade: Very Good
Reason: strong structural consistency and no clear functional blockers found in code review; score is not higher only because of the unusually large PR surface area, which naturally increases residual review risk.

- Bump pyjwt from >=2.8.0 to >=2.12.0 (GHSA-752w-5fwx-jx9f,
  crit header bypass, HIGH severity)
- Rename pyjwt extra from [cryptography] to [crypto] per 2.12.0
  upstream rename
- Add pyjwt>=2.12.0 constraint to viewer pyproject.toml for
  transitive dependency via msal
- Fix flatted DoS vulnerability via npm audit fix
  (GHSA-25h7-pfq9-p65f, HIGH severity)
…ng scripts

- update path resolution logic in Invoke-PSScriptAnalyzer.ps1
- modify path resolution in Invoke-YamlLint.ps1
- replace manual path handling with git command in Markdown-Link-Check.ps1
- enhance code readability and maintainability

🔧 - Generated by Copilot
… and README files

- Align table headers and content for better readability
- Ensure consistent use of markdown syntax across documentation
- Improve overall presentation of components and parameters

🎨 - Generated by Copilot
@WilliamBerryiii WilliamBerryiii merged commit a339e70 into main Mar 16, 2026
22 checks passed
@WilliamBerryiii WilliamBerryiii deleted the feat/architecture-reorg branch March 16, 2026 20:54
akhanattentive pushed a commit that referenced this pull request Mar 16, 2026
Reorganized the entire repository from a flat monolithic structure into
a domain-driven architecture aligned with the Physical AI Toolchain
lifecycle. This migration replaced numbered deployment directories
(`deploy/000-*`, `deploy/001-*`, `deploy/002-*`) and a centralized
`src/` directory with purpose-driven domain directories, establishing a
consistent structure across all eight lifecycle domains.

> The repository's directory hierarchy now reflects the conceptual
architecture documented in `docs/contributing/architecture.md`, making
it easier for contributors to locate code by domain rather than
deployment stage.

Moved 864 files across 15 commits to establish the new directory layout.
Each domain follows a **consistent structure**: `README.md`,
`specifications/`, `examples/`, `scripts/`, `workflows/`, and `setup/`.
Core migration paths:

- `deploy/000-prerequisites/` →
`infrastructure/terraform/prerequisites/`
- `deploy/001-iac/` → `infrastructure/terraform/`
- `deploy/002-setup/` → `infrastructure/setup/`
- `src/training/` → `training/rl/`
- `src/dataviewer/` → `data-management/viewer/`
- `src/inference/` → split across `evaluation/sil/` and
`fleet-deployment/inference/`
- `src/common/` → dissolved; symbols now imported from `training.rl`
- `scripts/` → `shared/ci/` (CI/linting) and `shared/lib/` (shell
libraries)

Consolidated all infrastructure-as-code under `infrastructure/`.
Terraform modules moved from *deploy/001-iac/* to
*infrastructure/terraform/* with all modules preserved. Removed the
**dataviewer module** from the main Terraform configuration (~120 lines
of variables, outputs, and module references). Added three example
tfvars files (*terraform.tfvars.dev*, *terraform.tfvars.hybrid*,
*terraform.tfvars.prod*) and five infrastructure specification
documents.

Moved `common.sh` to *shared/lib/common.sh* as the canonical location
and `terraform-outputs.sh` to *shared/lib/terraform-outputs.sh*. Created
**symlinks** at `scripts/lib/terraform-outputs.sh`,
`infrastructure/setup/lib/common.sh`, and within each domain's
`scripts/lib/` directory for backward compatibility. CI/linting scripts
and Pester tests relocated from `scripts/` to `shared/ci/`.

Split training into three subdirectories: **training/rl/** (SKRL/RSL-RL
with Isaac Lab), **training/il/** (LeRobot ACT/Diffusion), and
**training/vla/** (scaffolded for future VLA training). Updated Python
imports from `from common import cli_args` to `from training.rl import
cli_args`. Updated *pyproject.toml* package sources, wheel targets, and
coverage configuration to reflect the new layout.

Moved the dataviewer application from *src/dataviewer/* to
*data-management/viewer/*. Frontend components received formatting
normalization (semicolons, Tailwind class ordering, quote style). Added
**barrel export files** (`index.ts`) for each component directory,
extracted new hooks (*use-export.ts*, *use-labels.ts*, *use-toast.ts*,
*useTrajectoryPlotSelection.ts*), and introduced new UI primitives
(*separator*, *skeleton*, *table*, *tooltip*).

Created `evaluation/` by splitting *src/inference/*.
Software-in-the-loop evaluation scripts moved to `evaluation/sil/`,
metrics and plotting utilities to `evaluation/metrics/`, and
hardware-in-the-loop scaffolded at `evaluation/hil/`. Renamed the
package to **physical-ai-evaluation**. Updated submission scripts to
source from new shared library paths.

Introduced four new domain directories with specification documents,
README files, and initial structures:

- **fleet-deployment/**: GitOps bootstrapping, image automation,
deployment gating, inference node
- **fleet-intelligence/**: Grafana dashboards, drift detection,
telemetry agents, IoT Operations setup
- **synthetic-data/**: NVIDIA Cosmos integration structure (predict,
reason, transfer)
- **data-pipeline/**: Recording configuration and capture with schema
generation

Updated all 13 GitHub Actions workflow files with new directory
references. Modified *package.json* npm scripts, *.cspell.json* ignore
paths, Dependabot directory mappings, *.tflint.hcl*,
*.vscode/tasks.json*, and *.husky/pre-commit*. Updated all Copilot
artifacts (agents, skills, prompts, instructions) with new paths.

Updated 130+ markdown files. Renamed `docs/deploy/` →
`docs/infrastructure/` and `docs/inference/` → `docs/evaluation/`. Added
documentation sections for all new domains. Fully updated
*copilot-instructions.md* with the new repository structure table and
all path references.

- [ ] 🐛 Bug fix (non-breaking change fixing an issue)
- [ ] ✨ New feature (non-breaking change adding functionality)
- [x] 💥 Breaking change (fix or feature causing existing functionality
to change)
- [x] 📚 Documentation update
- [x] 🏗️ Infrastructure change (Terraform/IaC)
- [x] ♻️ Refactoring (no functional changes)

- [x] `infrastructure/terraform/prerequisites/` - Azure subscription
setup
- [x] `infrastructure/terraform/` - Terraform infrastructure
- [x] `infrastructure/setup/` - OSMO control plane / Helm
- [x] `workflows/` - Training and evaluation workflows
- [x] `training/` - Training pipelines and scripts
- [x] `docs/` - Documentation

- [ ] Terraform `plan` reviewed (no unexpected changes)
- [ ] Terraform `apply` tested in dev environment
- [ ] Training scripts tested locally with Isaac Sim
- [ ] OSMO workflow submitted successfully
- [ ] Smoke tests passed (`smoke_test_azure.py`)

- [x] No documentation changes needed
- [x] Documentation updated in this PR
- [ ] Documentation issue filed

*Complete this section for bug fix PRs. Skip for other contribution
types.*

- [ ] Linked to issue being fixed
- [ ] Regression test included, OR
- [ ] Justification for no regression test:

- [x] My code follows the [project conventions](copilot-instructions.md)
- [x] Commit messages follow [conventional commit
format](instructions/commit-message.instructions.md)
- [x] I have performed a self-review
- [x] Documentation impact assessed above
- [x] No new linting warnings introduced

---------

Co-authored-by: katriendg <katriendg@users.noreply.github.com>
akhanattentive pushed a commit that referenced this pull request Mar 16, 2026
Reorganized the entire repository from a flat monolithic structure into
a domain-driven architecture aligned with the Physical AI Toolchain
lifecycle. This migration replaced numbered deployment directories
(`deploy/000-*`, `deploy/001-*`, `deploy/002-*`) and a centralized
`src/` directory with purpose-driven domain directories, establishing a
consistent structure across all eight lifecycle domains.

> The repository's directory hierarchy now reflects the conceptual
architecture documented in `docs/contributing/architecture.md`, making
it easier for contributors to locate code by domain rather than
deployment stage.

Moved 864 files across 15 commits to establish the new directory layout.
Each domain follows a **consistent structure**: `README.md`,
`specifications/`, `examples/`, `scripts/`, `workflows/`, and `setup/`.
Core migration paths:

- `deploy/000-prerequisites/` →
`infrastructure/terraform/prerequisites/`
- `deploy/001-iac/` → `infrastructure/terraform/`
- `deploy/002-setup/` → `infrastructure/setup/`
- `src/training/` → `training/rl/`
- `src/dataviewer/` → `data-management/viewer/`
- `src/inference/` → split across `evaluation/sil/` and
`fleet-deployment/inference/`
- `src/common/` → dissolved; symbols now imported from `training.rl`
- `scripts/` → `shared/ci/` (CI/linting) and `shared/lib/` (shell
libraries)

Consolidated all infrastructure-as-code under `infrastructure/`.
Terraform modules moved from *deploy/001-iac/* to
*infrastructure/terraform/* with all modules preserved. Removed the
**dataviewer module** from the main Terraform configuration (~120 lines
of variables, outputs, and module references). Added three example
tfvars files (*terraform.tfvars.dev*, *terraform.tfvars.hybrid*,
*terraform.tfvars.prod*) and five infrastructure specification
documents.

Moved `common.sh` to *shared/lib/common.sh* as the canonical location
and `terraform-outputs.sh` to *shared/lib/terraform-outputs.sh*. Created
**symlinks** at `scripts/lib/terraform-outputs.sh`,
`infrastructure/setup/lib/common.sh`, and within each domain's
`scripts/lib/` directory for backward compatibility. CI/linting scripts
and Pester tests relocated from `scripts/` to `shared/ci/`.

Split training into three subdirectories: **training/rl/** (SKRL/RSL-RL
with Isaac Lab), **training/il/** (LeRobot ACT/Diffusion), and
**training/vla/** (scaffolded for future VLA training). Updated Python
imports from `from common import cli_args` to `from training.rl import
cli_args`. Updated *pyproject.toml* package sources, wheel targets, and
coverage configuration to reflect the new layout.

Moved the dataviewer application from *src/dataviewer/* to
*data-management/viewer/*. Frontend components received formatting
normalization (semicolons, Tailwind class ordering, quote style). Added
**barrel export files** (`index.ts`) for each component directory,
extracted new hooks (*use-export.ts*, *use-labels.ts*, *use-toast.ts*,
*useTrajectoryPlotSelection.ts*), and introduced new UI primitives
(*separator*, *skeleton*, *table*, *tooltip*).

Created `evaluation/` by splitting *src/inference/*.
Software-in-the-loop evaluation scripts moved to `evaluation/sil/`,
metrics and plotting utilities to `evaluation/metrics/`, and
hardware-in-the-loop scaffolded at `evaluation/hil/`. Renamed the
package to **physical-ai-evaluation**. Updated submission scripts to
source from new shared library paths.

Introduced four new domain directories with specification documents,
README files, and initial structures:

- **fleet-deployment/**: GitOps bootstrapping, image automation,
deployment gating, inference node
- **fleet-intelligence/**: Grafana dashboards, drift detection,
telemetry agents, IoT Operations setup
- **synthetic-data/**: NVIDIA Cosmos integration structure (predict,
reason, transfer)
- **data-pipeline/**: Recording configuration and capture with schema
generation

Updated all 13 GitHub Actions workflow files with new directory
references. Modified *package.json* npm scripts, *.cspell.json* ignore
paths, Dependabot directory mappings, *.tflint.hcl*,
*.vscode/tasks.json*, and *.husky/pre-commit*. Updated all Copilot
artifacts (agents, skills, prompts, instructions) with new paths.

Updated 130+ markdown files. Renamed `docs/deploy/` →
`docs/infrastructure/` and `docs/inference/` → `docs/evaluation/`. Added
documentation sections for all new domains. Fully updated
*copilot-instructions.md* with the new repository structure table and
all path references.

- [ ] 🐛 Bug fix (non-breaking change fixing an issue)
- [ ] ✨ New feature (non-breaking change adding functionality)
- [x] 💥 Breaking change (fix or feature causing existing functionality
to change)
- [x] 📚 Documentation update
- [x] 🏗️ Infrastructure change (Terraform/IaC)
- [x] ♻️ Refactoring (no functional changes)

- [x] `infrastructure/terraform/prerequisites/` - Azure subscription
setup
- [x] `infrastructure/terraform/` - Terraform infrastructure
- [x] `infrastructure/setup/` - OSMO control plane / Helm
- [x] `workflows/` - Training and evaluation workflows
- [x] `training/` - Training pipelines and scripts
- [x] `docs/` - Documentation

- [ ] Terraform `plan` reviewed (no unexpected changes)
- [ ] Terraform `apply` tested in dev environment
- [ ] Training scripts tested locally with Isaac Sim
- [ ] OSMO workflow submitted successfully
- [ ] Smoke tests passed (`smoke_test_azure.py`)

- [x] No documentation changes needed
- [x] Documentation updated in this PR
- [ ] Documentation issue filed

*Complete this section for bug fix PRs. Skip for other contribution
types.*

- [ ] Linked to issue being fixed
- [ ] Regression test included, OR
- [ ] Justification for no regression test:

- [x] My code follows the [project conventions](copilot-instructions.md)
- [x] Commit messages follow [conventional commit
format](instructions/commit-message.instructions.md)
- [x] I have performed a self-review
- [x] Documentation impact assessed above
- [x] No new linting warnings introduced

---------

Co-authored-by: katriendg <katriendg@users.noreply.github.com>
WilliamBerryiii pushed a commit that referenced this pull request Mar 26, 2026
🤖 I have created a release *beep* *boop*
---


##
[0.5.0](v0.4.0...v0.5.0)
(2026-03-26)


### ✨ Features

* add dataviewer web application for dataset analysis and annotation
([#375](#375))
([c44d7bb](c44d7bb))
* add return type annotations to cli_args functions
([#476](#476))
([35523ee](35523ee))
* add YAML config schema with pydantic validation for ROS 2 recording
([#376](#376))
([1fa5243](1fa5243))
* **agents:** Copilot agents and skills for dataviewer and OSMO training
workflows.
([#444](#444))
([8b72daf](8b72daf))
* **build:** add automated ms.date freshness checking
([#448](#448))
([f92ddbc](f92ddbc))
* **build:** add CLA section, Dependabot security prefix, and OWASP ZAP
DAST scan
([#241](#241))
([083a8af](083a8af))
* **build:** add coverage.py configuration to pyproject.toml
([#428](#428))
([eac7426](eac7426))
* **build:** add Go CI pipeline with golangci-lint and go test
([#351](#351))
([b27e4fb](b27e4fb))
* **build:** add OpenSSF Scorecard workflow and badge
([#431](#431))
([98a62e7](98a62e7))
* **build:** add release artifact signing and SBOM attestation
([#480](#480))
([b226e96](b226e96))
* **build:** add TFLint reusable GitHub Actions workflow
([#229](#229))
([34d5575](34d5575))
* **build:** split Go CI into separate lint and test pipelines
([#354](#354))
([2dec155](2dec155))
* **dataviewer:** add authentication middleware and CSRF protection for
mutation endpoints
([#432](#432))
([77c8a01](77c8a01))
* **docs:** create training documentation hub with guides and migration
([#380](#380))
([0fdccc5](0fdccc5))
* **docs:** port Docusaurus documentation site with full build
validation
([#182](#182))
([29dd640](29dd640))
* fix and deploy dataviewer
([#498](#498))
([c922d49](c922d49))
* **inference:** add AzureML and local LeRobot inference workflows
([#438](#438))
([f7d786a](f7d786a))
* **inference:** add MLflow trajectory plots and multi-source support to
OSMO inference workflow
([#421](#421))
([8637458](8637458))
* **infra:** add blob storage lifecycle policies and folder structure
([#179](#179))
([101a6e8](101a6e8))
* **infrastructure:** add optional observability and compute feature
flags
([#437](#437))
([9eba0da](9eba0da))
* **infrastructure:** add private Linux Isaac Sim VM deployment option
([#348](#348))
([3748c2d](3748c2d))
* **infrastructure:** add terraform-docs auto-generation pipeline
([#358](#358))
([6565caa](6565caa))
* **infrastructure:** harden Isaac Sim VM deployment with encryption and
spot options
([#355](#355))
([6ebc1f2](6ebc1f2))
* **repo:** migrate to domain-driven architecture
([#270](#270))
([a339e70](a339e70))
* **scripts:** add --config-preview and deployment summary to submission
scripts
([#499](#499))
([4069806](4069806))
* **scripts:** add Copilot attribution footer validation to frontmatter
linting
([#378](#378))
([4d595f2](4d595f2))
* **src:** add dataviewer web application with storage adapter layer
([#404](#404))
([8a9fb70](8a9fb70))


### 🐛 Bug Fixes

* **build:** add GHSA to cspell custom dictionary
([#315](#315))
([67db81a](67db81a))
* **build:** correct codecov report_type input for terraform test
uploads
([#324](#324))
([d90d66d](d90d66d))
* **build:** expand CODEOWNERS coverage to critical paths
([#505](#505))
([bafade1](bafade1))
* **build:** pin Docker base image and pip dependencies with Dependabot
coverage
([#497](#497))
([d3d7ea4](d3d7ea4))
* **build:** pin pydantic version and use uv in config schema validation
workflow
([#493](#493))
([28d823f](28d823f))
* **build:** pin uv installer to versioned URL
([#495](#495))
([8d8541b](8d8541b))
* **build:** remediate GHSA vulnerabilities flagged by OSSF Scorecard
([#271](#271))
([49b6e58](49b6e58))
* **build:** remove README frontmatter, add FrontmatterExcludePaths,
enforce Pester 5
([#443](#443))
([641d0f3](641d0f3))
* **build:** resolve CI failures for release 0.5.0 PR
([#174](#174))
([62c9900](62c9900))
* **build:** resolve codecov PR comment suppression
([#523](#523))
([5603bd7](5603bd7))
* **build:** use npm ci for deterministic frontend dependency install
([#491](#491))
([ee8b5d3](ee8b5d3)),
closes
[#490](#490)
* **ci:** add `wait_for_ci` to Codecov configuration
([#183](#183))
([370cf44](370cf44))
* **CI:** Issue 116 clean up dataviewer tests
([#184](#184))
([f466c23](f466c23))
* **ci:** pin pydantic to ==2.12.5 across all references
([#230](#230))
([9d841d5](9d841d5))
* **dataviewer:** add HTTP Range support for blob video streaming
([#165](#165))
([8adde50](8adde50))
* **dataviewer:** remediate CodeQL alerts and align ruff config
([#419](#419))
([eb6fac9](eb6fac9))
* **dataviewer:** remediate path traversal and input validation
vulnerabilities
([#413](#413))
([0a1d2ca](0a1d2ca))
* **docs:** remove trailingSlash: false for GitHub Pages compatibility
([#228](#228))
([a78cb97](a78cb97))
* **gpu:** add GPU Operator validation dependencies to GRID driver
installer
([#441](#441))
([eec42da](eec42da))
* **infrastructure:** add zone-redundant config to VPN gateway public IP
([#352](#352))
([2d734f4](2d734f4))
* **infrastructure:** improve stdout handling for helm commands in GPU…
([#311](#311))
([153f467](153f467))
* **infrastructure:** resolve remaining TFLint violations in SIL module
and example configs
([#298](#298))
([c0ce3e5](c0ce3e5))
* **infrastructure:** resolve TFLint violations in root and automation
modules
([#287](#287))
([b6a4604](b6a4604)),
closes
[#203](#203)
* **infrastructure:** update deprecated bgp vng variable name
([#307](#307))
([f530734](f530734))
* **scripts:** pin uv version in OSMO workflow templates
([#500](#500))
([7edf13a](7edf13a))
* **scripts:** replace lambda with def in lerobot_handler to satisfy R…
([#176](#176))
([baf9e58](baf9e58))
* **scripts:** support OSMO control-plane deploys with in-cluster Redis
([#317](#317))
([d4b70de](d4b70de))
* **scripts:** update compute target name derivation logic
([#319](#319))
([bb20431](bb20431))
* **settings:** update devcontainer name to match project context
([#177](#177))
([745321e](745321e))
* **terraform:** create PostgreSQL Key Vault secret via ARM control
plane
([#304](#304))
([5d73b81](5d73b81))
* **terraform:** gate observability with feature flags
([#303](#303))
([ea5e056](ea5e056))
* **terraform:** switch VPN gateway defaults to AZ SKUs
([#309](#309))
([74989c5](74989c5))
* **training:** correct learning rate mapping and pin LeRobot version
([#439](#439))
([5cf9943](5cf9943))
* **workflows:** enable SARIF upload for dependency-pinning scans
([#502](#502))
([124cad6](124cad6)),
closes
[#501](#501)
* **workflows:** remove redundant top-level permissions from
codeql-analysis
([#489](#489))
([1490fda](1490fda))
* **workflows:** use bash shell for uv.lock regeneration and add SARIF
to dictionary
([#225](#225))
([e6fa6ea](e6fa6ea))


### 📚 Documentation

* add chunking and compression configuration guide for Jetson edge
recording
([#408](#408))
([787a322](787a322))
* add OpenSSF Best Practices badge to README
([#282](#282))
([01ea384](01ea384))
* add threat model cross-reference to SECURITY.md
([#235](#235))
([88a461e](88a461e))
* add vulnerability remediation timeline to SECURITY.md
([#233](#233))
([5ead3ee](5ead3ee))
* **contributing:** remove version-specific planning language from
ownership tip
([#407](#407))
([3191f9b](3191f9b))
* **deploy:** replace deploy/ READMEs with pointer files
([#379](#379))
([b3c3abb](b3c3abb))
* **docs:** add bug report response timeline for OSSF report_responses
criterion
([#485](#485))
([9b26212](9b26212))
* **docs:** add component update process for OpenSSF Silver badge
([#446](#446))
([6adc8a2](6adc8a2))
* **docs:** Add data collection and training recipes
([#343](#343))
([9c34f86](9c34f86))
* **docs:** add deprecation policy for external interfaces
([#445](#445))
([229d5db](229d5db))
* **docs:** add structure for recipes in repo
([#322](#322))
([098757b](098757b))
* **docs:** add YAML frontmatter to SUPPORT.md
([#478](#478))
([d94c15d](d94c15d)),
closes
[#347](#347)
* **docs:** clarify issue assignment requirement before starting work
([#299](#299))
([1534462](1534462))
* **docs:** create inference and training docs hubs
([#402](#402))
([7a20a2e](7a20a2e))
* **docs:** create reference hub and migrate script documentation
([#503](#503))
([03a31c6](03a31c6))
* **docs:** create training and inference documentation hubs
([#403](#403))
([7be003b](7be003b))
* **operations:** create operations hub and troubleshooting guide
([#525](#525))
([31c7aaa](31c7aaa))
* **reference:** add copilot artifacts documentation hub
([#170](#170))
([9a45ca4](9a45ca4))
* simplify root README and update prerequisites
([#440](#440))
([c0c7710](c0c7710))


### ♻️ Code Refactoring

* **build:** align Python dependency workflows with uv
([#447](#447))
([3102e03](3102e03))
* **docs:** rename Docusaurus site to Physical AI Toolchain
([#224](#224))
([cfdf47a](cfdf47a))
* **infrastructure:** rename boolean variables to `should_` prefix and
add missing core variables
([#292](#292))
([4496593](4496593))
* **python:** move runtime deps to workflow pyproject manifests
([#405](#405))
([6c5fbeb](6c5fbeb))


### 📦 Build System

* **build:** add Codecov upload to pytest workflow
([#434](#434))
([0110c17](0110c17))
* **deps-dev:** bump the npm_and_yarn group across 2 directories with 1
update
([#325](#325))
([59cf9e6](59cf9e6))
* **workflows:** enable coverage parameters and fix Pester test
infrastructure
([#435](#435))
([528bbde](528bbde))


### 🔧 Miscellaneous

* add gomod to cspell general-technical wordlist
([#362](#362))
([1f93f47](1f93f47))
* **build:** add codecov.yml for unified coverage reporting
([#430](#430))
([b0faf70](b0faf70))
* **build:** add Go toolchain devcontainer feature and Dependabot gomod
([#337](#337))
([8a36620](8a36620))
* **deps:** bump cryptography from 45.0.7 to 46.0.5 in /src/training
([#506](#506))
([a06434e](a06434e))
* **deps:** bump minimatch in /src/dataviewer/frontend
([#416](#416))
([38a7607](38a7607))
* **deps:** bump pyasn1 from 0.6.2 to 0.6.3 in /training/rl
([#296](#296))
([7b42cf5](7b42cf5))
* **deps:** bump rollup in /src/dataviewer/frontend
([#417](#417))
([6302ce4](6302ce4))
* **deps:** bump the common-dependencies group in /src/common with 3
updates
([#507](#507))
([db05074](db05074))
* **deps:** bump the github-actions group across 1 directory with 6
updates
([#284](#284))
([c40eff6](c40eff6))
* **deps:** bump the github-actions group across 1 directory with 6
updates
([#433](#433))
([2d9dd4f](2d9dd4f))
* **deps:** bump the github-actions group across 1 directory with 6
updates
([#510](#510))
([c334a64](c334a64))
* **deps:** bump the github-actions group with 2 updates
([#163](#163))
([f25713e](f25713e))
* **deps:** bump the inference-dependencies group in /evaluation with 3
updates
([#279](#279))
([1d2d3dc](1d2d3dc))
* **deps:** bump the inference-dependencies group in /src/inference with
5 updates
([#508](#508))
([2852ffb](2852ffb))
* **deps:** bump the lerobot-inference-dependencies group in
/workflows/azureml with 4 updates
([#511](#511))
([b7c5773](b7c5773))
* **deps:** bump the npm_and_yarn group across 2 directories with 1
update
([#223](#223))
([6a261ab](6a261ab))
* **deps:** bump the training-dependencies group
([#429](#429))
([66e43f4](66e43f4))
* **deps:** bump tornado from 6.5.4 to 6.5.5 in the uv group across 1
directory
([#172](#172))
([d6caf29](d6caf29))
* **docs:** correct ms.date tooling and refresh stale documentation
([#349](#349))
([ccaa1e8](ccaa1e8))
* **infrastructure:** add Go module and golangci-lint config for e2e
tests
([#347](#347))
([e0e6bbf](e0e6bbf))
* **infrastructure:** add root .terraform-docs.yml configuration
([#312](#312))
([bb73bbb](bb73bbb))
* migrate references from Azure-Samples to
microsoft/physical-ai-toolchain
([f58f0ef](f58f0ef))
* **workflows:** update Dependabot, CodeQL, CODEOWNERS, and cspell for
dataviewer coverage
([#231](#231))
([6d8c2e8](6d8c2e8))


### 🔒 Security

* **deps:** bump mlflow from 3.5.0 to 3.8.0rc0 in /training/rl
([#297](#297))
([e9929df](e9929df))
* **deps:** bump the github-actions group across 1 directory with 4
updates
([#344](#344))
([6826929](6826929))
* **deps:** bump the inference-dependencies group in /evaluation with 2
updates
([#339](#339))
([6804630](6804630))
* **deps:** bump the npm_and_yarn group across 3 directories with 1
update
([#361](#361))
([6760857](6760857))
* **deps:** bump the training-dependencies group across 1 directory with
54 updates
([#286](#286))
([d9ae04f](d9ae04f))
* **deps:** bump the uv group across 3 directories with 1 update
([#360](#360))
([dfbda06](dfbda06))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

---------

Co-authored-by: physical-ai-toolchain-release[bot] <267194360+physical-ai-toolchain-release[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Bill Berry <wbery@microsoft.com>
WilliamBerryiii pushed a commit that referenced this pull request Apr 23, 2026
…lder restructure (#547)

## Description

Restores `pytest-data-pipeline` and `pytest-training` CI workflows by
fixing broken imports in two test modules. The failures originated from
PR #270's domain-driven architecture refactor, which removed the
`common/` package. PR validation missed the issue because the path
filter gates `pytest-data-pipeline` on `data-pipeline/capture/`
changes—subsequent PRs touching only `training/` skipped the job, but
`main.yml` runs it unconditionally.

**Key changes:**
- Relocated `test_cli_args.py` from `data-pipeline/capture/tests/` to
`training/tests/` (tests RSL-RL CLI, not data-pipeline)
- Fixed `test_config_models_hypothesis.py` import by switching to
`sys.path` + `models.config_models` pattern used by sibling test
- Added matching E402 ruff exemption for the hypothesis test

Fixes #546

## Type of Change

- [x] 🐛 Bug fix (non-breaking change fixing an issue)
- [ ] ✨ New feature (non-breaking change adding functionality)
- [ ] 💥 Breaking change (fix or feature causing existing functionality
to change)
- [ ] 📚 Documentation update
- [ ] 🏗️ Infrastructure change (Terraform/IaC)
- [ ] ♻️ Refactoring (no functional changes)

## Component(s) Affected

- [ ] `infrastructure/terraform/prerequisites/` - Azure subscription
setup
- [ ] `infrastructure/terraform/` - Terraform infrastructure
- [ ] `infrastructure/setup/` - OSMO control plane / Helm
- [ ] `workflows/` - Training and evaluation workflows
- [x] `training/` - Training pipelines and scripts
- [ ] `docs/` - Documentation

## Testing Performed

- [ ] Training scripts tested locally with Isaac Sim
- [x] Smoke tests passed (`smoke_test_azure.py`)
- [ ] Terraform `plan` reviewed (no unexpected changes)
- [ ] Terraform `apply` tested in dev environment
- [ ] OSMO workflow submitted successfully

## Documentation Impact

- [x] No documentation changes needed
- [ ] Documentation updated in this PR
- [ ] Documentation issue filed

## Bug Fix Checklist

*Complete this section for bug fix PRs. Skip for other contribution
types.*

- [x] Linked to issue being fixed
- [x] Regression test included, OR
- [ ] Justification for no regression test:

## Checklist

- [x] My code follows the [project conventions](copilot-instructions.md)
- [x] Commit messages follow [conventional commit
format](instructions/commit-message.instructions.md)
- [x] I have performed a self-review
- [x] Documentation impact assessed above
- [x] No new linting warnings introduced
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.

6 participants