Cookiebot
Progress

Progress board

Where the v1 to v2 port stands — measured from the spec, the scenario files and a real test run

Everything below is generated by python scripts/cb.py docs-sync, which reads the migration spec (scripts/spec.py), counts the Gherkin scenarios in the v1 QA repository and in qa/features/, and runs the offline suite. No number here was typed by a person.

Features ported
66/66 · 100%
Done 66Partial 0Planned 0Blocked 0
v1 specs covered
31/31
spec files with an executable scenario · 63 v1 scenarios written
Scenarios green
369
executed and passing · 174 ported from v1 specs
Scenarios failing
0
nothing red
New v2 specs
114
no v1 equivalent

Offline suite at generation time: 2 failed, 3445 passed, 44 skipped, 232 deselected, 2 warnings in 32.19s. Measured from commit 1aa8c83 on 2026-08-30.

Milestones

A milestone is a shipping unit, not a calendar date: M1 is "the bot can survive in a group unattended", M2 is "the commands people actually use every day".

M0 Skeleton, observability, storage, LLM, self-hosted API
9/9
M1 Survival core — moderation, config, captcha, tenancy
16/16
M2 Fun and utility commands
15/15
M3 Publisher, AI, giveaways, owner tooling
19/19
M4 Analytics surface, web console, data migration
7/7

Consistency

The spec says what should be true; the suite measures what is. Where they disagree, the disagreement is the report — a done row with no passing scenario is a claim, and this is where claims get checked. cb.py status --check fails CI on the same list.

No inconsistencies. Every feature marked done has a ported, passing scenario, and every QA spec has a row in scripts/spec.py.

Everything, in one table

