Skip to content

chore: remove the last Python and forbid its return - #227

Merged
yxflc11 merged 2 commits into
mainfrom
codex/claude-remove-python
Oct 10, 2026
Merged

yxflc11 merged 2 commits into
mainfrom
codex/claude-remove-python

Conversation

@yxflc11

@yxflc11 yxflc11 commented Oct 10, 2026

Copy link
Copy Markdown
Collaborator

Summary

P5 (#222) retired the Python control plane and harness, but experiments/ still tracked 114 .py files. Nothing executes them: no workflow, package.json script, 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 makes docs:check refuse Python from now on.

Removed (128 files, 36,794 lines)

Directory Files Lines Python files / lines
experiments/work-journey 85 24,488 76 / 13,479
experiments/linux-execution 16 8,667 16 / 8,667
experiments/browser-execution 14 2,097 14 / 2,097
experiments/durable-execution (whole directory) 7 1,114 4 / 994
experiments/sdk-durability (whole directory) 6 428 4 / 363

Non-Python deletions: the five requirements*.txt files; 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.json and evidence/desktop-python-preview-native.json (unreferenced); and product_browser_remote_node.ts, which only the deleted product_browser_probe.py launched and which ran python3 run.py on the remote host.

Kept, and why

  • All TS/MJS probes and tests that CI or package.json run. That includes composition/*.mjs, used by the native browser packet, and terminal-recovery/resources.yaml, which the TS probes read.
  • Other evidence JSON (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.ts reads v3-construction.json, and the credential-scan allow-list pins REAL_HOST_DEADLINE.json.
  • The scripts/check-credential-findings.ts entries for protected_native.py are commit-pinned history-scan exceptions, so they stay valid after deletion.
  • scripts/integration/fixtures/web-contract-compatibility.json and docs/research/*.json are unchanged. Their .py mentions are data.

References

  • Docs that linked deleted files now point at the last revision that had them (50837bea). The experiment READMEs say that their Python commands are historical, and they name the TS replacements.
  • Three research records lost their only referrers. They are now linked from the ADRs they support: sdk-durability-integration from ADR-0046, and python-native-task-capabilities and python-product-runtime from ADR-0050's retained/retired list.
  • In scripts/ci-scope.test.ts, the example paths that pointed at deleted .py files now use TS files in the same directories. The directory rules in ci-selection.ts are unchanged.

Guard

scripts/check-hygiene.ts rule 8 fails when any tracked file ends in .py or is named requirements*.txt, pyproject.toml or .python-version. The message is: "Python was retired in P5 (ADR-0050); write this in TypeScript". PYTHON_NAME_ALLOWED is 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.md records 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: pass
  • npm run test --workspace @openbot/web: pass (93 files, 698 tests)
  • npm run security:config-check: pass
  • Kept experiments: npm run test:linux:contracts pass (463 tests, 0 fail); desktop-temporal tests pass (16/16)
  • Local check-pr-research.ts against this diff: no dependency, protocol, security or persistence change, so research is not required (deleted requirements files do not trigger it)
  • npx biome check --write was run only on the changed TS files

🤖 Generated with Claude Code

yxflc11 and others added 2 commits October 11, 2026 02:27
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>
@yxflc11
yxflc11 merged commit 5212d52 into main Oct 10, 2026
17 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant