diff --git a/project-management/Roadmap/epics/archive/logging-modernisation.md b/project-management/Roadmap/epics/archive/logging-modernisation.md index 4688064..af0f27d 100644 --- a/project-management/Roadmap/epics/archive/logging-modernisation.md +++ b/project-management/Roadmap/epics/archive/logging-modernisation.md @@ -15,8 +15,8 @@ _None._ - specs/001-standardise-logging/ ## ADRs -- [ADR-001](../../ADRs/ADR-001-stdlib-logging-over-console-libraries.md) — stdlib logging over colored console libraries -- [ADR-002](../../ADRs/ADR-002-nullhandler-pattern-for-library-loggers.md) — NullHandler pattern for library loggers +- [ADR-001](../../../ADRs/ADR-001-stdlib-logging-over-console-libraries.md) — stdlib logging over colored console libraries +- [ADR-002](../../../ADRs/ADR-002-nullhandler-pattern-for-library-loggers.md) — NullHandler pattern for library loggers ## Success criteria - [x] `logger.setLevel(logging.DEBUG)` removed from all modules; log level controlled entirely by the host (ComfyUI or the user's logging config) diff --git a/specs/002-manager-compatible-install-requirements-txt-and-custom-node-list-registration/tasks.md b/specs/002-manager-compatible-install-requirements-txt-and-custom-node-list-registration/tasks.md index 79064a0..79e6495 100644 --- a/specs/002-manager-compatible-install-requirements-txt-and-custom-node-list-registration/tasks.md +++ b/specs/002-manager-compatible-install-requirements-txt-and-custom-node-list-registration/tasks.md @@ -16,8 +16,8 @@ **Purpose**: Scaffold the test file and BDD feature files before any implementation. -- [ ] T001 Create `tests/test_packaging.py` with the module skeleton (imports, helpers) and one `pass` placeholder per test function — no assertions yet -- [ ] T002 Create BDD feature files in `specs/002-manager-compatible-install-requirements-txt-and-custom-node-list-registration/features/` (one per US) from the Gherkin scenarios in spec.md +- [x] T001 Create `tests/test_packaging.py` with the module skeleton (imports, helpers) and one `pass` placeholder per test function — no assertions yet +- [x] T002 Create BDD feature files in `specs/002-manager-compatible-install-requirements-txt-and-custom-node-list-registration/features/` (one per US) from the Gherkin scenarios in spec.md --- @@ -29,10 +29,10 @@ ### User Story 1 — TDD pairs -- [ ] T010-T [US1] Write FAILING test in `tests/test_packaging.py` asserting `requirements.txt` exists, contains `jinja2>=3.1.6`, does not contain `colorama`/`termcolor`/`rich`/`.`, and every package listed is present in `pyproject.toml [project.dependencies]` (red) -- [ ] T010-I [US1] Replace `requirements.txt` with hand-authored content: header comment explaining authoring policy + `jinja2>=3.1.6` so T010-T passes (green) -- [ ] T011-T [US1] Write FAILING test in `tests/test_packaging.py` asserting `aiohttp` appears in `pyproject.toml [project.dependencies]` (not only in `[dependency-groups]`) (red) -- [ ] T011-I [US1] Move `aiohttp>=3.9.0` from `[dependency-groups] dev` to `[project.dependencies]` in `pyproject.toml`; run `uv sync` so T011-T passes (green) +- [x] T010-T [US1] Write FAILING test in `tests/test_packaging.py` asserting `requirements.txt` exists, contains `jinja2>=3.1.6`, does not contain `colorama`/`termcolor`/`rich`/`.`, and every package listed is present in `pyproject.toml [project.dependencies]` (red) +- [x] T010-I [US1] Replace `requirements.txt` with hand-authored content: header comment explaining authoring policy + `jinja2>=3.1.6` so T010-T passes (green) +- [x] T011-T [US1] Write FAILING test in `tests/test_packaging.py` asserting `aiohttp` appears in `pyproject.toml [project.dependencies]` (not only in `[dependency-groups]`) (red) +- [x] T011-I [US1] Move `aiohttp>=3.9.0` from `[dependency-groups] dev` to `[project.dependencies]` in `pyproject.toml`; run `uv sync` so T011-T passes (green) **Checkpoint**: `uv run pytest tests/test_packaging.py::TestRequirementsTxt` green. @@ -48,8 +48,8 @@ ### User Story 2 — TDD pairs -- [ ] T020-T [US2] Write FAILING test in `tests/test_packaging.py` asserting `comfy-manager-entry.json` at the repo root does not exist yet (or has wrong/missing fields) — this will go GREEN once T020-I creates it correctly (red) -- [ ] T020-I [US2] Create `comfy-manager-entry.json` at the repo root with the correct Manager schema: `author`, `title`, `reference`, `files`, `install_type: "git-clone"`, `description`, `nodename` list matching `NODE_CLASS_MAPPINGS` display names — so T020-T passes (green) +- [x] T020-T [US2] Write FAILING test in `tests/test_packaging.py` asserting `comfy-manager-entry.json` at the repo root does not exist yet (or has wrong/missing fields) — this will go GREEN once T020-I creates it correctly (red) +- [x] T020-I [US2] Create `comfy-manager-entry.json` at the repo root with the correct Manager schema: `author`, `title`, `reference`, `files`, `install_type: "git-clone"`, `description`, `nodename` list matching `NODE_CLASS_MAPPINGS` display names — so T020-T passes (green) **Manual step** (not a task pair — requires human action after merge): - Submit a PR to `ltdrdata/ComfyUI-Manager` adding the `comfy-manager-entry.json` content to `custom-node-list.json`. Reference the live `main` branch; confirm `requirements.txt` fix is on `main` first. @@ -66,8 +66,8 @@ ### User Story 3 — TDD pairs -- [ ] T030-T [US3] Write FAILING test in `tests/test_packaging.py` asserting that the `@description` field in `__init__.py` does not contain the strings `"model memory"`, `"Model Unloader"`, or any other reference to non-existent nodes (red) -- [ ] T030-I [US3] Update `@description` in root `__init__.py` to: `"Quality of life ComfyUI nodes: dynamic string formatting with Python f-strings or Jinja2 templates, seed-controlled random input selection, and workflow circuit-breaker for conditional queue interruption."` so T030-T passes (green) +- [x] T030-T [US3] Write FAILING test in `tests/test_packaging.py` asserting that the `@description` field in `__init__.py` does not contain the strings `"model memory"`, `"Model Unloader"`, or any other reference to non-existent nodes (red) +- [x] T030-I [US3] Update `@description` in root `__init__.py` to: `"Quality of life ComfyUI nodes: dynamic string formatting with Python f-strings or Jinja2 templates, seed-controlled random input selection, and workflow circuit-breaker for conditional queue interruption."` so T030-T passes (green) **Checkpoint**: `uv run pytest tests/test_packaging.py::TestMetadata` green. @@ -81,10 +81,10 @@ ### User Story 4 — TDD pairs -- [ ] T040-T [US4] Write FAILING test in `tests/test_packaging.py` asserting `docker-compose.yml` exists at the repo root and has a `comfyui` service with a `ports` mapping including `8188` (red) -- [ ] T040-I [US4] Create `docker-compose.yml` at the repo root: single `comfyui` service, `python:3.11-slim` base, installs ComfyUI CPU-only (`torch` CPU wheel), symlinks `comfydv` into `custom_nodes/`, runs `pip install -r requirements.txt`, starts `python main.py --cpu --listen 0.0.0.0`, exposes port 8188; create accompanying `docker/Dockerfile` so T040-T passes (green) -- [ ] T041-T [US4] Write test asserting `docker/Dockerfile` exists and `FROM python:3.11` is the base (so we can verify the GPU-free constraint in CI) (red) -- [ ] T041-I [US4] Create `docker/Dockerfile` with CPU-only ComfyUI install so T041-T passes (green) +- [x] T040-T [US4] Write FAILING test in `tests/test_packaging.py` asserting `docker-compose.yml` exists at the repo root and has a `comfyui` service with a `ports` mapping including `8188` (red) +- [x] T040-I [US4] Create `docker-compose.yml` at the repo root: single `comfyui` service, `python:3.11-slim` base, installs ComfyUI CPU-only (`torch` CPU wheel), symlinks `comfydv` into `custom_nodes/`, runs `pip install -r requirements.txt`, starts `python main.py --cpu --listen 0.0.0.0`, exposes port 8188; create accompanying `docker/Dockerfile` so T040-T passes (green) +- [x] T041-T [US4] Write test asserting `docker/Dockerfile` exists and `FROM python:3.11` is the base (so we can verify the GPU-free constraint in CI) (red) +- [x] T041-I [US4] Create `docker/Dockerfile` with CPU-only ComfyUI install so T041-T passes (green) **Checkpoint**: `uv run pytest tests/test_packaging.py::TestDockerCompose` green. Manual smoke: `docker compose up --build` and inspect logs for `"Loaded custom nodes from comfydv"`. @@ -92,9 +92,9 @@ ## Phase 6: Polish & Quality Gates -- [ ] T050 Run `uv run ruff check --fix && uv run ruff format` on `tests/test_packaging.py` and confirm clean -- [ ] T051 Run `uv run pytest` and confirm all tests pass (existing 11 + new packaging tests) -- [ ] T052 Run `beacon doctor --strict` and confirm 0 failures +- [x] T050 Run `uv run ruff check --fix && uv run ruff format` on `tests/test_packaging.py` and confirm clean +- [x] T051 Run `uv run pytest` and confirm all tests pass (existing 11 + new packaging tests) +- [x] T052 Run `beacon doctor --strict` and confirm 0 failures ---