From 535608bc8dd5e466af4ce588056d5f9a79eddf14 Mon Sep 17 00:00:00 2001 From: Artur Shiriev Date: Mon, 13 Jul 2026 11:29:51 +0300 Subject: [PATCH] docs(profile): reconcile 12 blurbs with the canonical one-liners An audit of all 26 repos' three metadata surfaces (GitHub description, pyproject description, profile blurb) found 12 out of sync. For the 10 where GitHub and pyproject already agree, the profile blurb is brought to their shared wording; for the 2 templates, where all three differed, the GitHub wording (the most complete) becomes canonical here. The two templates' pyproject descriptions are aligned in separate repo PRs. Co-Authored-By: Claude Opus 4.8 (1M context) --- ...026-07-13.02-metadata-consistency-sweep.md | 55 +++++++++++++++++++ profile/README.md | 24 ++++---- 2 files changed, 67 insertions(+), 12 deletions(-) create mode 100644 planning/changes/2026-07-13.02-metadata-consistency-sweep.md diff --git a/planning/changes/2026-07-13.02-metadata-consistency-sweep.md b/planning/changes/2026-07-13.02-metadata-consistency-sweep.md new file mode 100644 index 0000000..1dfe864 --- /dev/null +++ b/planning/changes/2026-07-13.02-metadata-consistency-sweep.md @@ -0,0 +1,55 @@ +--- +summary: Reconcile the three metadata surfaces across the org — bring 12 profile-README blurbs into line with the canonical GitHub/pyproject one-liners, and align the two templates' pyproject descriptions to their GitHub wording. +--- + +# Change: Metadata-consistency sweep across the org + +**Lane:** lightweight — the in-repo part is one file (`profile/README.md`, 12 +blurb edits). The two template `pyproject.toml` edits ship as separate one-line +PRs in their own repos. + +## Goal + +The org convention keeps one canonical one-liner per repo across three surfaces: +the GitHub description, the pyproject `description`, and the `profile/README.md` +blurb. An audit of all 26 repos found 12 out of sync. This change reconciles them. + +## Approach + +The audit found two failure shapes: + +- **Group A (10 repos):** GitHub description and pyproject `description` already + agree; only the profile blurb diverges. Fix: rewrite the profile blurb to the + wording the other two already share (GitHub + pyproject are the two-thirds + majority, so they define canonical). Repos: `eof-fixer`, + `faststream-concurrent-aiokafka`, `faststream-outbox`, `faststream-redis-timers`, + `httpware`, `lite-bootstrap`, `modern-di`, `modern-di-pytest`, `semvertag`, + `that-depends`. +- **Group B (2 templates):** all three surfaces disagree. The GitHub wording is + the most complete (names Docker, PostgreSQL, and DI), so it becomes canonical. + Fix: update the profile blurb (here) and the pyproject `description` (a PR in + each template repo) to the GitHub wording. Repos: + `fastapi-sqlalchemy-template`, `litestar-sqlalchemy-template`. + +The 14 already-consistent repos (`compose2pod`, `db-retry`, and the twelve +`modern-di integration for X` integrations) are untouched. + +`architecture/org-profile.md` already states the `What it is` column "carries the +canonical ≤120-char one-liner (one of the three metadata surfaces kept consistent +across GitHub description, pyproject `description`, and this blurb)" — this change +makes that claim true, so the doc needs no edit. + +## Files + +- `profile/README.md` — 12 `What it is` cells rewritten to canonical. +- (separate repos) `fastapi-sqlalchemy-template/pyproject.toml`, + `litestar-sqlalchemy-template/pyproject.toml` — `description` → GitHub wording. + +## Verification + +- [ ] Every rewritten profile blurb equals the repo's GitHub description + character-for-character (`gh repo view` comparison). +- [ ] All 12 canonical strings are ≤120 chars, carry no trailing period, and + contain no `|` (would break the table). +- [ ] `just check-planning` — clean. +- [ ] Both template `pyproject.toml` descriptions match their GitHub description. diff --git a/profile/README.md b/profile/README.md index 6f592b2..63ec309 100644 --- a/profile/README.md +++ b/profile/README.md @@ -16,14 +16,14 @@ Open-source templates and libraries for building production-ready Python applica | Project | What it is | Stars | Badges | |---|---|---|---| -| [`fastapi-sqlalchemy-template`](https://github.com/modern-python/fastapi-sqlalchemy-template) | Dockerized web application with DI on FastAPI, SQLAlchemy 2, PostgreSQL | [![Stars](https://img.shields.io/github/stars/modern-python/fastapi-sqlalchemy-template)](https://github.com/modern-python/fastapi-sqlalchemy-template/stargazers) | ![Template](https://img.shields.io/badge/type-template-blue) | -| [`litestar-sqlalchemy-template`](https://github.com/modern-python/litestar-sqlalchemy-template) | Dockerized web application on Litestar, SQLAlchemy 2, PostgreSQL | [![Stars](https://img.shields.io/github/stars/modern-python/litestar-sqlalchemy-template)](https://github.com/modern-python/litestar-sqlalchemy-template/stargazers) | ![Template](https://img.shields.io/badge/type-template-blue) | +| [`fastapi-sqlalchemy-template`](https://github.com/modern-python/fastapi-sqlalchemy-template) | Dockerized FastAPI + SQLAlchemy 2 + PostgreSQL app template with DI | [![Stars](https://img.shields.io/github/stars/modern-python/fastapi-sqlalchemy-template)](https://github.com/modern-python/fastapi-sqlalchemy-template/stargazers) | ![Template](https://img.shields.io/badge/type-template-blue) | +| [`litestar-sqlalchemy-template`](https://github.com/modern-python/litestar-sqlalchemy-template) | Dockerized Litestar + SQLAlchemy 2 + PostgreSQL app template with DI | [![Stars](https://img.shields.io/github/stars/modern-python/litestar-sqlalchemy-template)](https://github.com/modern-python/litestar-sqlalchemy-template/stargazers) | ![Template](https://img.shields.io/badge/type-template-blue) | ### Dependency injection | Project | What it is | Stars | Downloads | |---|---|---|---| -| [`modern-di`](https://github.com/modern-python/modern-di) | Powerful DI framework with scopes | [![Stars](https://img.shields.io/github/stars/modern-python/modern-di)](https://github.com/modern-python/modern-di/stargazers) | [![Downloads](https://static.pepy.tech/badge/modern-di/month)](https://pepy.tech/projects/modern-di) | +| [`modern-di`](https://github.com/modern-python/modern-di) | Powerful dependency-injection framework with IoC container and scopes | [![Stars](https://img.shields.io/github/stars/modern-python/modern-di)](https://github.com/modern-python/modern-di/stargazers) | [![Downloads](https://static.pepy.tech/badge/modern-di/month)](https://pepy.tech/projects/modern-di) | | [`modern-di-aiogram`](https://github.com/modern-python/modern-di-aiogram) | modern-di integration for aiogram | [![Stars](https://img.shields.io/github/stars/modern-python/modern-di-aiogram)](https://github.com/modern-python/modern-di-aiogram/stargazers) | [![Downloads](https://static.pepy.tech/badge/modern-di-aiogram/month)](https://pepy.tech/projects/modern-di-aiogram) | | [`modern-di-aiohttp`](https://github.com/modern-python/modern-di-aiohttp) | modern-di integration for aiohttp | [![Stars](https://img.shields.io/github/stars/modern-python/modern-di-aiohttp)](https://github.com/modern-python/modern-di-aiohttp/stargazers) | [![Downloads](https://static.pepy.tech/badge/modern-di-aiohttp/month)](https://pepy.tech/projects/modern-di-aiohttp) | | [`modern-di-arq`](https://github.com/modern-python/modern-di-arq) | modern-di integration for arq | [![Stars](https://img.shields.io/github/stars/modern-python/modern-di-arq)](https://github.com/modern-python/modern-di-arq/stargazers) | [![Downloads](https://static.pepy.tech/badge/modern-di-arq/month)](https://pepy.tech/projects/modern-di-arq) | @@ -33,21 +33,21 @@ Open-source templates and libraries for building production-ready Python applica | [`modern-di-flask`](https://github.com/modern-python/modern-di-flask) | modern-di integration for Flask | [![Stars](https://img.shields.io/github/stars/modern-python/modern-di-flask)](https://github.com/modern-python/modern-di-flask/stargazers) | [![Downloads](https://static.pepy.tech/badge/modern-di-flask/month)](https://pepy.tech/projects/modern-di-flask) | | [`modern-di-grpc`](https://github.com/modern-python/modern-di-grpc) | modern-di integration for gRPC | [![Stars](https://img.shields.io/github/stars/modern-python/modern-di-grpc)](https://github.com/modern-python/modern-di-grpc/stargazers) | [![Downloads](https://static.pepy.tech/badge/modern-di-grpc/month)](https://pepy.tech/projects/modern-di-grpc) | | [`modern-di-litestar`](https://github.com/modern-python/modern-di-litestar) | modern-di integration for Litestar | [![Stars](https://img.shields.io/github/stars/modern-python/modern-di-litestar)](https://github.com/modern-python/modern-di-litestar/stargazers) | [![Downloads](https://static.pepy.tech/badge/modern-di-litestar/month)](https://pepy.tech/projects/modern-di-litestar) | -| [`modern-di-pytest`](https://github.com/modern-python/modern-di-pytest) | modern-di integration for pytest | [![Stars](https://img.shields.io/github/stars/modern-python/modern-di-pytest)](https://github.com/modern-python/modern-di-pytest/stargazers) | [![Downloads](https://static.pepy.tech/badge/modern-di-pytest/month)](https://pepy.tech/projects/modern-di-pytest) | +| [`modern-di-pytest`](https://github.com/modern-python/modern-di-pytest) | Pytest integration for modern-di — turn DI dependencies into fixtures | [![Stars](https://img.shields.io/github/stars/modern-python/modern-di-pytest)](https://github.com/modern-python/modern-di-pytest/stargazers) | [![Downloads](https://static.pepy.tech/badge/modern-di-pytest/month)](https://pepy.tech/projects/modern-di-pytest) | | [`modern-di-starlette`](https://github.com/modern-python/modern-di-starlette) | modern-di integration for Starlette | [![Stars](https://img.shields.io/github/stars/modern-python/modern-di-starlette)](https://github.com/modern-python/modern-di-starlette/stargazers) | [![Downloads](https://static.pepy.tech/badge/modern-di-starlette/month)](https://pepy.tech/projects/modern-di-starlette) | | [`modern-di-taskiq`](https://github.com/modern-python/modern-di-taskiq) | modern-di integration for taskiq | [![Stars](https://img.shields.io/github/stars/modern-python/modern-di-taskiq)](https://github.com/modern-python/modern-di-taskiq/stargazers) | [![Downloads](https://static.pepy.tech/badge/modern-di-taskiq/month)](https://pepy.tech/projects/modern-di-taskiq) | | [`modern-di-typer`](https://github.com/modern-python/modern-di-typer) | modern-di integration for Typer | [![Stars](https://img.shields.io/github/stars/modern-python/modern-di-typer)](https://github.com/modern-python/modern-di-typer/stargazers) | [![Downloads](https://static.pepy.tech/badge/modern-di-typer/month)](https://pepy.tech/projects/modern-di-typer) | -| [`that-depends`](https://github.com/modern-python/that-depends) | Predecessor DI framework, still actively maintained | [![Stars](https://img.shields.io/github/stars/modern-python/that-depends)](https://github.com/modern-python/that-depends/stargazers) | [![Downloads](https://static.pepy.tech/badge/that-depends/month)](https://pepy.tech/projects/that-depends) | +| [`that-depends`](https://github.com/modern-python/that-depends) | Simple, typed dependency-injection framework for Python | [![Stars](https://img.shields.io/github/stars/modern-python/that-depends)](https://github.com/modern-python/that-depends/stargazers) | [![Downloads](https://static.pepy.tech/badge/that-depends/month)](https://pepy.tech/projects/that-depends) | ### Microservices, HTTP & messaging | Project | What it is | Stars | Downloads | |---|---|---|---| -| [`lite-bootstrap`](https://github.com/modern-python/lite-bootstrap) | Lightweight package for bootstrapping new microservices | [![Stars](https://img.shields.io/github/stars/modern-python/lite-bootstrap)](https://github.com/modern-python/lite-bootstrap/stargazers) | [![Downloads](https://static.pepy.tech/badge/lite-bootstrap/month)](https://pepy.tech/projects/lite-bootstrap) | -| [`httpware`](https://github.com/modern-python/httpware) | HTTP client framework with sync/async clients, middleware chain, and built-in resilience (retry, bulkhead) | [![Stars](https://img.shields.io/github/stars/modern-python/httpware)](https://github.com/modern-python/httpware/stargazers) | [![Downloads](https://static.pepy.tech/badge/httpware/month)](https://pepy.tech/projects/httpware) | -| [`faststream-redis-timers`](https://github.com/modern-python/faststream-redis-timers) | FastStream broker integration for Redis-backed distributed timer scheduling | [![Stars](https://img.shields.io/github/stars/modern-python/faststream-redis-timers)](https://github.com/modern-python/faststream-redis-timers/stargazers) | [![Downloads](https://static.pepy.tech/badge/faststream-redis-timers/month)](https://pepy.tech/projects/faststream-redis-timers) | -| [`faststream-concurrent-aiokafka`](https://github.com/modern-python/faststream-concurrent-aiokafka) | Concurrent message processing middleware for FastStream with aiokafka | [![Stars](https://img.shields.io/github/stars/modern-python/faststream-concurrent-aiokafka)](https://github.com/modern-python/faststream-concurrent-aiokafka/stargazers) | [![Downloads](https://static.pepy.tech/badge/faststream-concurrent-aiokafka/month)](https://pepy.tech/projects/faststream-concurrent-aiokafka) | -| [`faststream-outbox`](https://github.com/modern-python/faststream-outbox) | FastStream broker integration for the transactional outbox pattern with Postgres | [![Stars](https://img.shields.io/github/stars/modern-python/faststream-outbox)](https://github.com/modern-python/faststream-outbox/stargazers) | [![Downloads](https://static.pepy.tech/badge/faststream-outbox/month)](https://pepy.tech/projects/faststream-outbox) | +| [`lite-bootstrap`](https://github.com/modern-python/lite-bootstrap) | Lightweight bootstrap for production-ready Python microservices | [![Stars](https://img.shields.io/github/stars/modern-python/lite-bootstrap)](https://github.com/modern-python/lite-bootstrap/stargazers) | [![Downloads](https://static.pepy.tech/badge/lite-bootstrap/month)](https://pepy.tech/projects/lite-bootstrap) | +| [`httpware`](https://github.com/modern-python/httpware) | Python HTTP client framework with sync & async clients and built-in resilience | [![Stars](https://img.shields.io/github/stars/modern-python/httpware)](https://github.com/modern-python/httpware/stargazers) | [![Downloads](https://static.pepy.tech/badge/httpware/month)](https://pepy.tech/projects/httpware) | +| [`faststream-redis-timers`](https://github.com/modern-python/faststream-redis-timers) | FastStream integration for Redis-backed distributed timer scheduling | [![Stars](https://img.shields.io/github/stars/modern-python/faststream-redis-timers)](https://github.com/modern-python/faststream-redis-timers/stargazers) | [![Downloads](https://static.pepy.tech/badge/faststream-redis-timers/month)](https://pepy.tech/projects/faststream-redis-timers) | +| [`faststream-concurrent-aiokafka`](https://github.com/modern-python/faststream-concurrent-aiokafka) | Concurrent message-processing middleware for FastStream + aiokafka | [![Stars](https://img.shields.io/github/stars/modern-python/faststream-concurrent-aiokafka)](https://github.com/modern-python/faststream-concurrent-aiokafka/stargazers) | [![Downloads](https://static.pepy.tech/badge/faststream-concurrent-aiokafka/month)](https://pepy.tech/projects/faststream-concurrent-aiokafka) | +| [`faststream-outbox`](https://github.com/modern-python/faststream-outbox) | FastStream transactional-outbox integration backed by a Postgres table | [![Stars](https://img.shields.io/github/stars/modern-python/faststream-outbox)](https://github.com/modern-python/faststream-outbox/stargazers) | [![Downloads](https://static.pepy.tech/badge/faststream-outbox/month)](https://pepy.tech/projects/faststream-outbox) | ### Utilities @@ -55,8 +55,8 @@ Open-source templates and libraries for building production-ready Python applica |---|---|---|---| | [`compose2pod`](https://github.com/modern-python/compose2pod) | Convert a Docker Compose file into a script that runs its services as a single Podman pod | [![Stars](https://img.shields.io/github/stars/modern-python/compose2pod)](https://github.com/modern-python/compose2pod/stargazers) | [![Downloads](https://static.pepy.tech/badge/compose2pod/month)](https://pepy.tech/projects/compose2pod) | | [`db-retry`](https://github.com/modern-python/db-retry) | Retry helpers for PostgreSQL / SQLAlchemy database operations | [![Stars](https://img.shields.io/github/stars/modern-python/db-retry)](https://github.com/modern-python/db-retry/stargazers) | [![Downloads](https://static.pepy.tech/badge/db-retry/month)](https://pepy.tech/projects/db-retry) | -| [`eof-fixer`](https://github.com/modern-python/eof-fixer) | Automatically fix newlines at the end of files | [![Stars](https://img.shields.io/github/stars/modern-python/eof-fixer)](https://github.com/modern-python/eof-fixer/stargazers) | [![Downloads](https://static.pepy.tech/badge/eof-fixer/month)](https://pepy.tech/projects/eof-fixer) | -| [`semvertag`](https://github.com/modern-python/semvertag) | Auto-tag your GitHub/GitLab repo with semantic version tags from CI | [![Stars](https://img.shields.io/github/stars/modern-python/semvertag)](https://github.com/modern-python/semvertag/stargazers) | [![Downloads](https://static.pepy.tech/badge/semvertag/month)](https://pepy.tech/projects/semvertag) | +| [`eof-fixer`](https://github.com/modern-python/eof-fixer) | CLI tool that ensures text files end with exactly one newline | [![Stars](https://img.shields.io/github/stars/modern-python/eof-fixer)](https://github.com/modern-python/eof-fixer/stargazers) | [![Downloads](https://static.pepy.tech/badge/eof-fixer/month)](https://pepy.tech/projects/eof-fixer) | +| [`semvertag`](https://github.com/modern-python/semvertag) | Auto-tag GitHub & GitLab repos with semantic version tags from CI | [![Stars](https://img.shields.io/github/stars/modern-python/semvertag)](https://github.com/modern-python/semvertag/stargazers) | [![Downloads](https://static.pepy.tech/badge/semvertag/month)](https://pepy.tech/projects/semvertag) | ### Support