Skip to content

docs(dev): replace the impossible venv recipe with the verified one - #1282

Merged
lusoris merged 3 commits into
masterfrom
docs/venv-recipe
Sep 5, 2026
Merged

lusoris merged 3 commits into
masterfrom
docs/venv-recipe

Conversation

@lusoris

@lusoris lusoris commented Sep 4, 2026 •

Copy link
Copy Markdown
Contributor

Summary

docs/development/languages.md told developers to run python3 -m venv .venv && pip install -e ".[dev]" at the repo root. That cannot work: the root pyproject.toml has no [build-system] and no [dev] extra — it is only Black/Ruff/pytest/mypy configuration for a package named vmaf-fork-tooling — so pip fails with Multiple top-level packages discovered in a flat-layout. Verified by running it in a throw-away venv (probe output in the commit trail).

The page now carries the recipe that was actually verified on 2026-09-04 (Python 3.14, golden gate 271 passed / 12 skipped / 0 failed afterwards): per-package editable installs — python/, mcp-server/vmaf-mcp, tools/vmaf-tune[fast], dev-llm, with ai[dev] as the heavy optional — cross-checked against the canonical list in dev/Containerfile:1037-1047, and with meson pinned to 1.12.0 because every meson build dir hard-codes the absolute path of the meson that configured it. It also gains a short "recovering a destroyed venv" note (symptom, cause, recipe) for anyone hit by the .venv symlink that #1280 removed.

The two other pip install -e . occurrences under docs/mcp/ are cd mcp-server/vmaf-mcp && pip install -e . — per-package, correct, left alone. Mentions inside Accepted ADRs and research digests are historical records and are not edited.

Also in this PR: one stale line in docs/development/rust.md

