Files
sand-boxer/workplans/SAND-WP-0003-wise-validator-extraction.md
tegwick d6afe0e27b Sync State Hub workstream IDs for SAND-WP-0003 and SAND-WP-0004
fix-consistency writeback: state_hub_workstream_id and task IDs.
2026-06-23 21:41:24 +02:00

3.3 KiB

id, type, title, domain, repo, status, owner, topic_slug, created, updated, state_hub_workstream_id
id type title domain repo status owner topic_slug created updated state_hub_workstream_id
SAND-WP-0003 workplan wise-validator extraction from e2e-framework infotech sand-boxer finished codex custodian 2026-06-23 2026-06-23 36ea4fec-52e2-45b6-a9dc-f39d9a7a88c0

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

id: SAND-WP-0003-T01
status: done
priority: high
state_hub_task_id: "d3134479-1989-418d-845d-4785f602ee00"

Python 3.11+ package in ~/wise-validator: pyproject.toml, src/wisevalidator/, tests/, Makefile (setup, install, check, test, lint).

Extract e2e.yml schema

id: SAND-WP-0003-T02
status: done
priority: high
state_hub_task_id: "506cdb09-6ee6-449e-a33e-e08a48615c97"

Port e2e-framework/schema.py as wisevalidator/schema.pyE2EConfig, HealthCheck, v1 e2e/e2e.yml contract (CUST-WP-0028 compatible).

sand-boxer client integration

id: SAND-WP-0003-T03
status: done
priority: high
state_hub_task_id: "45c3c408-207c-4472-8853-1203e05ebe2a"

wisevalidator/sandbox_client.py — call sandboxer create / destroy (CLI v0), parse SandboxStatus JSON, no embedded provisioners.

Validation runner

id: SAND-WP-0003-T04
status: done
priority: high
state_hub_task_id: "b2bde5b1-baab-4939-944b-002251de3f2b"

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

id: SAND-WP-0003-T05
status: done
priority: medium
state_hub_task_id: "35f5492e-8b0b-4be0-8c9c-2894e7a06056"

Port e2e-framework/reporter.pyevent_type: e2e_result progress events (backward compatible with legacy framework).

validate run CLI

id: SAND-WP-0003-T06
status: done
priority: high
state_hub_task_id: "8321b5aa-9d7d-4ea3-89d2-c63a2dd15503"

Typer CLI validate run <repo> with --host, --keep, --workstream-id, --no-report. Entry point: validate.

Tests

id: SAND-WP-0003-T07
status: done
priority: high
state_hub_task_id: "0df0c94f-5461-41dd-87ff-c0676a93b45c"

Unit tests for schema, runner (mocked sandbox + SSH), reporter. Fixture repo with minimal e2e/e2e.yml.

Registry and docs

id: SAND-WP-0003-T08
status: done
priority: medium
state_hub_task_id: "bad129e3-2e24-4df1-91d8-2c61d2421382"

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)

id: SAND-WP-0003-T09
status: wait
priority: low
state_hub_task_id: "f2e849fa-3cc4-4d04-9a88-95d1443b0c73"

scripts/smoke-validate-run.sh against CoulombCore when SANDBOXER_HOST set; operator verification (same host requirements as SAND-WP-0002-T10).