# Test ledger

Branch: merge/1.138.0 - Commit: bb1458311a

## Environment
- Positron 2026.10.0 build 0, dev build of bb1458311a (Code - OSS 1.138.0), on Ubuntu 24.04.4 LTS (Linux x86_64).
- Python 3.10.12 (uv venv at `/root/.venv`) with pandas 2.3.3 and matplotlib 3.10.9.
- Pre-launched by CI with `--disable-workspace-trust --skip-welcome --log debug`, workspace `/tmp/exploratory-workspace` (holding only `README.md` at launch), window 1600x1100, seeded profile with `window.dialogStyle: custom`.

## Logs
- logs/42213-renderer.log | Renderer process | 57 errors, none in Finding 1: 12 for three internal data-explorer libraries without `engines` (dev build), 25 `[LM] Failed to activate provider extension` at reloads, `Could not find a notebook editor for session` and `Cannot show Console` for the notebook session, and extension host MetadataLookupWarning lines
- logs/42213-exthost.log | Extension host | 6 errors, all `TypeError: Cannot read properties of undefined (reading 'subscriptions')` in positron-connections deactivate at each reload
- logs/42213-code.log | Main process launch output | no errors
- logs/42213-console.log | Renderer process, browser console | 4 errors, all MetadataLookupWarning from the extension host
- logs/42213-python-kernel.log | Python kernel | no errors
- logs/all/42213/ | full log tree of the instance | as above

## Files
- files/explore_df.py | Python script defining a small data frame and a plot, copied into the workspace | S01
- files/outputs_nb.ipynb | four-cell Python notebook with a data frame, a matplotlib plot, a plotly chart and tall HTML, made by the run | S03
- files/vscode_nb.ipynb | copy of outputs_nb.ipynb, opened with the Legacy Jupyter Notebook editor | S08

---

## S01 - Data Explorer code action in the Refactor action list
Status: pass
Result: The Refactor list offers Open 'df' in Data Explorer, and choosing it opens a Data: df tab with 3 rows and 2 columns.

Preconditions:
- `explore_df.py` in workspace | | `files/explore_df.py` copied to the workspace root

Steps:
1. Run `Interpreter: Start New Console Session` and pick `Python 3.10.12 (uv: root)`.
2. Run `import pandas as pd; df = pd.DataFrame({"a": [1, 2, 3], "b": ["x", "y", "z"]})` in the Python console.
3. Open `explore_df.py`.
4. Put the cursor at line 5, column 1 (`df`).
5. Run `Refactor...`.
6. VERIFY the action list shows an `Open 'df' in Data Explorer` option -> PASS
   Evidence: shots/S01-01.png
7. Click `Open 'df' in Data Explorer`.
8. VERIFY a `Data: df` editor opens showing 3 rows and 2 columns, a and b -> PASS
   Evidence: shots/S01-02.png

## S02 - Interactive plot stays on its pane across Positron layouts
Status: pass
Result: The plotly webview overlay matched the Plots pane in Maximized Auxiliary Bar and Side-By-Side layouts, and after hiding and showing the side bar.

Preconditions:
- Python console open | S01 | `Python 3.10.12 (uv: root)` started with `Interpreter: Start New Console Session`

Steps:
1. Run `import matplotlib.pyplot as plt; plt.plot([1, 2, 3], [4, 1, 9]); plt.show()` in the Python console.
2. Run `import plotly.express as px; px.bar(x=["a", "b", "c"], y=[3, 1, 2]).show()` in the Python console.
3. Run `View: Side-By-Side Layout`.
4. Run `View: Stacked Layout`.
5. Run `View: Maximized Auxiliary Bar Layout`.
6. VERIFY the plotly webview overlay has the same box as the plot area of the Plots pane -> PASS
   Evidence: shots/S02-01.png, actions.log:29
7. Run `View: Side-By-Side Layout`.
8. Click the `Plots` section header in the secondary side bar.
9. VERIFY the plotly webview overlay has the same box as the plot area, 961,343 at 639x619 -> PASS
   Evidence: shots/S02-02.png, actions.log:35
10. Run `View: Toggle Secondary Side Bar Visibility`.
11. VERIFY the plotly webview overlay is hidden -> PASS
    Evidence: shots/S02-03.png, actions.log:38
12. Run `View: Toggle Secondary Side Bar Visibility`.
13. VERIFY the plotly webview overlay is back on the plot area, 961,343 at 639x619 -> PASS
    Evidence: shots/S02-04.png, actions.log:41

