Claude Code transcript

11 prompts · 61 messages · 209 tool calls · 0 commits · 3 pages

Chronological overview: every user prompt with activity stats and long response excerpts. Click an entry to jump to it in the full transcript.

#1page 1

This is round n of an experiment where I'd like you to explore some more ML ideas, in part to see where we are with automating ML research.

General constraints:

  • Needs to be somewhat toy so that we can run it on this machine in a reasonable time.
  • No security risks. In particular, confirm with me before installing any packages or reusing third party code (latter should not be necessary anyway).

So far, I've been giving you some high-level ideas to start with, or papers to riff on.

This time, I'd like you to come up with ideas more freely, but with these high-level constraints:

  • It should be about solving a problem (even if toy), where you can try out a few deep learning approaches, or even come up with new ideas.
  • It should be something that lends itself to a nice visualisation (or even something interactive), where it's easy and intuitive to tell for an observer coming to this what works or what doesn't, maybe even without too much domain knowledge.

WDYT? First step would be to propose some ideas & plan.

Nice — round n, free-choice edition. Let me think about what fits the two constraints (toy + instantly-legible visualization) and where there's an actual ML question worth probing, not just a demo.

Here are four candidate ideas, roughly in order of how excited I am about them:

A. "Thinking longer" on mazes — recurrent nets and test-time compute

Problem: train networks to mark the shortest path through a randomly generated maze (input: maze image, output: path mask).

The ML question: compare a fixed-depth CNN against a weight-tied recurrent CNN that applies the same small block over and over. The recurrent one can be run for more iterations at test time than it was trained with — does extra "thinking time" let it solve harder/bigger mazes than it ever saw in training? This is a genuinely interesting topic (test-time compute, algorithmic extrapolation) in a form that trains in minutes on CPU. There's room for our own variants too, e.g. does giving the recurrent net a "scratchpad" that it can't overwrite help, does a confidence-based stopping rule work.

Visualization: this is the big win. An interactive HTML page: pick a maze size, a model, and drag a "thinking steps" slider — you watch the model's path estimate flicker, spread, and lock onto the route (or fail and dissolve). A non-expert sees within ten seconds which model "gets it" and that small mazes are easy while big ones need more thinking. No domain knowledge needed: either the path lights up or it doesn't.

B. Learned physics simulators — inductive biases you can see

Problem: learn the dynamics of a toy system (pendulum, ball bouncing in a box, planet orbiting a star) from trajectory data, then roll the model forward for a long time.

The ML question: plain MLP next-state predictor vs residual/integrator-style predictor vs a Hamiltonian-style network that predicts a scalar energy and derives forces from its gradient. The known result is that unconstrained models drift; the fun is in seeing how much structure you need before long rollouts become stable, and trying in-between variants.

Visualization: side-by-side animations of ground truth vs each model's rollout. Failure is viscerally legible — the planet spirals into the sun, the pendulum gains energy and starts windmilling. Plus one energy-vs-time chart. Slightly less interactive than A, but maximally intuitive.

C. Neural cellular automata — growing and regenerating patterns

Train a tiny CA update rule (a per-pixel network) to grow a target pixel image from a single seed, then compare training regimes by how well the pattern regenerates when you damage it. Interactive version: click/scrub to erase chunks and watch it regrow. Gorgeous demo, real research texture (stability, pool training, async updates), but training backprops through ~50+ CA steps, so it's the most CPU-expensive of the four — feasible at small grid sizes, but iteration cycles would be slower.

D. Inferring interaction rules from swarms

Learn boids-style flocking rules from observed trajectories, comparing a permutation-invariant/GNN-style model against a plain MLP over concatenated neighbors. Nice animations, but "works vs doesn't" is fuzzier to eyeball than A or B — you're judging vibe of a flock, not a binary path-found/orbit-crashed.

My recommendation

A (mazes), with B as a close second. A has the strongest combination: a topical ML question (test-time compute and extrapolation), several genuinely different architectures to pit against each other, cheap CPU training, room for our own twists rather than pure reproduction, and the most compelling interactive visualization — the thinking-steps slider basically is the result.

