Stability checkpoint — Iris rebrand wave (Python side)

- chore(iris): rebrand narrative (Mirador → Iris)
- chore(iris): update submodule URLs (mirador-* → iris-*)
- feat(iris): rename mirador_service → iris_service (Phase 4) — bulk find/replace, Python package renamed, FastAPI router prefixes, Alembic comments, OTel resource attrs
- fix(iris): un-nest src/iris_service/mirador_service/ → src/iris_service/ — rebuild structure after git mv put source inside existing target dir; pyproject.toml expected __init__.py at top level
- chore(iris): trim TASKS.md after rebrand merged

CI :
- ✅ Main pipeline #2485187768 green — https://gitlab.com/iris-7/iris-service-python/-/pipelines/2485187768
- ✅ MR pipeline #2485131317 green for !52 (rename) — https://gitlab.com/iris-7/iris-service-python/-/pipelines/2485131317
- ✅ MR !53 (TASKS.md trim) merged — non-CI gated trivial doc change

Local test pass :
- ⏭ uv run pytest — DEFERRED (CI integration-tests + unit-tests passed on main)
- ⏭ uv run mypy src — DEFERRED (CI mypy job green)
- ⏭ bin/dev/api-smoke.sh — DEFERRED (CI integration-tests covers REST surface)

Regression check vs stable-py-v0.7.1 :
- ✅ Customer endpoints unchanged (POST /customers, GET, PATCH all green via integration-tests)
- ✅ Order PUT /orders/{id}/status state-machine unchanged
- ✅ Product GET /products/{id}/orders unchanged
- ✅ MCP tool registry unchanged

- ⏭ N/A — no AI/MCP change in this rev

- ⏭ N/A — no auth/CVE change

- ✅ Iris brand established across Python : iris_service package, FastAPI app id, env vars, Alembic comments

- ✅ Submodule URLs : gitlab.com/mirador1/mirador-* → gitlab.com/iris-7/iris-*
- ✅ K8s manifest URL refs updated (gitlab.com/iris-7/iris-service-python)

- ✅ OTel resource.service.name : mirador-service-python → iris-service-python (verified via env files)

- ✅ ruff lint + format clean post-rename (102+ files)
- ✅ mypy strict mode clean
- ✅ import-linter contracts still honored (architectural boundaries preserved)
- ✅ pip-audit clean (no new CVEs introduced by rebrand)

- ✅ All non-manual jobs green on main pipeline post-merge
- ✅ docs:check passes (mkdocs strict mode green)
- ✅ Conventional Commits hook still enforcing

- ⏭ No structure change — feature-slicing under src/iris_service/{order,product,customer,...}/* preserved

- ✅ TASKS.md trimmed — focus on real blockers (mutmut macOS bug, alpine wheels, integration-tests network)
- ✅ pyproject.toml description updated to "Iris customer service"

- mutmut walks parent FS on macOS — Linux CI workaround possible (see TASKS.md)
- alpine docker image (412 → ~280 MB) blocked on musl wheels for pydantic_core/cryptography/bcrypt
- testcontainers network bridging on macbook-local runner — connection refused on host docker socket
- Customer\* mini-domain rename ADR-0064 chip — still spawned, awaits user click

- Property-based tests with Hypothesis on order/product invariants (scheduled 2026-05-04)
- pytest-asyncio integration tests (blocked by testcontainers network issue)
- stability-check.sh section 3 to cover the new modules