## S03 - Positron notebook renders data, image, plotly and HTML outputs
Status: pass
Result: All four cells ran and showed a data grid, a matplotlib image, a plotly chart and a tall HTML block, and the plotly output scrolled with its cell.

Preconditions:
- Python console open | S01 | `Python 3.10.12 (uv: root)` started with `Interpreter: Start New Console Session`
- `outputs_nb.ipynb` in workspace | | `files/outputs_nb.ipynb` copied to the workspace root, never opened before

Steps:
1. Open `outputs_nb.ipynb`.
2. Click Run Cell on cell 1.
3. Click Run Cell on cell 2.
4. Click Run Cell on cell 3.
5. Click Run Cell on cell 4.
6. VERIFY cell 1 shows a df2 data grid of 5 rows, cell 2 one image, and cells 3 and 4 a plotly chart and the `tall html` block -> PASS
   Evidence: shots/S03-01.png
7. Scroll the notebook up 300 pixels with the mouse wheel.
8. VERIFY the plotly scatter output moved with its cell and is drawn inside the notebook, below the breadcrumbs -> PASS
   Evidence: shots/S03-02.png

## S04 - Turning ai.enabled off and on hides and restores the AI status bar entries
Status: pass
Result: With `ai.enabled` false, the Copilot and Next Edit Suggestions status bar entries went away, and both came back when it was set to true.

Steps:
1. Set `ai.enabled` to `false` in the user settings.json.
2. VERIFY neither the Copilot `Sign In` entry nor the Next Edit Suggestions entry is in the status bar -> PASS
   Evidence: shots/S04-01.png, actions.log:56
3. Set `ai.enabled` to `true` in the user settings.json.
4. VERIFY both entries are back in the status bar -> PASS
   Evidence: shots/S04-02.png, actions.log:59

## S05 - Copilot Sign In status bar entry opens the sign-in dialog
Status: pass
Result: Clicking Sign In opened the Sign in to use GitHub Copilot dialog with GitHub, Google, Apple and GHE buttons, and Close Dialog closed it.

Steps:
1. Click `Sign In` in the status bar.
2. VERIFY a `Sign in to use GitHub Copilot` dialog opens -> PASS
   Evidence: shots/S05-01.png
3. Click `Close Dialog`.

## S06 - Customize Layout lists Positron presets and toggles the Top Bar
Status: pass
Result: The picker lists the five Positron layout presets and a Top Bar row, and picking Top Bar hid the top bar, then showed it again.

Steps:
1. Run `Customize Layout...`.
2. VERIFY the picker lists a `Layout Presets` group with Stacked, Side-By-Side, Notebook, Assistant and Agent Layout, and a `Top Bar` row under Visibility -> PASS
   Evidence: shots/S06-02.png
3. Pick `Top Bar`.
4. VERIFY the top action bar has 0 height -> PASS
   Evidence: shots/S06-03.png, actions.log:72
5. Pick `Top Bar`.
6. VERIFY the top action bar is back, 34 pixels tall below the title bar -> PASS
   Evidence: shots/S06-04.png, actions.log:75

## S07 - Window reload with a Positron notebook in front
Status: fail - Finding 1
Result: Fails 2/2

Preconditions:
- Python console open | S01 | `Python 3.10.12 (uv: root)` started with `Interpreter: Start New Console Session`, with `df` defined
- `explore_df.py` open | S01 | `files/explore_df.py` open in an editor tab
- Notebook open in front | S03 | `files/outputs_nb.ipynb` open in the Positron Notebook editor, all four cells run, unsaved, as the active tab

Steps:
1. Run `Developer: Reload Window` and wait for the workbench to come back.
2. Run `df.shape` in the Python console.
3. VERIFY the Plots pane shows the `matplotlib 1` plot made before the reload -> PASS
   Evidence: shots/S07-01.png, actions.log:84
4. VERIFY the Python console printed `(3, 2)` for `df.shape` -> PASS
   Evidence: shots/S07-02.png, actions.log:81
5. VERIFY the editor-type control at the right end of the notebook's breadcrumbs reads `Positron Notebook` -> FAIL - Finding 1
   Observed: It reads `workbench.editor.positronNotebook`, and its hover says `Editor: workbench.editor.positronNotebook`.
   Evidence: shots/S07-03.png, actions.log:95
   Log: none found in logs/42213-renderer.log, logs/42213-console.log
6. Open `explore_df.py`.
7. Open `outputs_nb.ipynb`.
8. VERIFY the editor-type control reads `Positron Notebook` -> PASS
   Evidence: shots/S07-06.png, actions.log:98