Plan sketch for A:

  1. Scaffold — new folder D:\claude_code\maze_thinking, reuse the shared venv at ml_venv (torch + numpy already there; no new packages needed — the interactive viz will be a self-contained HTML file with vanilla JS, data baked in as JSON).
  2. Phase 1, pipeline + sanity — maze generator (guaranteed-solvable, with BFS ground-truth paths), small fixed CNN baseline, verify it learns small mazes at all. Decision point: if even that struggles, rethink representation.
  3. Phase 2, main comparison — feedforward CNN (a couple of depths) vs weight-tied recurrent net, trained on small mazes; evaluate on held-out small mazes and larger mazes, sweeping test-time iterations for the recurrent one.
  4. Phase 3, one novel twist — chosen based on Phase 2 results (e.g. recall-gated recurrence, adaptive halting, or curriculum on maze size).
  5. Writeup + interactive visualization, then the usual two independent subagent reviews of code and claims before calling it done, per the standing protocol.

Budget-wise this should land in the same ~$5-ish range as the previous rounds, with training runs of minutes rather than hours.

Want me to go with A? Or if the physics one (B) appeals more — it's the more "classic" comparison and the crash-and-burn animations are great — I'm happy to do that instead. I'll wait for your pick before touching anything.

#2page 1

Nice! These are all cool. Having recently watched an interesting youtube video about cellular automata, C also looks interesting.

How about we do A for now, but you keep a note somewhere about C so I can follow up in a fresh conversation in the future?

12 write · 9 powershell · 5 edit · 3 read · 2 mcp__claude_browser__preview_start · 2 mcp__claude_browser__navigate · 1 toolsearch · 1 monitor · 1 skill · 1 mcp__claude_browser__computer
#3page 1

[Request interrupted by user]

#4page 1

Question, I'm being asked for permissions for you to "act on https://file". Could you explain what exactly the permissions will do here?

That's a harmless artifact of a mistake I made, and you can safely deny it.

What happened: I tried to open the visualization preview directly from disk with a file:///D:/claude_code/maze_thinking/_preview.html URL in the in-app Browser pane. The pane doesn't support file:// URLs — it mis-parsed the scheme as if "file" were a website hostname and turned it into https://file, and its per-site approval system then asked you for permission to interact with that (nonexistent) site. Granting it would do nothing useful — there's no actual website called "https://file", and it would not grant me access to your local files (I already have that through the normal file tools you see me using).

