Repository navigation
chore: remove the last Python and forbid its return - #227
Merged
Merged
Conversation
P5 (#222) retired the Python control plane; nothing in CI, package.json, Dockerfiles or TS still executes these files. Delete all 114 tracked .py files under experiments/, their requirements files, the durable-execution and sdk-durability experiments (Python only), the Python-era native capability evidence, two unreferenced Python evidence receipts and the SSH remote browser node that only the deleted Python probe launched. Docs that linked deleted files now point at the last revision that had them, and three research records whose only referrers were deleted are linked from the ADRs they support. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Fail docs:check when a tracked file ends in .py or is named requirements*.txt, pyproject.toml or .python-version, with an empty explicit allow-list for non-Python artifacts that must keep such a name. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
P5 (#222) retired the Python control plane and harness, but
experiments/still tracked 114.pyfiles. Nothing executes them: no workflow,package.jsonscript, Dockerfile/compose file or TS/MJS/shell file spawns or imports them (the only TS that ran Python was the SSH remote browser node, itself launched only by a deleted Python probe). This PR deletes them and makesdocs:checkrefuse Python from now on.Removed (128 files, 36,794 lines)
experiments/work-journeyexperiments/linux-executionexperiments/browser-executionexperiments/durable-execution(whole directory)experiments/sdk-durability(whole directory)Non-Python deletions: the five
requirements*.txtfiles; the README of each of the two Python-only experiments;work-journey/native-capabilities/(P4 Python evidence and histories that nothing reads);evidence/python-control-gate.jsonandevidence/desktop-python-preview-native.json(unreferenced); andproduct_browser_remote_node.ts, which only the deletedproduct_browser_probe.pylaunched and which ranpython3 run.pyon the remote host.Kept, and why
package.jsonrun. That includescomposition/*.mjs, used by the native browser packet, andterminal-recovery/resources.yaml, which the TS probes read.REAL_*.json,work-journey/evidence/*,fixtures/v3-construction.json) is kept as inert dated history. Docs cite it as qualification evidence,native-browser-contract.test.tsreadsv3-construction.json, and the credential-scan allow-list pinsREAL_HOST_DEADLINE.json.scripts/check-credential-findings.tsentries forprotected_native.pyare commit-pinned history-scan exceptions, so they stay valid after deletion.scripts/integration/fixtures/web-contract-compatibility.jsonanddocs/research/*.jsonare unchanged. Their.pymentions are data.References
50837bea). The experiment READMEs say that their Python commands are historical, and they name the TS replacements.sdk-durability-integrationfrom ADR-0046, andpython-native-task-capabilitiesandpython-product-runtimefrom ADR-0050's retained/retired list.scripts/ci-scope.test.ts, the example paths that pointed at deleted.pyfiles now use TS files in the same directories. The directory rules inci-selection.tsare unchanged.Guard
scripts/check-hygiene.tsrule 8 fails when any tracked file ends in.pyor is namedrequirements*.txt,pyproject.tomlor.python-version. The message is: "Python was retired in P5 (ADR-0050); write this in TypeScript".PYTHON_NAME_ALLOWEDis an explicit allow-list for non-Python artifacts that must keep such a name, and it is empty. The tests cover the four forbidden names, similar names that stay allowed, a clean tree, and the actual repository.docs/research/repository-hygiene-guards.mdrecords the rule.Checks
npm run docs:check: pass (23 tests; 298 Markdown files; hygiene passed)npm run ci:check: pass (142 tests, 0 fail)npm run test:browser:boundary: pass (82/82)npm run typecheck: passnpm run test --workspace @openbot/web: pass (93 files, 698 tests)npm run security:config-check: passnpm run test:linux:contractspass (463 tests, 0 fail); desktop-temporal tests pass (16/16)check-pr-research.tsagainst this diff: no dependency, protocol, security or persistence change, so research is not required (deleted requirements files do not trigger it)npx biome check --writewas run only on the changed TS files🤖 Generated with Claude Code