generated from coulomb/repo-seed
Add workplan, update migration-gaps delivered table, and extend sand-boxer e2e.yml with health check for validate run self-smoke.
123 lines
2.7 KiB
Markdown
123 lines
2.7 KiB
Markdown
---
|
|
id: SAND-WP-0003
|
|
type: workplan
|
|
title: "wise-validator extraction from e2e-framework"
|
|
domain: infotech
|
|
repo: sand-boxer
|
|
status: finished
|
|
owner: codex
|
|
topic_slug: custodian
|
|
created: "2026-06-23"
|
|
updated: "2026-06-23"
|
|
---
|
|
|
|
# wise-validator extraction from e2e-framework
|
|
|
|
Extract the validation half of `the-custodian/e2e-framework/` into the
|
|
`wise-validator` repo. sand-boxer (SAND-WP-0002) already owns provision/teardown
|
|
via `ext.compose-ssh`; this workplan delivers health polling, test execution,
|
|
pass/fail reporting, and the `validate run` CLI.
|
|
|
|
**Charter:** `wise-validator/INTENT.md`
|
|
**Predecessor:** SAND-WP-0002 (finished)
|
|
**Follow-on:** SAND-WP-0004 (`the-custodian` `make e2e` shim)
|
|
|
|
## Scaffold wise-validator package
|
|
|
|
```task
|
|
id: SAND-WP-0003-T01
|
|
status: done
|
|
priority: high
|
|
```
|
|
|
|
Python 3.11+ package in `~/wise-validator`: `pyproject.toml`, `src/wisevalidator/`,
|
|
`tests/`, `Makefile` (`setup`, `install`, `check`, `test`, `lint`).
|
|
|
|
## Extract e2e.yml schema
|
|
|
|
```task
|
|
id: SAND-WP-0003-T02
|
|
status: done
|
|
priority: high
|
|
```
|
|
|
|
Port `e2e-framework/schema.py` as `wisevalidator/schema.py` — `E2EConfig`,
|
|
`HealthCheck`, v1 `e2e/e2e.yml` contract (CUST-WP-0028 compatible).
|
|
|
|
## sand-boxer client integration
|
|
|
|
```task
|
|
id: SAND-WP-0003-T03
|
|
status: done
|
|
priority: high
|
|
```
|
|
|
|
`wisevalidator/sandbox_client.py` — call `sandboxer create` / `destroy` (CLI v0),
|
|
parse `SandboxStatus` JSON, no embedded provisioners.
|
|
|
|
## Validation runner
|
|
|
|
```task
|
|
id: SAND-WP-0003-T04
|
|
status: done
|
|
priority: high
|
|
```
|
|
|
|
`wisevalidator/runner.py` — load contract, request sandbox, HTTP health-wait on
|
|
remote host, run `test_command`, apply `cleanup` policy (`always` / `on_success` /
|
|
`never`).
|
|
|
|
## State Hub reporter
|
|
|
|
```task
|
|
id: SAND-WP-0003-T05
|
|
status: done
|
|
priority: medium
|
|
```
|
|
|
|
Port `e2e-framework/reporter.py` — `event_type: e2e_result` progress events
|
|
(backward compatible with legacy framework).
|
|
|
|
## validate run CLI
|
|
|
|
```task
|
|
id: SAND-WP-0003-T06
|
|
status: done
|
|
priority: high
|
|
```
|
|
|
|
Typer CLI `validate run <repo>` with `--host`, `--keep`, `--workstream-id`,
|
|
`--no-report`. Entry point: `validate`.
|
|
|
|
## Tests
|
|
|
|
```task
|
|
id: SAND-WP-0003-T07
|
|
status: done
|
|
priority: high
|
|
```
|
|
|
|
Unit tests for schema, runner (mocked sandbox + SSH), reporter. Fixture repo with
|
|
minimal `e2e/e2e.yml`.
|
|
|
|
## Registry and docs
|
|
|
|
```task
|
|
id: SAND-WP-0003-T08
|
|
status: done
|
|
priority: medium
|
|
```
|
|
|
|
`registry/capabilities/validation.compose-e2e.md`, `docs/integrations/sand-boxer.md`,
|
|
`docs/runbooks/validate-compose-e2e.md`. Updated `sand-boxer/docs/migration-gaps.md`.
|
|
|
|
## Remote smoke (optional)
|
|
|
|
```task
|
|
id: SAND-WP-0003-T09
|
|
status: wait
|
|
priority: low
|
|
```
|
|
|
|
`scripts/smoke-validate-run.sh` against CoulombCore when `SANDBOXER_HOST` set;
|
|
operator verification (same host requirements as SAND-WP-0002-T10). |