Skip to content

MÓDULO DoYour.Art

Operator-crafted custom tests — Scapy + Go embed + PCAP replay.

Function

3-mode Art Studio for crafting custom traffic patterns and replaying them through the DUT. Designed for operator craftsmanship — the brand pun "Do Your Art" is literal.

Status

Phase Scope Status
Scaffold (v3.7.0, PR #678) Pod, K8s manifests, gVisor RuntimeClass, TypeScript schemas
Phase A (PRs #992–#998) Operator-usable surface — DY-A1 through DY-A7
DY-A4b (post-Phase A) Durable MinIO bucket-and-quota, BPF / MAC / IP rewrite
DY-A6b (post-Phase A) Postgres-backed escrow + MGMT-plane UTXO vault
Phase B (v5.1) Live metrics streaming + report PDF + Monaco LSP
Phase C (v5.5) Community gallery (publish / fork / like / comment)

See ADR-0081 for the locked decisions, sub-PR breakdown, and the answers to the 5 open questions from the discuss memo.

Identity

Element Value
Plane DATA
Internal code doyour-studio
K8s namespace web-agents (both pod + Go builder sidecar)
OOBI slot .81
Network VLAN 2901, subnet 172.20.0.0/16
Sandbox gVisor (runsc) — mandatory
Tier gate Free 1 piece / 5 min · Indie 10 / 30 min · Team ∞ / 2 hr · Enterprise ∞ / 24 hr

3 modes (all operator-usable)

Mode Route Backend
Scapy (Python) /art-studio POST /exec-python on the Scapy pod (Python 3.12 + Scapy 2.7.0, python3 -I isolated mode)
Go embed /art-studio/go-embed POST /build-and-run on the doyour-art-go-builder sidecar pod (Go 1.26.3 + gopacket pre-warmed)
PCAP replay /art-studio/pcap-replay Dashboard POST /api/doyour/pcaps (upload), pod POST /replay-pcap (tcpreplay)

All three modes share the same UI, same Monaco editor, same Save & run flow, same status pill, same escrow row.

Operator controls

  • /art-studio — Art Studio UI (default tab = Scapy)
  • /art-studio/go-embed — Go embed tab
  • /art-studio/pcap-replay — PCAP replay tab (upload + replay)
  • Token escrow — every run holds tokens upfront; settled on terminal status (refund / deducted / overage)
  • Tier admission — free-tier rolling window enforced via 429 Too Many Requests + Retry-After
  • Live log tail — last 64 lines surfaced in the run panel

Pod-side configuration

Env var Default Effect
DOYOUR_ART_POD_URL (unset → simulator) Base URL for the Scapy/PCAP pod (e.g. http://doyour-art:8081)
DOYOUR_ART_GO_BUILDER_URL (unset → simulator) Base URL for the Go builder pod (http://doyour-art-go-builder:8082)
DOYOUR_ART_POD_TIMEOUT_MS 15000 Scapy exec HTTP timeout
DOYOUR_ART_GO_BUILDER_TIMEOUT_MS 360000 Build+run HTTP timeout (6 min)
DOYOUR_ART_PCAP_TIMEOUT_MS 360000 PCAP replay HTTP timeout

Without any env var the dashboard uses an in-memory deterministic simulator — useful for local dev + e2e tests without an attached cluster.

Key telemetry (future)

  • doyour_pieces_run_total{mode,tier,status} — usage by mode / tier / outcome
  • doyour_token_balance_seconds{operator} — quota remaining
  • doyour_escrow_settle_total{outcome} — refund / deducted / overage counts
  • doyour_gallery_pieces_total — community gallery size (Phase C)

Notes

DOM-aware: production mode hard-blocks DoYour unless DDPB unlock + audit reason. Tier B per ZTP-prem tier policy (garble-obfuscated CI). Audit records are summary-only — no source body, no per-packet (per the locked decision in ADR-0081 §question 4).