diff --git a/VERIFICATION.md b/VERIFICATION.md index a3da703..f2e1dac 100644 --- a/VERIFICATION.md +++ b/VERIFICATION.md @@ -1,39 +1,34 @@ # Verification report -## Artifact inspection +## Generation environment -This repository contains the service contract, implementation, tests, dependency -metadata, container packaging, and documentation in directly inspectable paths. The -checker tests use `httpx.MockTransport`; they do not make external network requests. +The repository was persisted through the platform scaffold/commit mechanism. The available generation tools did not include a command runner or Docker daemon, so no formatter, linter, type checker, test runner, image build, container startup, or live API smoke test could be executed. No pass result is inferred from file generation. -## Execution status for this generation +## Commands and status -The generation platform exposed repository scaffolding/commit and file-inspection -operations, but no command runner or Docker daemon. Therefore the following commands -were **not executed here**, and no passing result is claimed: +| Check | Command | Generation status | +|---|---|---| +| Ruff lint | `ruff check .` | NOT RUN — no shell executor | +| Ruff format | `ruff format --check .` | NOT RUN — no shell executor | +| Mypy | `mypy app` | NOT RUN — no shell executor | +| Tests | `pytest` | NOT RUN — no shell executor | +| Image build | `docker build -t endpoint-monitor:verify .` | NOT RUN — no Docker/shell executor | +| Startup | `docker run ...` | NOT RUN — no Docker/shell executor | +| Smoke | request `/health/live`, create monitor, inspect status | NOT RUN — no running container | -```bash -ruff format --check . -ruff check . -mypy app -pytest -docker build -t endpoint-monitor . -docker run --rm -d -p 8000:8000 --name endpoint-monitor endpoint-monitor -curl --fail http://127.0.0.1:8000/health/live -curl --fail http://127.0.0.1:8000/health/ready -docker rm -f endpoint-monitor -``` +## Inspectable static evidence -They are the required validator sequence. A validator with a Python 3.12 environment -and Docker should execute them and record stdout, versions, and image digest. Static -review confirms each required artifact is present, but it is not a substitute for -execution. +- `pyproject.toml` defines Python 3.12, runtime dependencies, Ruff, strict Mypy, and Pytest. +- `requirements.txt` and `requirements-dev.txt` contain pinned direct requirements. +- Tests cover CRUD, health, check status/latency, timeout mapping, concurrent status updates, DNS/private-address blocking, redirect blocking, and log redaction with mocked egress. +- `Dockerfile` runs as numeric non-root UID/GID 10001, starts exactly one worker, disables access logs, and has a standard-library healthcheck. +- `compose.yaml`, `.dockerignore`, and `.gitignore` are present. +- `README.md` supplies reproducible validation commands and documents ephemeral single-process limitations. -## Known operational limitations +## Required validator follow-up -State is memory-only and disappears on process exit. The lock coordinates coroutines -inside one process only. The container intentionally starts one worker; multiple -workers or replicas do not share monitors. DNS is checked on each redirect hop, while -network egress policy remains necessary to close DNS-rebinding/TOCTOU risk fully. No -authentication, scheduler, persistence, or cross-process readiness dependency is in -scope. +Run the sequence in the README in a clean Python 3.12 environment with Docker. A failing command must supersede this unexecuted report. In particular, validate dependency resolution for the target platform and perform an egress-controlled security review before production use. + +## In-memory limitation + +A restart drops every monitor and status. Multiple workers or replicas diverge because each owns a separate store. The included container therefore uses one worker; availability, persistence, and horizontal scaling require a shared durable store that is intentionally outside this service contract.