Found by the 2026-09-04 gap triage (#1270, verdict STALE, verified against master): the page said a higher-level vmafx crate "is planned for a future PR", but bindings/rust/vmafx has existed since ADR-0929 (PR #859). Same subsystem (docs/development/), one-line correction, so it rides here rather than as its own PR.

Type

  • docs — documentation only

Checklist

  • Commits follow Conventional Commits.
  • make format && make lint is green locally (markdownlint via pre-commit, no --fix).
  • Unit tests pass — n/a, docs only. The recipe itself was exercised: every install step returned 0 and the Netflix golden gate ran green on the resulting venv.
  • SIMD/GPU, twins, new C sources, breaking change, ADR — all n/a.

Bug-status hygiene (ADR-0165)

Netflix golden-data gate (ADR-0024)

  • I did not modify any assertAlmostEqual(...) score in the Netflix golden Python tests.

Deep-dive deliverables (ADR-0108)

  • Research digest — no digest needed: trivial. The old recipe fails on first run; the new one is the container's own install list.
  • Decision matrix — no alternatives: only-one-way fix. There is no root package to install; per-package installs are the only recipe the tree supports.
  • AGENTS.md invariant note — no rebase-sensitive invariants: docs/development/ is fork-added.
  • Reproducer / smoke-test command — below.
  • CHANGELOG fragment — changelog.d/fixed/venv-recipe-docs.md.
  • Rebase note — no rebase impact: docs/development/ is fork-added with no upstream counterpart (recorded in docs/rebase-notes.md).

Reproducer

mkdir -p probe && python3 -m venv probe/venv && probe/venv/bin/pip install -e ".[dev]"
# -> error: Multiple top-level packages discovered in a flat-layout: ['ai', 'dev', 'cmd', ...]

🤖 Generated with Claude Code

@lusoris lusoris added this to the 1.0.0 — First release milestone Sep 4, 2026
lusoris and others added 2 commits September 5, 2026 11:12
Replace the impossible repo-root pip install -e ".[dev]" in
docs/development/languages.md with the verified per-package editable
install recipe. The repository root pyproject.toml contains only tool
configuration for vmaf-fork-tooling and lacks build-system and root project
dependencies, causing flat-layout discovery failure.

Per-package editable installs are the model across independent
distributions, with dev/Containerfile:1037-1047 as the authoritative
reference. Pin meson==1.12.0 to prevent breaking ninja regeneration.
Add recovery instructions for virtualenvs broken by legacy tracked
.venv symlink loops (PR #1280).

docs/state.md: no bug row needed (docs-only).
docs/rebase-notes.md: no rebase impact: docs/development/ is fork-added.
bindings/rust/vmafx has existed since ADR-0929 (PR #859); the page still
said a higher-level crate was planned for a future PR. Found by the
2026-09-04 gap triage (#1270), verdict STALE, verified against master.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@lusoris
lusoris marked this pull request as ready for review September 5, 2026 09:13
…gate stops matching it

scripts/ci/check-no-tracked-venv.sh matches any basename starting with 'venv'
(the dot is optional in its pattern); the fragment name venv-recipe-docs.md tripped
the required Pre-Commit check on #1282. The gate itself is tightened in a separate PR.
lusoris added a commit that referenced this pull request Sep 5, 2026
…ly start with venv

The pattern in scripts/ci/check-no-tracked-venv.sh made the leading dot optional, so
changelog.d/fixed/venv-recipe-docs.md on #1282 was reported as a tracked virtualenv and the
required Pre-Commit check went red. Real virtualenv shapes (.venv*, venv, .virtualenv,
pyvenv.cfg, and any file inside such a directory) stay flagged; a test pins both sides.
docs/state.md: T-VENV-GATE-BASENAME-FALSE-POSITIVE-2026-09-05 (Recently closed).
lusoris added a commit that referenced this pull request Sep 5, 2026
…ly start with venv

The pattern in scripts/ci/check-no-tracked-venv.sh made the leading dot optional, so
changelog.d/fixed/venv-recipe-docs.md on #1282 was reported as a tracked virtualenv and the
required Pre-Commit check went red. Real virtualenv shapes (.venv*, venv, .virtualenv,
pyvenv.cfg, and any file inside such a directory) stay flagged; a test pins both sides.
docs/state.md: T-VENV-GATE-BASENAME-FALSE-POSITIVE-2026-09-05 (Recently closed).
@lusoris
lusoris merged commit c5a1c19 into master Sep 5, 2026
66 checks passed
@lusoris
lusoris deleted the docs/venv-recipe branch September 5, 2026 09:51
lusoris added a commit that referenced this pull request Sep 5, 2026
…ly start with venv

The pattern in scripts/ci/check-no-tracked-venv.sh made the leading dot optional, so
changelog.d/fixed/venv-recipe-docs.md on #1282 was reported as a tracked virtualenv and the
required Pre-Commit check went red. Real virtualenv shapes (.venv*, venv, .virtualenv,
pyvenv.cfg, and any file inside such a directory) stay flagged; a test pins both sides.
docs/state.md: T-VENV-GATE-BASENAME-FALSE-POSITIVE-2026-09-05 (Recently closed).
lusoris added a commit that referenced this pull request Sep 5, 2026
…ly start with venv

The pattern in scripts/ci/check-no-tracked-venv.sh made the leading dot optional, so
changelog.d/fixed/venv-recipe-docs.md on #1282 was reported as a tracked virtualenv and the
required Pre-Commit check went red. Real virtualenv shapes (.venv*, venv, .virtualenv,
pyvenv.cfg, and any file inside such a directory) stay flagged; a test pins both sides.
docs/state.md: T-VENV-GATE-BASENAME-FALSE-POSITIVE-2026-09-05 (Recently closed).
lusoris added a commit that referenced this pull request Sep 6, 2026
…ly start with venv

The pattern in scripts/ci/check-no-tracked-venv.sh made the leading dot optional, so
changelog.d/fixed/venv-recipe-docs.md on #1282 was reported as a tracked virtualenv and the
required Pre-Commit check went red. Real virtualenv shapes (.venv*, venv, .virtualenv,
pyvenv.cfg, and any file inside such a directory) stay flagged; a test pins both sides.
docs/state.md: T-VENV-GATE-BASENAME-FALSE-POSITIVE-2026-09-05 (Recently closed).
lusoris added a commit that referenced this pull request Sep 6, 2026
…ly start with venv (#1309)

The pattern in scripts/ci/check-no-tracked-venv.sh made the leading dot optional, so
changelog.d/fixed/venv-recipe-docs.md on #1282 was reported as a tracked virtualenv and the
required Pre-Commit check went red. Real virtualenv shapes (.venv*, venv, .virtualenv,
pyvenv.cfg, and any file inside such a directory) stay flagged; a test pins both sides.
docs/state.md: T-VENV-GATE-BASENAME-FALSE-POSITIVE-2026-09-05 (Recently closed).

Co-authored-by: Lusoris <lusoris@pm.me>
@lusoris lusoris added the type:docs Documentation updates label Sep 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type:docs Documentation updates

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant