feat(repo): migrate to domain-driven architecture#270
Conversation
- 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
Dependency Review SummaryThe 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. |
- 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 Report✅ All modified and coverable lines are covered by tests.
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
*This pull request uses carry forward flags. Click here to find out more. 🚀 New features to boost your workflow:
|
- modify ruff check and format commands to use current directory - adjust error message for local execution guidance 🔧 - Generated by Copilot
nguyena2
left a comment
There was a problem hiding this comment.
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)
🔒 - Generated by Copilot
… date 🔄 - Generated by Copilot
…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
🔄 - 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
…age check workflow
… check workflow 🔧 - Generated by Copilot
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>
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>
🤖 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>
…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
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 centralizedsrc/directory with purpose-driven domain directories, establishing a consistent structure across all eight lifecycle domains.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/, andsetup/. 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 acrossevaluation/sil/andfleet-deployment/inference/src/common/→ dissolved; symbols now imported fromtraining.rlscripts/→shared/ci/(CI/linting) andshared/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.shto shared/lib/common.sh as the canonical location andterraform-outputs.shto shared/lib/terraform-outputs.sh. Created symlinks atscripts/lib/terraform-outputs.sh,infrastructure/setup/lib/common.sh, and within each domain'sscripts/lib/directory for backward compatibility. CI/linting scripts and Pester tests relocated fromscripts/toshared/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_argstofrom 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 toevaluation/sil/, metrics and plotting utilities toevaluation/metrics/, and hardware-in-the-loop scaffolded atevaluation/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:
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/anddocs/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
Component(s) Affected
infrastructure/terraform/prerequisites/- Azure subscription setupinfrastructure/terraform/- Terraform infrastructureinfrastructure/setup/- OSMO control plane / Helmworkflows/- Training and evaluation workflowstraining/- Training pipelines and scriptsdocs/- DocumentationTesting Performed
planreviewed (no unexpected changes)applytested in dev environmentsmoke_test_azure.py)Documentation Impact
Bug Fix Checklist
Complete this section for bug fix PRs. Skip for other contribution types.
Checklist