3.1 KiB
3.1 KiB
1. Baseline And Workspace Metadata
- 1.1 Record the current non-integration test result and verify the existing root distribution builds before moving packages.
- Baseline:
uv run pytest -m "not integration"-> 314 passed, 6 deselected. - Baseline:
uv build-> root sdist and wheel built successfully.
- Baseline:
- 1.2 Add
[tool.uv.workspace]membership to the root project while retainingdevice-agent-runtimeas the root package. - 1.3 Create
packages/cloud-platform/pyproject.tomlfor thedevice-cloud-platformdistribution with explicit build and package-discovery metadata. - 1.4 Declare
device-agent-runtimeas a workspace source dependency ofdevice-cloud-platformwithout adding any reverse dependency.
2. Cloud Package Extraction
- 2.1 Move the existing
cloudpackage underpackages/cloud-platformwhile preserving everycloud.*import path. - 2.2 Remove
cloud*from the root distribution's setuptools discovery and update path-sensitive composition tests or tooling. - 2.3 Add packaging tests that identify the owning distribution for Runtime and cloud modules and reject reverse cloud dependencies.
3. Locking And Developer Commands
- 3.1 Generate and commit the shared
uv.lockfor all workspace members. - 3.2 Verify clean
uv sync --lockedand lock consistency checks from the workspace root.- Verified with a fresh temporary environment using
uv sync --locked --all-packagesfollowed byuv lock --check.
- Verified with a fresh temporary environment using
- 3.3 Verify member-scoped uv commands for both
device-agent-runtimeanddevice-cloud-platform. - 3.4 Update README and relevant setup documentation with workspace synchronization, test, build, and package-selection commands while leaving console npm commands unchanged.
4. Build And Compatibility Verification
- 4.1 Build wheels for every workspace member and inspect them to confirm the expected packages are included once.
- Runtime wheel contained 86 entries with no
cloud/package; cloud wheel contained 15 entries with one copy of each expectedcloud/cloud.sdkmodule and no Runtime-owned package.
- Runtime wheel contained 86 entries with no
- 4.2 Install the built wheels into an isolated environment and smoke-test imports for existing Runtime and
cloud.*modules.- Both wheels installed together in a fresh Python 3.14 environment; isolated imports resolved from that environment's
site-packages.
- Both wheels installed together in a fresh Python 3.14 environment; isolated imports resolved from that environment's
- 4.3 Run the complete non-integration Python test suite from the workspace root and fix packaging-only regressions without changing behavior.
- Result: 317 passed, 6 deselected, with one existing Starlette/httpx deprecation warning.
- 4.4 Verify the local REST and MCP factories still import and the console build remains independent of uv synchronization.
- Runtime REST/MCP factories imported under the Runtime member;
console/npm run buildcompleted independently.
- Runtime REST/MCP factories imported under the Runtime member;
5. OpenSpec And Project Records
- 5.1 Run OpenSpec validation for
uv-workspace-packagingand confirm all workspace-packaging scenarios are covered by automated checks. - 5.2 Update the project index and runtime/package documentation to record the new workspace layout and canonical commands.