Skip to content

ADR-0026: Relocate Python harness workspace under python/vmaf/

  • Status: Accepted
  • Date: 2026-04-17
  • Deciders: Lusoris, Claude (Anthropic)
  • Tags: workspace, python, docs

Context

Upstream Netflix/vmaf puts the classic Python training/eval harness scratch tree (dataset/, model/, encode/, output/, workdir/, result_store_dir/, checkpoints_dir/, model_param/) at ROOT/workspace/. That clutters the repo root with content that only the Python harness consumes. User: "move/integrate that better in our new rules/structure/philosophy".

Decision

We will move the harness workspace to python/vmaf/workspace/ (next to the only code that uses it) and resolve paths via a WORKSPACE constant in config.py, overridable with the VMAF_WORKSPACE env var. Documented in docs/architecture/workspace.md.

Alternatives considered

Option Pros Cons Why not chosen
Leave at repo root + document Zero code churn Root stays noisy despite other cleanup (ADRs 29–34) Too noisy
Move to ai/workspace/ One ai/ tree Conflates classic SVM harness with fork tiny-AI (different frameworks, different ownership) Rejected
Move to python/vmaf/workspace/ (chosen) Co-locates scratch with its only consumer; env override retained Requires updating every path reference Rationale: matches the repo-root cleanup family
Delete and auto-create Minimal tree Loses .gitignore subdir contract; lowers discoverability Rejected

Rationale note: option (c) chosen; co-locates scratch with the only code that uses it and keeps tiny-AI strictly under ai/. The VMAF_WORKSPACE env override preserves pointing at a big-disk mount.

Consequences

  • Positive: repo root reserved for external-facing surfaces; scratch lives with its consumer.
  • Negative: every doc/reference to workspace/ had to update.
  • Neutral / follow-ups: documented in docs/architecture/workspace.md.

References

  • Source: req (user: "move/integrate that better in our new rules/structure/philosophy")
  • Related ADRs: ADR-0029, ADR-0030, ADR-0031, ADR-0032, ADR-0033, ADR-0034