Tags

Tags give the ability to mark specific points in history as being important
  • stable-py-v0.6.1

    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

    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

    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

    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

    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

    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

    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