Tags give the ability to mark specific points in history as being important
-
stable-py-v0.6.1
cbcc4223 · ·Stability checkpoint Python — icons + SLO + 5 ADRs + LICENSE Achievements vs stable-py-v0.6.0 : - Blue homogeneous icon (radar arcs were yellow → match Python blue) - README rewrite : hiring TL;DR + SLO badge + Sloth in tech stack - 3 SLOs as code (Sloth) : availability 99% / latency p99 / enrichment 99.5% - Generated PrometheusRule + Sloth wrap-as-prometheusrule.py script - 5 new ADRs : 0008 async-first, 0009 uv, 0010 SQLAlchemy async, 0011 hypothesis, 0012 Sloth SLO - BSD-3-Clause LICENSE - TASKS.md SLO + README polish backlog refreshed Validation : main pipeline #81 green - ruff:lint + mypy + import-linter ✓ - unit-tests 127 passing, cov 90.21% ✓ - pip-audit clean ✓ - benchmarks (allow_failure ; 6 hot paths run) - integration-tests (allow_failure ; testcontainers)
-
stable-py-v0.6.0
1d4a380c · ·Stability checkpoint Python — industrial baseline Achievements vs stable-py-v0.5.0 : - ADR-0007 industrial Python practices : 13 decisions documented + applied - Type max : Final/Literal/TypeAlias (PEP 695) across all modules - Coverage 83.55% → 90.21% (127 tests, was 98) + cov-fail-under=90 gate - Hypothesis property-based tests (8) on JWT round-trip / DTO bounds / LIFO buffer - import-linter : 4 architectural contracts (config-leaf, db↔kafka indep, integration adapters, observability-leaf) - pytest-benchmark : 6 hot-path microbenchmarks (JWT 9µs, bcrypt 280ms) - Pydantic models for Todo / OllamaResponse (was dict aliases) - pip-audit CVE gate : 3 CVEs fixed (pytest 9.0.3, fastapi 0.136.1, starlette 1.0.0) - mutmut configured (CI blocked on upstream bug) - kafka_client integration tests (5) via testcontainers - renovate.json : Python flavor (FastAPI/Pydantic/SQLAlchemy/OTel groups) CI/runner : - group-level gitlab-runner (52880082) replaces 2 project-level java/ui runners - Python default_branch corrected dev → main (root cause of missing post-merge pipelines) - check-default-branch.sh + runner healthcheck cron in shared submodule - All 4 mirador1 pipelines green Validation : pipeline #70 main green (cov 90.29%, 127 tests, mypy strict ✓)
-
stable-v0.5.0
77a40522 · ·Stability checkpoint v0.5 — wave 6 (mirador-service-shared submodule) - Submodule infra/shared/ pointing at mirador-service-shared (b1e9631) - 14 shared files vendored : compose/dev-stack + bin/{budget,cluster/ovh,launchd,dev,ship} + deploy/compose/{observability,runner} + infra/observability/otelcol-override + ci-templates + .gitleaks + renovate - Sibling svc renamed mirador-service → mirador-service-java (GitLab + GitHub + local + plist path + global CLAUDE.md) - Lefthook commit-msg fix : use {1} placeholder (was $1, broken) - ADR-0001 in shared : decision rationale + alternatives a/b/c/d Quality : 95 tests · ruff ✅ · mypy strict ✅ · coverage 83.77 %. -
stable-v0.4.0
c4c60578 · ·Stability checkpoint v0.4 — Python 3.14 + mkdocs autodoc + Pages - Python 3.13 → 3.14 (latest GA, oct 2025) - Pydantic 2.11 (3.14 wheel support) - ruff 0.15 (py314 target) + mypy 1.20 - Drop Py3.11 from compat matrix (EOL Oct 2027) - mkdocs-material doc site + autodoc via mkdocstrings - GitLab Pages CI publishes https://mirador1.gitlab.io/mirador-service-python/ Quality : 95 tests · ruff ✅ · mypy strict ✅ · coverage 83.77 %.
-
stable-v0.3.0
e2f69cd5 · ·Stability checkpoint v0.3 — wave 4 (gap fill 7/8) Closes 7 of 8 Java parity gaps : - Audit endpoint /customers/{id}/audit - Quality endpoint /actuator/quality - Diagnostic scenarios (slow-query / db-failure / kafka-timeout) - Kafka fire-and-forget (CustomerCreatedEvent) - SonarCloud CI integration + sonar-project.properties - Multi-arch Docker (amd64 + arm64) - GitHub mirror live (mirador1/mirador-service-python) - Deployment CI (staging auto + prod manual) - Lefthook hooks (commit-msg + pre-commit + pre-push) Remaining gap : Bio service (deferred — needs Ollama in compose). Quality : 95 tests · ruff ✅ · mypy strict ✅ · coverage 83.77 %. -
stable-v0.2.0
2c6992f4 · ·Stability checkpoint v0.2 — wave 3 (Étapes 11-15) - Étape 11 : Refresh-token cleanup APScheduler cron + 5 tests - Étape 12 : Rate-limit Redis backend (SlowAPI multi-replica safe) - Étape 13 : Docker image audit (412 MB ; alpine blocked by pydantic_core) - Étape 14 : k8s manifests (7 resources : Deployment/Service/ConfigMap/Secret/SA/HPA/PDB) - Étape 15 : integration-tests CI fallback (docker:dind + postgres services) - Bonus : blue watchtower icon for GitLab project avatar Quality : 87 tests · ruff ✅ · mypy strict ✅ · coverage 82.46 %. Anchored on local validation (Python repo default_branch=dev, no main pipeline to wait for). See : https://gitlab.com/mirador1/mirador-service-python
-
stable-v0.1.0
b3e0469a · ·Stability checkpoint — first Python mirror baseline (waves 1-9 + wave 2) Initial scaffolding waves of mirador-service-python (Python mirror of the Java mirador-service). Waves shipped (per ADR-0001 stack choice) : - Étape 1 : pyproject + Dockerfile + .gitlab-ci modular - Étape 2 : customer CRUD (v1/v2 dispatch via X-API-Version) + 12 tests - Étape 3 : actuator + Redis recent-buffer + 12 tests - Étape 4 : Kafka request-reply broker + 10 tests + ADR-0004 - Étape 5 : OpenTelemetry SDK + auto-instrumentation + ADR-0003 - Étape 6 : Alembic V1 migration + 3 tests + workflow doc - Étape 7 : docker-compose dev stack + bin/ ops scripts - Étape 8 : middleware (structlog + request-id + CORS + slowapi) + ADRs 0002 + 0004 - Étape 9 : coverage gate 65 → 80 (baseline 84% via greenlet hook) - Wave 2 : /todos endpoint + /auth/me + service.namespace OTel attr + ADRs 0005 + 0006 + testcontainers integration scaffold Quality gate : 82 tests passing · ruff ✅ · mypy strict ✅ · coverage 83.42 % (unit) · 4 integration tests scaffolded (opt-in via pytest -m integration). NOTE on the 'wait for post-merge main pipeline' rule from ~/.claude/CLAUDE.md : this Python repo's default_branch is dev (not main), so workflow rules trigger only on dev pushes. No main pipeline exists to wait for. First tag is anchored on local validation (82 tests + ruff + mypy clean) ; future tags will wait for green dev pipeline pre-merge once the runner is back online. See : https://gitlab.com/mirador1/mirador-service-python