9. Run `Developer: Reload Window` and wait 15 s after the workbench comes back.
10. VERIFY the editor-type control reads `Positron Notebook` -> FAIL - Finding 1
    Observed: It reads `workbench.editor.positronNotebook` again.
    Evidence: shots/S07-08.png, actions.log:105

## S08 - Window reload with the Legacy Jupyter Notebook editor in front
Status: pass
Result: The upstream notebook editor's breadcrumb control still read Legacy Jupyter Notebook 15 s after the reload.

Preconditions:
- `vscode_nb.ipynb` in workspace | | `files/vscode_nb.ipynb`, a copy of `files/outputs_nb.ipynb`, copied to the workspace root

Steps:
1. Open `vscode_nb.ipynb`.
2. Run `View: Reopen Editor With...`.
3. Pick `Legacy Jupyter Notebook`.
4. Run `Developer: Reload Window` and wait 15 s after the workbench comes back.
5. VERIFY the editor-type control in the breadcrumbs reads `Legacy Jupyter Notebook` -> PASS
   Evidence: shots/S08-01.png, actions.log:113

## S09 - Chat view's mode picker after the reload
Status: pass
Result: The Chat view appeared after the reload, and its Agent picker opened an action list with Agent and Configure Custom Agents.

Steps:
1. Click the `Chat (Ctrl+Alt+I)` tab in the activity bar.
2. VERIFY the Chat view opens with a `Describe what to build` input -> PASS
   Evidence: shots/S09-01.png
3. Click `Agent` in the chat input toolbar.
4. VERIFY an action list opens with a checked `Agent` row, a separator and `Configure Custom Agents...` -> PASS
   Evidence: shots/S09-02.png, actions.log:120
5. Press Escape.

## S10 - Help pane shows Python help in the side bar
Status: pass
Result: `?pd.DataFrame` opened the Help tab with the pandas.DataFrame page, its webview filling the Help pane below its toolbar.

Preconditions:
- Python console open | S01 | `Python 3.10.12 (uv: root)` started with `Interpreter: Start New Console Session`, `pandas` imported as `pd`

Steps:
1. Run `?pd.DataFrame` in the Python console.
2. VERIFY the Help tab is selected and shows the `pandas.DataFrame` page, its webview inside the Help pane -> PASS
   Evidence: shots/S10-01.png, actions.log:123

## S11 - Top bar session picker
Status: pass
Result: Select Session opened a titled Running Interpreter Sessions picker listing the console session, two notebook sessions and New Console Session.

Steps:
1. Click `Select Session` in the top bar.
2. VERIFY a quick pick titled `Running Interpreter Sessions` lists `Python 3.10.12 (uv: root)` as Currently Selected -> PASS
   Evidence: shots/S11-01.png, actions.log:126
3. Press Escape.

## S12 - Positron parts under the experimental Modern UI setting
Status: pass
Result: With Modern UI on, the top bar stayed 34 pixels tall, and the Help webview stayed inside the floating secondary side bar.

Steps:
1. Set `workbench.experimental.modernUI` to `true` in the user settings.json.
2. VERIFY the workbench has the modern-ui class, the top bar is 34 pixels tall, and the Help webview sits inside the secondary side bar -> PASS
   Evidence: shots/S12-01.png, actions.log:130
3. Set `workbench.experimental.modernUI` to `false` in the user settings.json.

---

## Noticed
- O01 - Clicking the breadcrumb editor-type control on a Positron notebook opened no menu, both while it showed the raw ID and after it showed Positron Notebook - a raw click by ref, so the automation may be at fault; not checked by keyboard.
- O02 - After a window reload, the Plots pane kept only the matplotlib plot, and the plotly chart shown before the reload was gone - plotly plots are not comm-based plots, so this is likely by design; not checked against a release build.
- O03 - At launch the Extensions tab read `1 requires restart`, and only after the first reload did a `Chat (Ctrl+Alt+I)` view and a chat button in the title bar appear - not checked which extension needed the restart.
- O04 - `vscode_nb.ipynb` had a notebook session in the session picker though none of its cells were run - not checked whether opening it started the kernel.

## Not run
- N01 - Chat model picker, where Positron draws provider logos on action-list separators - no language model was available to VS Code chat in this run (Copilot needs GitHub sign-in).
- N02 - Copilot inline suggestions gate on `ai.enabled` and the copilot provider - environment: no GitHub account to sign in to Copilot.
- N03 - Positron Web and server changes (web client server, server CLI) - environment: no Positron Web license.
- N04 - Update service and update notifications - a dev build has no update channel.
- N05 - Remote SSH and remote extension host changes - environment: no Docker host or remote target.
- N06 - Layout Density options in Customize Layout under Modern UI - ran out of time.
