# Test ledger

Branch: midleman/python-interpreters-install-uv-from-the-create-v - Commit: f0e1067034

## Environment
- Positron 2026.10.0 build 0, dev build of f0e1067034 (Code - OSS 1.134.0), on Ubuntu 24.04.4 LTS (Linux x86_64).
- Python 3.12 at `/usr/bin/python3.12` as the selected interpreter, conda Python 3.14 on PATH, uv 0.12.23 (x86_64-unknown-linux-gnu) installed by the run's own uv installs (the machine's uv was hidden for the run).
- Positron desktop launched with uv off PATH (`/root/.venv/bin` and `/root/.local/bin` removed) and `~/.local/bin/uv` moved aside, so uv reads as absent. Running as root, in the CI container.

## Logs
- logs/46351-renderer.log | Renderer process of the instance the run launched | 173 errors, none tied to a check (language model provider activation, extension manifest warnings)
- logs/46351-exthost.log | Extension host of the instance the run launched | 18 errors, none tied to a check (positron-connections deactivation, GitHubLoginFailed)
- logs/46351-python-ext.log | Python extension output, copied from logs/all/46351 | 5 errors: 1 is the blocked uv download the run caused on purpose, 4 "Unable to find workspace for given file"
- logs/46351-code.log | Main process of the instance the run launched | no errors
- logs/46351-console.log | Browser console of the instance the run launched | 11 errors, none tied to a check
- logs/46351-python-console.log | Python console of the instance the run launched | no errors
- logs/46351-python-kernel.log | Python kernel of the instance the run launched | no errors
- logs/all/46351/ | full log tree of the instance the run launched | see above
- logs/36535-renderer.log | Renderer process of the pre-launched instance | 7 errors, none tied to a check
- logs/36535-exthost.log | Extension host of the pre-launched instance | 1 error, not tied to a check
- logs/36535-code.log | Main process of the pre-launched instance | no errors
- logs/36535-console.log | Browser console of the pre-launched instance | 10 errors, none tied to a check
- logs/all/36535/ | full log tree of the pre-launched instance | see above

## Files
- files/ws-reqs/requirements.txt | requirements file pinning `six==1.16.0`, copied into each of the three workspaces | S01, S02, S03, S04, S05, S08, S09, S12

---

## S01 - Declining the uv install from the create-venv notification
Status: pass
Result: The notification offers uv, Yes asks to install uv, and Cancel ends quietly with no .venv.

Preconditions:
- uv absent | | uv not on PATH and not in `~/.local/bin`
- ws-reqs workspace | | A workspace with `requirements.txt` (files/ws-reqs/requirements.txt) and no `.venv`, opened at launch with a global Python selected

Steps:
1. Run `Notifications: Show Notifications`.
2. VERIFY a Python notification reads "This project has requirements.txt but no virtual environment. Use uv to create a .venv and install these requirements?" with Yes, Not now and Don't show again -> PASS
   Evidence: shots/S01-01.png
3. Click Yes on the requirements.txt notification.
4. VERIFY a dialog asks "Would you like to install uv?" with Learn more, Cancel and Install uv -> PASS
   Evidence: shots/S01-02.png
5. Click Cancel in the install uv dialog.
6. VERIFY no error notification appears and the workspace has no `.venv` -> PASS
   Evidence: shots/S01-03.png

## S02 - Installing uv from the create-venv notification creates the venv
Status: pass
Result: Install uv installed uv, then created `.venv` with six 1.16.0 and started a console on it.
Issue: #16192 fix held

Preconditions:
- uv absent | | uv not on PATH and not in `~/.local/bin`
- ws-reqs workspace | S01 | A workspace with `requirements.txt` (files/ws-reqs/requirements.txt) and no `.venv`, opened at launch with a global Python selected

Steps:
1. Run `Developer: Restart Extension Host`.
2. Click Yes on the requirements.txt notification.
3. Click Install uv in the install uv dialog.
4. VERIFY a notification says the environment `/tmp/ws-reqs/.venv/bin/python` is selected -> PASS
   Evidence: shots/S02-01.png
5. VERIFY `/tmp/ws-reqs/.venv` imports six 1.16.0 and a Python console runs on it -> PASS
   Evidence: shots/S02-02.png, logs/S02-venv-check.txt

## S03 - Create-venv notification with uv missing and installing uv turned off
Status: fail - Finding 1
Result: Fails 1/1

Preconditions:
- uv absent | | uv not on PATH and not in `~/.local/bin`
- uv install off | | `"python.allowUvPythonInstall": false` in user settings
- ws-reqs2 workspace | | A workspace with `requirements.txt` (files/ws-reqs/requirements.txt) and no `.venv`, with a global Python selected

Steps:
1. Run `File: Open Folder...` and open the ws-reqs2 workspace.
2. Run `Notifications: Show Notifications`.
3. VERIFY the Python notification offers venv, not uv: "Use venv to create a .venv and install these requirements?" -> PASS
   Evidence: shots/S03-01.png