FeatureStatusMilestoneLayerScenariosTriggers
Workspace, 3 services, CI
platform_skeleton
DoneM0platform—
—
OTel traces, Prometheus, structlog
platform_observability
DoneM0platform—
—
Citus schema, colocation, UUIDv7
platform_citus
DoneM0platform—
—
Compiled hot path with benchmark gate
platform_cython
DoneM0platform—
—
Mock Telegram + executable Gherkin
platform_qa_harness
DoneM0platform—
—
Blob storage: GCS, S3, local, memory
platform_storage
DoneM0core—
—
Multi-provider LLM with configurable models
platform_llm
DoneM0core—
—
Self-hosted Telegram Bot API server
platform_selfhosted_api
DoneM0gateway—
—
Multi-tenant registry and schema
platform_tenancy
DoneM1core—
—
String catalog ported from v1 locales
platform_locales
DoneM1core—
—
Group config repository with shared cache
platform_group_config
DoneM1core—
—
Admin resolution and cache
platform_admin_resolution
DoneM1core—
—
Mongo -> Citus backfill
platform_migration_etl
DoneM4worker—
—
Health check from chat
util_isalive
DoneM0gateway4 green
/isalive/tavivo
List available commands
core_listcommand
DoneM1gateway6 green
/commands/comandos
Privacy policy
core_privacy
DoneM1gateway8 green
/privacy/privacidade/privacidad
Reload cached admins and settings
core_reload
DoneM1gateway3 green
/reload/recarregar
Group rules and /newrules
core_rules
DoneM1gateway14 green
/rules/regras/newrules/novasregras
Welcome message and /newwelcome
core_welcome
DoneM1gateway18 green
/newwelcome/novobemvindo
Join captcha
core_groupguardian
DoneM1gateway9 green
—
Anti sticker spam
core_stickerspam
DoneM1gateway9 green
—
Media restriction for new members
core_mediarestrict
DoneM1gateway9 green
—
Admin configuration menu
util_config
DoneM1gateway6 green
/config/configure/configurar
Block listed users from joining
util_doomlist
DoneM1gateway4 green
—
Language selection
core_setlang
DoneM1gateway8 green
—
Per-event bot skins
core_botskins
DoneM1gateway5 green
—
Roll an n-sided die
fun_dice
DoneM2gateway9 green
/dice/dado/d20
Ship two members
fun_ship
DoneM2gateway8 green
/ship/shippar/shipp
Random cause of death
fun_death
DoneM2gateway8 green
/death/morte/muerte
Meme generator
fun_meme
DoneM2worker4 green
/meme
Battle poll
fun_battle
DoneM2gateway10 green
/battle/batalha/batalla
Random media from the group
fun_random
DoneM2gateway33 green
/random/aleatorio
Firecracker sequence
fun_firecracker
DoneM2gateway2 green
/firecracker/rojao/fogos
Complaint bit
fun_complaint
DoneM2gateway4 green
/complaint/milton/reclamacao/reclamação/queja
Partnered convention posters
fun_partneredcons
DoneM2gateway10 green
/bff/patas/fursmeet/trex/furcamp/pawstral
Today's birthdays
util_birthday
DoneM2worker3 green
/birthday/aniversario/cumpleanos
Upcoming birthdays
util_nextbirthday
DoneM2gateway2 green
/nextbirthday/proximosaniversarios
Ping every member
util_everyone
DoneM2worker3 green
/everyone@everyone
Call the admins
util_calladms
DoneM2worker7 green
/adm@admin/report
Rewrite social links
util_embedder
DoneM2gateway16 green
—
YouTube search
util_youtube
DoneM2worker1 green
/youtube
Identify music in voice notes
core_musicdetection
DoneM3worker5 green
—
Cross-group post forwarding
util_postforwarder
DoneM3worker8 green
/divulgar/publish/publicar/repost/repostar/reenviar
Receive forwarded posts
util_postgetter
DoneM3gateway4 green
—
Delete scheduled reposts
util_deletereposts
DoneM3gateway2 green
/deletereposts/deleteposts/apagarposts
Giveaways
x_giveaways
DoneM3gateway10 green
/giveaway
Conversational AI replies
x_conversational_ai
DoneM3gateway7 green
—
Voice transcription
x_speech_to_text
DoneM3gateway6 green
/transcribe/transcrever/transcribir
Reverse image search
x_reverse_search
DoneM3worker6 green
/searchsource/buscarfonte/buscarfuente
Media distortion
x_distortion
DoneM3worker12 green
/destroy/zoar/destruir
Owner-only operations
x_owner_commands
DoneM3gateway9 green
/grupos/groups/broadcast/leave/blacklist/unblacklist/stop/restart
Per-group custom commands
x_custom_commands
DoneM3gateway6 green
—
Age guess (agify.io)
x_age_guess
DoneM3gateway7 green
/idade/age/edad
Gender guess (genderize.io)
x_gender_guess
DoneM3gateway8 green
/genero/gênero/gender
Unearth a random old message
x_unearth
DoneM3gateway6 green
/desenterrar/unearth
Fortune cookie
x_fortune_cookie
DoneM3gateway5 green
/sorte/fortunecookie/suerte
Image search (v1's catch-all)
x_image_search
DoneM3gateway10 green
/qualquercoisa/anything/cualquiercosa
Drawing idea prompt
x_drawing_idea
DoneM3gateway5 green
/ideiadesenho/drawingidea/ideadibujo
Message analysis (reply_to_message dump)
x_analysis
DoneM3gateway7 green
/analise/analisis/analysis
Sticker DB auto-reply
x_sticker_autoreply
DoneM3gateway6 green
—
Telegram-login JWT for the web console
x_webhub_login
DoneM4api—
—
Per-group analytics endpoints
x_analytics_api
DoneM4api—
—
OAuth2 token issuer for the Telegram Mini App
x_miniapp_auth
DoneM4api—
—
Group settings over HTTP, admin-gated
x_group_config_api
DoneM4api—
—
Fleet-wide analytics and the group directory, owners only
x_admin_api
DoneM4api—
—
Per-group audit trail
x_audit_log
DoneM4api—
—

On this page