I already worked around it the proper way: a tiny local web server (Python's built-in http.server, serving only the maze_thinking project folder on localhost:8731), and the viewer loads fine from there. So: deny/dismiss the prompt, nothing is blocked.

Status while we're here: Phase 2 training is chugging along in the background — the first model (CNN depth 8) is done, the second (CNN depth 16) just started, then the two recurrent models. Meanwhile I've built the evaluation script and a first draft of the interactive viewer (maze panels + thinking-step slider + solved-rate charts). I'll keep polishing the viewer against the sanity-run data while the real models train.

#5page 1

ok, note that win defender popped up to ask for permissions for that

26 edit · 20 powershell · 5 mcp__claude_browser__navigate · 4 mcp__claude_browser__computer · 4 write · 3 mcp__claude_browser__javascript_tool · 3 taskstop · 3 monitor · 2 mcp__claude_browser__preview_start · 2 read · 1 mcp__claude_browser__preview_stop · 1 mcp__claude_browser__read_console_messages · 1 mcp__claude_browser__get_page_text · 1 mcp__claude_browser__read_page · 1 toolsearch · 1 mcp__claude_browser__preview_list

Good catch — that's the Windows Defender Firewall prompt, and it appeared because Python's built-in web server binds to all network interfaces by default, meaning other devices on your LAN could in principle reach it. The prompt asks whether to allow inbound connections from the network.

You can safely deny/cancel that too: loopback (localhost) traffic isn't affected by the firewall, so my preview keeps working either way. But the server shouldn't be listening on your LAN at all for this — let me restrict it to localhost-only right now, which also makes the firewall question moot.

Here's where things stand:

Training (background, ~1 h to go): CNN depth 8 is done; CNN depth 16 is training now; the two recurrent models follow. The driver is resumable, so if you switch the PC off, relaunching run_phase2.py picks up where it left off. A monitor will wake me when it finishes or fails.

Built while waiting: the evaluation script (size × thinking-steps sweeps on mazes guaranteed disjoint from training data — including a fix for a caching bug I caught where a test set could have been silently generated without that guarantee), and the full interactive viewer pipeline. The viewer already runs against a throwaway checkpoint: maze panels with the probability overlay, thinking-step slider, play button, and solved-rate charts wired up. Colors follow a colorblind-validated palette, light and dark mode both.

Re: the two permission popups — both were side effects of me previewing the viewer, both safe to deny. The "https://file" one was the browser pane garbling a file:// URL; the Defender one was the preview server initially listening on your LAN. I've since pinned it to localhost-only (--bind 127.0.0.1), so the firewall question won't recur.

Next, once training completes: run the evaluation sweeps, look at whether extra thinking actually buys extrapolation to bigger mazes, pick the "twist" experiment based on where the interesting failure is, and rebuild the viewer with real data. I'll report back when results are in.

Both fixed CNNs are done and strong at training size: depth 8 solves 98.0% and depth 16 solves 99.7% of unseen 13×13 mazes. That's the bar the recurrent models need to clear — first on equal terms, then on the sizes the CNNs can't extrapolate to. The recurrent (no-recall) model is training now, recall variant after that; I'll run the full evaluation sweeps when the driver finishes.

The recurrent (no recall) model also converged — 99.8% val solved at its training budget of 20 steps, loss ~8e-8 (genuinely tiny, not a logging artifact, which is itself interesting: it's very confident on training-size mazes). All three models so far are near-ceiling at 13×13, so the whole story will be decided by the extrapolation sweeps. The recall variant is the last one training; I'll launch the evaluations when it's done.

Phase 2 is now fully written up in REPORT.md, and there's a nice bonus finding: the recurrent nets that dominate on extrapolation have 8–15× fewer parameters than the CNNs (76k vs 592k–1.2M) — the capacity lives in iteration, not weights.

The viewer is rebuilt with real Phase 2 data and all its pieces verified (4 model panels, thinking slider, 5 solved-rate charts, data tables). Phase 3 — retraining both recurrent variants with an unpredictable thinking budget to test whether the recall net's overthinking collapse is a training artifact — is running in the background with a monitor on it. I'll pick this up when training finishes (~40 min).

Phase 3 hit a snag that's also a finding: the plain recurrent net trained with a random thinking budget learns the task (99.7% validation mid-training) but keeps suffering sudden collapses to ~0% — and it happened to end on one, with only the last-epoch checkpoint saved. I've patched training to keep a best-validation checkpoint, preserved the unstable run's log as evidence, and set things up to retrain it once the recall+random run (still going, ~15 min) finishes. The instability contrast — plain destabilizes under random readout, does recall stabilize it? — is shaping into part of the story.

Both random-budget variants are retraining under the patched trainer (monitored, ~50 min). The stability contrast is already written into the report as a Phase 3 finding: under an unpredictable thinking budget, the plain net's training repeatedly collapses while recall's stays smooth — so "recall stabilizes" turns out to be true about training, not (so far) about test-time overthinking. The final test-time sweeps of the retrained models will settle whether random budgets also cure the overthinking collapse and who wins at 33×33. I'll run evaluations and the final viewer build when training lands.

The dynamics analysis is running alongside training. Once it and the seed-1 replicates land, the remaining pipeline is: replicate evals → check the headline claims hold across seeds → final viewer build + visual pass → finish the writeup → two independent subagent reviews. Waiting on the background jobs now.

#6page 2

Before I forget, once you have results & a write up, can you run an independent reviewer agent to have a look at everything?

4 edit · 2 read · 1 write · 1 powershell

Yes, absolutely — that's already baked into the plan (it's the standing protocol from the earlier rounds): once the replicates are evaluated and the writeup is finished, I'll launch two independent subagent reviews — one auditing the code (correctness of the maze generation, dedup/leakage guarantees, eval methodology, checkpoint selection), and one auditing the writeup against the actual numbers (are the claims supported, are caveats honest, does the interactive viewer show what the report says). Any issues they find get fixed and re-checked before I call the round done.

Current state while we wait: the seed-1 replicates (first of four is training now, ~80 min to go) will tell us whether the headline claims — plain-recurrent extrapolation, recall overthinking, and the Phase 3 reversal — hold across seeds. The state-dynamics diagnostic is also running; it should land shortly.

The float64 rerun with the flip-rate metric is going. This will pin down which models' outputs actually stabilize over long rollouts (independent of the exploding state norms) and exactly when float32 overflow kicks in — which may reinterpret the late-step "decay" numbers in the eval sweeps as partly numerical rather than dynamical. Waiting on that plus the replicates.

The dynamics finding is now written into the report as its own section ("What the dynamics say") with the two dissociations: outputs freeze while states explode, and calm states don't protect the answer. The one genuinely stable-and-correct model is the plain recurrent net trained at fixed T — its output freezes on the right answer via a sign-stable divergence.

Still pending: the seed-1 replicates (two of four runs to go, ~50 min), then their eval sweeps, the final viewer build with a visual inspection, writeup polish, and the two independent reviews you asked for.

#7page 2

just checking in, could you recap, what's still running?

14 edit · 6 mcp__claude_browser__javascript_tool · 5 powershell · 4 read · 3 mcp__claude_browser__navigate · 3 mcp__claude_browser__resize_window · 2 mcp__claude_browser__computer · 2 agent · 1 taskstop · 1 mcp__claude_browser__preview_start

Sure — here's the full picture:

Currently running (just one thing): the last of four seed-1 replicate training runs — "recurrent + recall with random thinking budget" — about 20–25 minutes from done. These replicates re-run all four recurrent configurations with a different random seed (which changes both the network initialization and the training mazes) to check that the headline claims aren't a fluke of one seed.

Done so far: - Phase 1–2 (main comparison): fixed-depth CNNs collapse on bigger mazes; the plain recurrent net converts extra test-time steps into solving much bigger mazes (41% of 33×33 mazes at 100 steps, trained only on 13×13 at 20 steps); the recall variant "overthinks" — collapses when run past its training budget. - Phase 3 (twist): training with a randomized budget did not fix overthinking; it spread it — including destroying the plain net's extrapolation. Also: random budgets make the plain net's training unstable (reproduced twice). - Dynamics analysis: no model reaches a fixed point — states grow forever, but outputs freeze; the good model freezes on the correct answer, the overthinkers freeze on wrong ones. State calmness and answer stability turn out to be unrelated. - Deliverables in progress: REPORT.md is written through all of the above; the interactive viewer (5 models, thinking-step slider, solved-rate charts, data tables) is built and functionally verified.

Still to do after the last run finishes: evaluation sweeps of the four replicates → fold the replication check into the report → final viewer build + a proper visual inspection (blocked so far because training keeps all CPU cores busy, which starves the browser screenshotter) → then the two independent reviewer agents you asked for (one on code, one on writeup/claims), fix whatever they find, and wrap up.

Report softened. Waiting on the replicate eval sweeps now — one correction to something I told you earlier: when the seed-0 retrain "reproduced" the instability, that was the same seed rerunning its own deterministic trajectory, so it wasn't independent evidence; the honest statement is "violent at seed 0, mild wobbles at seed 1," which is what the report now says.

Still running (two models to go). One wrinkle already: seed-1 recall at 21×21 keeps churning its output at step 200 (1.5% of pixels flipping per step) rather than freezing — so "everyone freezes" needs demoting to "most freeze; some overthinkers keep churning." I'll finalize the dynamics section when the run completes.

Both reviewers are running independently in the background — one auditing the code (maze generation correctness, leakage, eval indexing, checkpoint selection, the viewer's JS consistency with eval definitions), one recomputing every number in the report from the raw JSONs and auditing the claims for overreach. While they work, the deliverables stand at: REPORT.md (complete draft with TL;DR, phase 2/3 results, replication analysis, dynamics section, caveats) and maze_viewer.html (final build, verified functionally down to canvas pixels, light+dark). I'll report their findings and apply fixes when they come back.

#8page 2

btw I've got two empty python windows open, is this expected?

12 edit · 3 powershell · 1 grep

Probably yes — and harmless. The most likely culprits are the little local web servers (python -m http.server) used to preview the interactive viewer: I've started/restarted one on port 8731 in this session, and your launch config also has a "transcripts" server on port 8742 (from your other session). The preview tool launches them as plain console processes, so each shows an empty Python console window. The hidden training jobs I launched all used hidden windows and have finished, so it shouldn't be those. Let me verify what those two windows actually are:

So, to answer directly: yes-ish — expected in the sense that nothing is wrong, but the two windows you see belong to your neural_ca project's training queues (a parallel session), not to this maze experiment. Leave them open if that session is still working; they'll be the ones to close when that training is done. (That session also seems to have a duplicated preview server of its own on port 8643 — I left everything of theirs strictly alone.)

Meanwhile in this session: both independent reviewers are still working through the code and the writeup. I'll relay their findings when they finish.

The writeup reviewer is done: zero critical findings, all ~90 recomputed numbers match, one MAJOR overgeneralization (I claimed the plain net's output flip rate hits "exactly zero at every size in both seeds" — its own dynamics file contradicts that at seed-0 21×21, where 0.02%/step remains) plus six minor wording issues. Applying all fixes now:

All writeup-review fixes are applied. Summary of that review: no critical findings; every one of ~90 recomputed numbers in the tables matched the raw data exactly; verdict "publishable-as-honest after fixes." The one substantive catch was mine overgeneralizing the flip-rate claim ("exactly zero at every size in both seeds" — actually one seed-0 size retains ~0.02% churn); that plus six wording-level issues (parameter-ratio range, background-pixel percentage, growth-rate figure, a couple of missing "in our runs" hedges, an epoch-indexing ambiguity) are now corrected in REPORT.md.

The code reviewer is still working — I'll relay its findings and fix anything it turns up when it reports back.

The code reviewer is back too — verdict: sound, with one MAJOR catch that's actually in the report, not the code: I transcribed the seed-1 recall+random 33×33 peak as 0.4 when the eval data says 2.6 (at T=30) — I misread the 0.004@50 entry. Everything else it tried to reproduce (maze-generator tree property, hash disjointness, threshold equivalence, the one-rollout sweep shortcut being bitwise identical to fresh forwards, eval numbers from checkpoints, dynamics values) reproduced exactly. Applying the fixes:

That wraps the round — both reviews are in, all findings fixed, and everything is recorded in STATUS.md and memory.

Review outcomes: - Writeup review: zero critical findings; every number in the tables reproduced exactly from the raw eval data. One real catch (an overgeneralized claim about output flip rates) plus six wording fixes — all applied. - Code review: verdict sound. It empirically re-verified the load-bearing machinery — maze corridor graphs really are trees (so exact-match is a fair metric), train/val/test hash disjointness holds (including val↔test, which was only disjoint by luck, now noted), the viewer's threshold matches eval's bitwise, and every eval number it tried reproduced from the shipped checkpoints. Its one major finding was a transcription error in my replication table (0.4 → 2.6), now fixed, plus two small code guards I implemented.

Deliverables: - REPORT.md — full writeup: TL;DR, methods, phase 2/3 results, replication analysis, dynamics section, honest caveats. - maze_viewer.html — the interactive piece, fully self-contained (you can double-click it in Explorer, no server needed; it's also live at http://localhost:8731/maze_viewer.html while the preview server runs). Pick a maze size, drag the thinking slider or hit play: at 13×13 everyone solves it by step 20; at 33×33 watch the plain recurrent net lock onto the path around step 55 while the CNN never gets there — and watch the recall variants dissolve their own answer if you keep thinking past ~50.

The round in one line: test-time compute genuinely converts into problem size for weight-tied recurrent nets, but how much is a seed lottery — whereas who keeps their answer when you think 10× too long is completely consistent: only the plain net trained at a fixed budget, which turns out to "freeze" its answer atop an endlessly exploding state, a mechanism none of us would have guessed from the literature's framing.

One process note for your automating-research ledger: my Phase 3 prediction was wrong (random budgets made things worse, not better), and the single most important correction of the day — extrapolation magnitude not replicating across seeds — only surfaced because of the replicate runs. Cheap replication earned its keep.

#9page 2

Looks really cool!

Can you prep a github repo, no leaked secrets or machine specific paths etc unless really necessary. Also with an appropriate licence etc

8 edit · 4 powershell · 4 write · 2 read · 2 grep

Repo is ready and clean — final scan shows no secrets, no personal email, no machine-specific paths anywhere in the committed tree.

What's in it (single commit on main, ~16 MB): - Code (pipeline + drivers + viewer builder), README.md, REPORT.md, maze_viewer.html, MIT LICENSE under "David P. Reichert", requirements.txt (just torch + numpy). - All 10 reported runs' checkpoints, training logs, and eval sweeps, so every number is re-derivable without retraining; the superseded _v1 runs kept logs-only (they're the instability evidence). - Excluded via .gitignore: STATUS.md (my machine-specific lab notebook), dataset caches, logs, throwaway sanity runs, regenerable viz data. - The README has a provenance section stating the work was done by Claude as an autonomous-research exercise with your direction/review, and mentions the two independent audits (now also summarized at the end of REPORT.md). - Commit identity is your noreply address (258617509+davidpreichert@…), so the email-privacy push block won't trigger.

To publish (needs your GitHub auth, so this part's yours): create an empty repo on GitHub (suggested name maze-thinking, no auto-added README/license), then:

cd D:\claude_code\maze_thinking
git remote add origin https://github.com/davidpreichert/maze-thinking.git
git push -u origin main

One tip: GitHub won't render maze_viewer.html interactively from the file listing — if you want a clickable live demo, enable GitHub Pages (repo Settings → Pages → deploy from main), and the viewer will be served at https://davidpreichert.github.io/maze-thinking/maze_viewer.html. Happy to add that link to the README once you've pushed and enabled it.

#10page 2

Created at maze-thinking.

Anything to consider with GitHub Pages?

Also, in the readme under provenance you can mention my name as the "repo owner" (David P. Reichert). Similarly, in the write up, can you add something along the same lines (Claude did most the things, David P. Reichert set the overall direction and provided light feedback -- something like this).

Can you also commit something to memory about defaulting to light author contribution tracking in cases like this?

4 edit · 3 powershell · 1 write

Let me handle all three: Pages advice, the attribution edits, and the memory note — then commit and try pushing.

GitHub Pages considerations, short version: it's a good fit here and there's little to worry about — - Pages serves the whole branch as a static site, so everything committed becomes fetchable via the pages URL too (fine here — we verified there's nothing sensitive, and the repo is public anyway). - The viewer is pure static HTML with baked-in data, so no build step: choose "Deploy from a branch" → main/ (root), and …/maze_viewer.html just works. First deploy takes a minute or two; every later push redeploys automatically. - Free Pages requires the repo to stay public. - One genuine consideration: Pages sites get indexed by search engines. If you'd rather not have it crawled, that's hard to prevent on Pages — but for this content I can't see a downside.

Now the edits:

Done and pushed — both commits are live at https://github.com/davidpreichert/maze-thinking (your stored Git credentials worked; the first push attempt hit a transient GitHub server error, the retry went through).

What changed in this round of edits: - README provenance now credits "the repository owner, David P. Reichert" for overall direction and light feedback, with Claude as author of code/experiments/writeup. - REPORT.md got a matching authorship line up top ("code, experiments, analysis, and text by Claude (Anthropic); overall direction and light feedback by David P. Reichert") — and I also fixed the stale "Status: DRAFT" line to "final, twice independently audited" while I was there. - README now leads with the live-demo link https://davidpreichert.github.io/maze-thinking/maze_viewer.html — it'll go live once you enable Pages (repo Settings → Pages → Deploy from a branch → main / (root); takes a minute or two after enabling). - Memory saved: a feedback note that autonomous-round writeups and READMEs should include a brief contribution statement by default (your name as "David P. Reichert", never the email), scaled honestly to your actual involvement per round.

That closes out the round: repo public, viewer one Pages-toggle away from being a shareable link, report final and audited.

#11page 3

FYI the repo is private at this moment -- will think about making it public a bit later

1 edit

Good to know — two small implications:

  1. GitHub Pages won't be available while it's private on a free account (Pages requires a public repo unless you're on a paid plan). So the live-demo link at the top of the README will 404 for now — harmless, since the sentence also points to opening maze_viewer.html locally, but flip Pages on whenever you make it public and the link will start working.
  2. Nothing in the repo needs to change either way — it was prepped to public-release standard (no secrets, no personal email, attribution in place), so making it public later is just the visibility toggle plus enabling Pages.

Let me note the repo state in memory so a future session doesn't assume it's public:

Noted and saved. The round is fully wrapped: results twice-audited, report final, viewer built, repo pushed (private for now), and everything a future session needs is in STATUS.md and memory. Enjoy playing with the slider — and whenever you feel like round n+1, the neural-cellular-automata idea is waiting in my notes (though from the looks of those Python windows, some version of it may already be underway elsewhere).