4. Click Yes on the requirements.txt notification.
5. VERIFY the environment type picker that opens lists Venv and Conda but no uv row -> FAIL - Finding 1
   Observed: The picker lists Venv, Conda and uv ("Use uv to create the environment and install Python if needed").
   Evidence: shots/S03-02.png
   Log: none found in logs/46351-python-ext.log, logs/46351-renderer.log
6. Pick uv in the environment type picker.
7. VERIFY an error notification says "uv is not installed, and installing it is turned off by the python.allowUvPythonInstall setting." and no `.venv` is made -> PASS
   Evidence: shots/S03-03.png

## S04 - Python: Create Environment with uv missing and installing uv turned off
Status: fail - Finding 1
Result: Fails 2/2

Preconditions:
- uv absent | | uv not on PATH and not in `~/.local/bin`
- uv install off | | `"python.allowUvPythonInstall": false` in user settings
- ws-reqs2 workspace | S03 | A workspace with `requirements.txt` (files/ws-reqs/requirements.txt) and no `.venv`

Steps:
1. Run `Python: Create Environment...`.
2. VERIFY the environment type picker lists Venv and Conda but no uv row -> FAIL - Finding 1
   Observed: The picker lists uv as its third row, beside Venv and Conda.
   Evidence: shots/S04-01.png
   Log: logs/46351-python-ext.log:992 | Extension host | 1x (after uv was picked)
     2026-10-07 20:50:46.242 [info] Not installing uv: python.allowUvPythonInstall is off
3. Pick uv in the environment type picker.
4. VERIFY an error notification names the python.allowUvPythonInstall setting, with Show logs -> PASS
   Evidence: shots/S04-02.png

## S05 - Python: Create Environment with uv picked installs uv first
Status: pass
Result: Picking uv asked to install uv, installed it, asked for a Python version and created `.venv`.

Preconditions:
- uv absent | | uv not on PATH and not in `~/.local/bin`
- ws-reqs2 workspace | S03 | A workspace with `requirements.txt` (files/ws-reqs/requirements.txt) and no `.venv`

Steps:
1. Set `python.allowUvPythonInstall` to true in user settings.
2. Run `Python: Create Environment...`.
3. Pick uv in the environment type picker.
4. VERIFY a dialog asks "Would you like to install uv?" with Install uv -> PASS
   Evidence: shots/S05-01.png
5. Click Install uv in the install uv dialog.
6. VERIFY a Python version picker opens, listing 3.14 to 3.9 -> PASS
   Evidence: shots/S05-02.png
7. Press Enter in the Python version picker to accept Python 3.14.
8. VERIFY `/tmp/ws-reqs2/.venv` is created and selected -> PASS
   Evidence: shots/S05-03.png

## S06 - New Folder flow uv callout follows the setting live
Status: pass
Result: The Install uv button hides when the setting goes off, returns when it goes on, and installs uv.

Preconditions:
- uv absent | | uv not on PATH and not in `~/.local/bin`
- uv install on | | `"python.allowUvPythonInstall": true` in user settings

Steps:
1. Run `Developer: Restart Extension Host`.
2. Run `Workspaces: New Folder from Template...`.
3. Click the Python Project tile.
4. Click Next.
5. Click Next.
6. Click the Environment Creation dropdown.
7. Click uv in the dropdown.
8. VERIFY a "uv is not installed" callout shows an Install uv button -> PASS
   Evidence: shots/S06-01.png
9. Set `python.allowUvPythonInstall` to false in user settings.
10. VERIFY the callout reads "Installing uv is turned off by the python.allowUvPythonInstall setting." with no Install uv button -> PASS
    Evidence: shots/S06-02.png
11. Set `python.allowUvPythonInstall` to true in user settings.
12. VERIFY the Install uv button is back -> PASS
    Evidence: shots/S06-03.png
13. Click Install uv.
14. VERIFY the callout is gone and the Python Version dropdown shows Python 3.14 uv -> PASS
    Evidence: shots/S06-04.png

## S07 - New Folder flow Python Version prompt when installing uv is turned off
Status: fail - Finding 2
Result: Fails 2/2

Preconditions:
- uv absent | | uv not on PATH and not in `~/.local/bin`
- uv install off | | `"python.allowUvPythonInstall": false` in user settings

Steps:
1. Run `Developer: Reload Window`.
2. Run `Workspaces: New Folder from Template...`.
3. Click the Python Project tile.
4. Click Next.
5. Type `my-python-project2` in the Folder Name field.
6. Click Next.
7. Click the Environment Creation dropdown.
8. Click uv in the dropdown.
9. VERIFY the Python Version dropdown does not tell the user to install uv -> FAIL - Finding 2
   Observed: The disabled Python Version dropdown reads "Install uv to select a Python version" under a callout saying installing uv is turned off.
   Evidence: shots/S07-01.png
   Log: none found in logs/46351-renderer.log, logs/46351-console.log

