# Clean Install Test (clean_install_test_20260603)

Opt-in pytest test that clones the Manual Slop repo to a temp dir, runs `uv sync`, launches `sloppy.py --enable-test-hooks`, and verifies the Hook API responds. Catches "works on my machine" failures by exercising the full install-and-launch path in an isolated environment.

## Goal

Add a single integration test file `tests/test_clean_install.py` that, when opted in via `RUN_CLEAN_INSTALL_TEST=1`, performs a full clean install + launch verification of Manual Slop. Skipped by default to avoid breaking CI for users without network access to the Gitea clone URL.

## Plan Source

This track executes the plan at `docs/superpowers/plans/2026-06-02-clean-install-test.md` and references the spec at `docs/superpowers/specs/2026-06-02-clean-install-test-design.md`.

## Files Touched

| File | Action |
|---|---|
| `pyproject.toml` | Modify: add `clean_install` marker |
| `tests/test_clean_install.py` | Create: opt-in clone-and-verify test |

## Deviation from Plan

The plan uses `requests` library, but `requests` is not a project dependency. Per `conductor/tech-stack.md` "Dependency Minimalism" rule and the existing pattern in `src/mcp_client.py` web tools (which use `urllib.request` + `html.parser` from stdlib), the test will use `urllib.request` from Python stdlib instead. This avoids adding a new external dependency for a single opt-in test.
