prerelease-test skill: fold in the 0.10.1 campaign's process lessons
MA
19h ago+443+443+012345678901234567890123456789-47-47-01234567890123456789
All Submissions:
- Have you followed the guidelines stated in CONTRIBUTING.md file?
- Have you checked to ensure there aren't any other open Pull Requests for the desired changed?
Type of change
- New feature (non-breaking change which adds functionality) — tooling only:
.claude/skills/prerelease-test/, no framework or package source.
Changes To Core Features:
- Have you added an explanation of what your changes do and why you'd like us to include them?
- Have you successfully ran tests with your changes locally?
Description
Updates the prerelease-test skill with what the 0.10.1a1 pre-release pass taught, so the next pass starts from a working setup instead of rediscovering it. Process only: no campaign results, findings or artifacts are included (those live on the testing/prerelease branch).
Workflow
- Branch layout: the skill now points at the long-lived
testing/prereleasebranch:REGISTRY.md, reusablefixtures/, aruns/<date>-v<version>/directory per pass, and a close-out step intohistory/. - Deliverables: adds
CAMPAIGN_STATE.mdand a filledAGENT_BRIEF.md, plus size limits for run bulk (about 2 MB per cluster, 10 MB per pass). The previous archive grew to 320 MB. - Picking the branch: when several
r/pre-*branches share a date, test the one whose head carries the release tag.
New and changed scripts
scripts/bootstrap_envs.sh(new) builds the PyPI-only venvs (new,prev,ctrl-X,driver,new-ent,prev-ent) and prints every reflex package each one resolved. It fixes a baseline problem seen this pass:- With
--prerelease=allow, the previous release's>=sibling floors resolved to the new alphas, so the "0.10.0 baseline" ran 0.10.1a1 code, moment and lucide among them. A finalprevnow resolves without pre-releases. - Installs are wheel-only, because uv reuses a cached sdist build for later installs of the same version.
- With
scripts/check_wheel_sources.py(new) compares every source file changed between two tags with the installed copy. It replaces an ad-hoc shell loop.scripts/drive_app.pynow reports a page that rendered no text as an anomaly. A slow first dev load used to come back as "clean" with an empty body.
Checks added, each one surfaced a real finding this pass
- Sibling floors of the
reflexwheel versus a stockpip install -U reflex. - Wheels built from sdists losing
.pyistubs (isolated build env plus unpinned hook dependencies), with a throwaway uv cache. - Parity of security changes across enterprise surfaces, e.g.
X-Forwarded-Forover the REST API versus the websocket. - Standing coverage rows for:
- frontend structural sharing with components that mutate state objects (AG Grid edits, recharts freezing);
- import-time side effects under forked workers;
- legacy form payload diffs;
- network and security headers;
- the hosting CLI against a fake control plane.
Agent brief
- Start servers in their own process group and stop the group.
pkill -fkills its own shell. - Check the port is free before starting a server; a stale server answered a test this pass.
--no-configand--only-binaryinstalls.- Prod single-port setup, Redis, and websocket header injection.
- More known-benign noise.
- The structured final report the orchestrator parses.
Orchestration: a new "Surviving interruptions" section, written after this pass hit two usage limits and a spend limit. It covers periodic commits of the run directory, resuming agents with SendMessage instead of respawning them, and what to do when the configured model is unavailable.
Test plan
check_wheel_sources.pyagainst the published 0.10.1a1 install: 77 identical, and only the 3 unpublished workspace packages reported as not installed. Against a tampered copy ofreflex/app.py:DIFFERS, exit 1.bootstrap_envs.sh NEW=0.10.1a1 PREV=0.10.0in a fresh scratch dir:prevresolved every sibling to its final (core/code/moment 0.10.0, lucide 1.1.0, hosting-cli 0.2.0, build-sdk 0.1.0). The old script gave code/moment/lucide/hosting-cli alphas.drive_app.pyagainst a static page with an empty#root:EMPTY PAGEreported. A page with text: no empty-page report.ruff checkandruff formatare clean on the changed scripts;bash -npasses on the bootstrap script.
Generated by Claude Code