## S08 - uv install fails from the create-venv notification
Status: pass
Result: With the uv installer host blocked, "Installing uv" showed, then "Failed to install uv." with Show logs, and no `.venv` was made.

Preconditions:
- uv absent | | uv not on PATH and not in `~/.local/bin`
- uv install on | | `"python.allowUvPythonInstall": true` in user settings
- installer host blocked | | The run mapped uv's installer host (astral dot sh) to 0.0.0.0 in /etc/hosts
- ws-reqs3 workspace | | A workspace with `requirements.txt` (files/ws-reqs/requirements.txt) and no `.venv`, with a global Python selected

Steps:
1. Run `File: Open Folder...` and open the ws-reqs3 workspace.
2. Run `Notifications: Show Notifications`.
3. Click Yes on the requirements.txt notification.
4. Click Install uv in the install uv dialog.
5. VERIFY an "Installing uv" notification is replaced by an error "Failed to install uv." with Show logs, and no `.venv` exists -> PASS
   Evidence: shots/S08-01.png, logs/46351-python-ext.log

## S09 - Installing uv again after the fault is removed
Status: pass
Result: Create Environment with uv installed uv and created `.venv` with six 1.16.0 once the installer host was reachable.

Preconditions:
- uv absent | | uv not on PATH and not in `~/.local/bin`
- ws-reqs3 workspace | S08 | A workspace with `requirements.txt` (files/ws-reqs/requirements.txt) and no `.venv`
- installer host reachable | S08 | The run removed the `/etc/hosts` line it added

Steps:
1. Run `Python: Create Environment...`.
2. Pick uv in the environment type picker.
3. Click Install uv in the install uv dialog.
4. VERIFY a Python version picker opens -> PASS
   Evidence: shots/S09-01.png
5. Press Enter in the Python version picker to accept Python 3.14.
6. VERIFY `/tmp/ws-reqs3/.venv` is selected and imports six 1.16.0 -> PASS
   Evidence: shots/S09-02.png, logs/S09-venv-check.txt

## S10 - Keyboard shortcuts after closing the New Folder dialog
Status: fail - Finding 3
Result: Fails 4/4

Steps:
1. Run `Workspaces: New Folder from Template...`.
2. Click Close in the Folder Template dialog.
3. VERIFY the Command Palette opens from its keyboard shortcut -> FAIL - Finding 3
   Observed: The Command Palette does not open.
   Evidence: shots/S10-01.png
   Log: none found in logs/46351-renderer.log, logs/46351-console.log

## S11 - Keyboard shortcuts after closing the New Folder dialog, pre-launched instance
Status: fail - Finding 3
Result: Fails 1/1

Steps:
1. Run `Workspaces: New Folder from Template...`.
2. Click Close in the Folder Template dialog.
3. VERIFY the Command Palette opens from its keyboard shortcut -> FAIL - Finding 3
   Observed: The Command Palette does not open.
   Evidence: shots/S11-01.png
   Log: none found in logs/36535-renderer.log, logs/36535-console.log
4. Click `README.md` in the Explorer.
5. VERIFY the Command Palette opens from its keyboard shortcut -> PASS
   Evidence: shots/S11-02.png

## S12 - Python: Create Environment with installing uv turned off, second try
Status: fail - Finding 1
Result: Fails 1/1

Preconditions:
- uv absent | | uv not on PATH and not in `~/.local/bin`
- uv install off | | `"python.allowUvPythonInstall": false` in user settings
- ws-reqs3 workspace | S09 | A workspace with `requirements.txt` (files/ws-reqs/requirements.txt)

Steps:
1. Run `Developer: Reload Window`.
2. Run `Python: Create Environment...`.
3. VERIFY the environment type picker lists no uv row -> FAIL - Finding 1
   Observed: The picker lists uv as its third row.
   Evidence: shots/S12-01.png
   Log: logs/46351-python-ext.log:2759 | Extension host | 1x (after uv was picked)
     2026-10-07 21:02:06.116 [info] Not installing uv: python.allowUvPythonInstall is off
4. Pick uv in the environment type picker.
5. VERIFY the error notification names the python.allowUvPythonInstall setting -> PASS
   Evidence: shots/S12-02.png

---

## Noticed
- O01 - The install uv dialog reads "uv is a tool used for downloading Python" when it is raised to create a venv from requirements.txt - seen in S01 and S05, wording only, not checked against a spec
- O02 - Closing the New Folder dialog with Escape also left the Command Palette shortcut dead - seen once at 20:59:46 in the action log, no screenshot taken
- O03 - With installing uv off, the notification says "Use venv", but Yes opens a picker asking for Venv, Conda or uv - seen in S03, likely predates this change

## Not run
- N01 - Interpreter-select modal (create venv when picking a global Python for a console) with uv missing - its ladder skips uv unless uv is installed, so the change does not reach it
- N02 - uv.lock "uv sync" notification with uv missing - out of time
- N03 - Windows PowerShell installer path of the uv install - environment: Linux container only
- N04 - Positron Web, where the New Folder flow callout also renders - environment: no web license
