feat(simulation): establish polygon S0 qualification

This commit is contained in:
DCCONSTRUCTIONS
2026-07-24 15:29:08 +03:00
parent 7fba39a629
commit 81761067e9
11 changed files with 2318 additions and 0 deletions
+112
View File
@@ -0,0 +1,112 @@
# SIM S0 AI worker runbook
This runbook is for MISSIONCOR-40. It does not authorize system installation,
real vehicle control or a `GO` verdict by itself.
## Safety and placement
- Target: reviewed Windows 11 worker with WSL2 Ubuntu 24.04.
- All mutable bytes must be under `D:\NDC_MISSIONCORE`.
- Do not place a WSL distribution, Docker VHD, source, build, cache, log, bag,
ULog, Gazebo artifact or dataset on C.
- Do not expose S0 services beyond loopback.
- Do not download full external datasets.
- Keep `actuator_authority=false`.
## Repository preflight
From the repository-local Python 3.12 environment:
```bash
uv sync --frozen --group dev
uv run missioncore-sim s0 doctor --json
```
Before target evidence exists, the expected verdict is `INCOMPLETE`.
## Required target inventory
Record a redacted artifact for each of:
1. Windows release, WSL version, Ubuntu version and architecture.
2. GPU/driver, CPU, RAM and VRAM.
3. Physical locations of the WSL distribution and Docker data/VHD.
4. D total/free bytes before installation.
5. Existing Docker images, WSL distributions and simulation-related processes.
6. Existing listeners and the candidate port registry.
7. Existing Frigate/Ollama/Triton resource use and whether S0 is coexistence or
exclusive-profile testing.
Do not record credentials, tokens or private network secrets.
## Candidate stack
Use `simulation/s0/qualification-profile.yaml` as the input. Resolve and record:
- exact ROS 2 Jazzy package versions;
- exact Gazebo Harmonic package versions;
- PX4 v1.17.0 commit;
- matching `px4_msgs` commit;
- Micro XRCE-DDS Agent commit/version;
- Nav2 Jazzy commit/package versions;
- PX4 Gazebo model commit;
- licenses and image digests where containers are used.
Change every component to `accepted` only after target build/runtime evidence
exists. Updating a pin changes the profile SHA-256 and invalidates evidence for
the prior generation.
## Runtime cases
The S0 factual cases are:
1. Launch one stock rover headless.
2. Observe PX4 health and ROS 2 telemetry.
3. Prove Gazebo `/clock` is authoritative.
4. Prove pause freezes simulation time.
5. Prove one single-step advances the declared amount.
6. Prove 1× and 2× speed behavior and measure real-time factor.
7. Stop through the intended lifecycle.
8. Prove no owned process remains.
9. Repeat from a clean start.
QGroundControl is diagnostic only and cannot become the Mission Core command
owner.
## Evidence manifest
Create a private/redacted evidence directory outside normal Git. Its manifest:
```yaml
schema_version: missioncore.simulation-s0-evidence/v1
profile_sha256: <sha256 of qualification-profile.yaml>
checks:
- id: worker-inventory
status: pass
artifact: worker-inventory.redacted.json
sha256: <artifact sha256>
note: Redacted host and resource inventory.
```
The manifest must contain exactly all IDs from `required_evidence`. Artifact
paths are relative, confined regular files. The doctor rejects missing,
additional, changed or cross-generation evidence.
Validate without writing:
```bash
uv run missioncore-sim s0 doctor \
--profile simulation/s0/qualification-profile.yaml \
--evidence /path/to/redacted/evidence.yaml \
--json
```
## Verdict rules
- `GO`: target host matches, every pin is accepted, D-only and disk thresholds
pass, required tools exist and all digest-bound evidence validates.
- `INCOMPLETE`: work remains or the doctor is running on a development host.
- `BLOCKED`: contract, storage, tools or evidence fail validation.
Publish the factual result to MISSIONCOR-40 with exact repository commit,
profile SHA-256, files touched and validation performed.