Hito activo: Septiembre
Última sincronización: 2026-09-28 (auto via GitHub Action — no editar a mano). Deadline: 2026-09-15 · -13 días restantes Repo:
gala1234/thefittclub
Estado del hito
████████████████████ 99% (875.5/888 pts)
| Métrica | Valor |
|---|---|
| Tickets totales | 313 (306 done · 0 en vuelo · 7 pending) |
| Puntos restantes | 12.5 pts |
| ETA (early) | 2026-10-05 (1 semana) |
| ETA (late, +50%) | 2026-10-08 |
| Fuente velocity | calendar (pts/wk) · 76.13 pts/week (n=141) · semanas de calendario, últimas 4 semanas cerradas |
| Coste por ticket (no es ritmo) | 6.2 h/pt de reloj abierto·cerrado (n=453) |
| Velocity calendar | 76.13 pts/week (n=141, last 4 wks) |
| ¿Llega a deadline? | ⚠️ En riesgo (ETA early 20 días después de deadline) |
🧭 Orden de ejecución (brújula)
Espejo del bloque
compass:septiembredel board (_docs/03-tickets/00-board.md). Editar allí, no aquí.
🧭 Septiembre — orden de ejecución (brújula, refrescada 2026-09-21 tras la poda del backlog). Norte, cumplido en su primera mitad: la oleada salió el 17-09 por el grupo de WhatsApp con la dirección
app.thefittclub.com; las tres pantallas del primer día (T699panel,T670cierre,T581evaluación) cerraron con veredicto de comprensión. Lo que manda ahora es la segunda mitad, que ningún criterio de salida escribió: de las 19 que entraron ese día, 18 no han entrenado.MEDIDO EL 17-09 121 socias legacy · 65 con acceso · 19 primeros accesos en un día (antes: 0) · 2 entrenaron LA PODA DEL 21-09 233 pendientes leídos uno a uno: 7 muertos · 4 duplicados · 39 mal etiquetados · 183 vivos — **APLICADA el mismo día** (su go: `implementa todos estos cambios`) informe con la prueba de cada fila: _docs/03-tickets/_nightly-audit/2026-09-21-backlog-pruning.md y su lectura en el vault: 100_Desarrollo/03_Priorizacion_Backlog.md QUEDAN EN SEPTIEMBRE 9 — los ocho que una socia migrada ve o sufre HOY, más T803 (activación), abierto en la poda SALEN (hecho) → Beta: T326 T574 T587 T591 T723 T727 T745 T794 T797 T798 T800 · → Producción: T724 T796 T799 T801 T802
- Los ocho que se quedan, en este orden.
T588(M) — cerrar sesión no cierra nada; una cookie revocada sigue entrando siete días,/adminincluido. Es el P1 sobre cuentas vivas y tu decisión del 15-09: el único de seguridad que no espera. Toca auth: go explícito tuyo al activar. ·T773(S) — el siguiente de la secuencia que fijaste el 17-09 (T771→T703→ T773): seis de siete eventos no distinguen migrada de nueva; es la única forma de saber qué pasó con las 18. ·T777(S) — un login que falla en la red no dice nada; un iPhone real el 18-09 en la puerta por la que pasan todas. ·T775(M) — quince pantallas de error en treinta días delante de socias y Sentry solo guardaUnknownError; diagnóstico primero. ·T790(M) — las de F2/F3 perdieron «Ronda N de M» desde la migración 0094. ·T627(S) — cinco fichas Legacy piden un número que el clip contradice; necesita tus cinco dictámenes. ·T774(S) —/es/soportele vende el método a quien ya pagó. ·T387(M) — la encuesta de Semana 0 aplicada al motor de ~14 socias, con su consentimiento.T803sale de septiembre → Beta (2026-09-24, tu decisión). Tu criterio, que corrige el norte de esta brújula: las socias legacy usan la app según vean, sin empujar a las ~100 — las dudas llegan a tu teléfono personal. Te bastan 5-10 que la usen por su cuenta y te den feedback. «18 de 19 no han entrenado» deja de leerse como un problema a resolver. Orden de ahora:T588· una rama conT777+T738+T732·T773· yT584(el dominio:wwwmuestra «Plan Expired»).- Las tres decisiones, tomadas el 21-09 con el voto del arquitecto y de la PM (informe § 10): (1)
T54sale del camino deT20: lanzamiento solo en euros, T20 se queda la columna de moneda, T54 → Producción con disparador «primera compradora fuera del euro». (2) El ticket de activación se abre ya (T803), con T773 como su medición y no como precondición. (3) La regla de entrada «un hallazgo no es un ticket» está en el harness (00-new-ticket.mdPaso 0, PR #1812 fusionada) con su plantilla de ledger en_docs/ops/. Y T29 se parte: el presupuesto de rendimiento esT804(S, Beta).- Cerrado desde la brújula del 11-09:
T699T670T581T386T771T703T730T772(anulado, absorbido en T386)T569T614T785T786. Ya no queda nada de la oleada por enviar; lo que queda es que entrenen.
Carga de trabajo
| Effort | Tickets | Pts | Detalle |
|---|---|---|---|
| XS | 1 | 0.5 pts | T807 |
| S | 3 | 3 pts | T627 · T774 · T777 |
| M | 3 | 9 pts | T387 · T588 · T790 |
Contenido real por producto
Derivado del código en cada corrida — la fase cuenta como contenido REAL solo si existe
drizzle/seeds/catalog/products/ritual/<producto>-phase<N>-data.ts. El scaffold dummy (T211) NO cuenta. Dos Ritual Core distintos — no confundirlos.
| Producto | F1 | F2 | F3 | F4 | Real |
|---|---|---|---|---|---|
Ritual Core Legacy (prod_ritual_core_legacy) — el producto de las socias vitalicias — pipeline T65 | ✅ | ✅ | ✅ | ✅ | 4/4 |
Ritual Core nuevo (prod_ritual_core) — futuro: versión del Legacy con varias sesiones por día para elegir duración (express/base/progressive) | ⬜ | ⬜ | ⬜ | ⬜ | 0/4 |
En vuelo ahora
(ningún ticket de Septiembre en Active ni QA)
Listos para activar (sin bloqueos)
Estos tickets no tienen dependencias pendientes — pueden pasar a Active con un “go”:
| # | Ticket | Título | Effort | Model | Domain |
|---|---|---|---|---|---|
| 16 | T387 | Q3 personalization seed: Semana-0 survey → migrated members’ physical profiles | M | mixed | content-migration |
| — | T588 | Revoked sessions lose access on the next protected request | M | opus | auth |
| — | T627 | The eleven Legacy counts where the clip says one number and the app asks for another | S | fable | content-migration |
| — | T774 | The support page sells the method to a member who already bought, and claims an inbox that does not exist | S | mixed | content-migration |
| — | T777 | A login that fails on the network says nothing | S | opus | auth |
| — | T790 | The player names the round and the series from the rows, not from a repeat counter | M | mixed | player |
| — | T807 | Count the deploys that strand a member, before fixing them | XS | opus | infra |
Grafo de dependencias
Tickets con dependencias explícitas (de la sección “Blockers / dependencies” de cada spec):
- T774 (The support page sells the method to a member who already bought, and claims an inbox that does not exist) → depende de: T386 ✅
Próximas 4 semanas
Tickets de Septiembre proyectados por semana (basado en velocity + cola de prioridad):
| Semana | Tickets Septiembre | Pts | Otros | Riesgo |
|---|---|---|---|---|
| Wk1 (2026-09-28) | T387 | 3 | 11 tix (34 pts) | ✓ |
| Wk2 (2026-10-05) | — | 0 | — | ✓ |
| Wk3 (2026-10-12) | — | 0 | — | ✓ |
| Wk4 (2026-10-19) | — | 0 | — | ✓ |
Backlog completo Septiembre
| # | Ticket | Título | Brief | Effort | Model | Domain | Deps |
|---|---|---|---|---|---|---|---|
| 16 | T387 | Q3 personalization seed: Semana-0 survey → migrated members’ physical profiles | Aplicar la «Encuesta - Semana 0» (archivada por T300) al perfil físico de las so… | M | mixed | content-migration | — |
| — | T588 | Revoked sessions lose access on the next protected request | Una sesión revocada seguía entrando incluso en administración. Consultar su vige… | M | opus | auth | — |
| — | T627 | The eleven Legacy counts where the clip says one number and the app asks for another | T611 aligned the counts she had ruled on and wrote «cualquier cuenta sobre la qu… | S | fable | content-migration | — |
| — | T774 | The support page sells the method to a member who already bought, and claims an inbox that does not exist | /es/soporte se pinta en dos estados y el copy solo está pensado para uno. … | S | mixed | content-migration | T386 |
| — | T777 | A login that fails on the network says nothing | iPhone, /es/registro, 18-09: el fetch del login cayó en la red (`TypeError: … | S | opus | auth | — |
| — | T790 | The player names the round and the series from the rows, not from a repeat counter | Las sesiones de F2/F3 llevan cada vuelta escrita fila a fila y el player ya no d… | M | mixed | player | — |
| — | T807 | Count the deploys that strand a member, before fixing them | El 21-09 una socia dijo Cuando le doy a comenzar no se activa. Hay un camino e… | XS | opus | infra | — |
Completados en Septiembre
| Ticket | Título | Effort | Cerrado |
|---|---|---|---|
| T25 | Support form backend (tickets + auto-reply) | M | 2026-09-04T10:52:32Z |
| T35 | Cookie consent banner + legal-surface completion | M | 2026-05-29T23:08:35Z |
| T38 | Branded error pages: routing + HTTP layer (404, 500, offline) | S | 2026-07-31T18:19:23Z |
| T40 | Auth hardening: rate limiting + health-data consent | L | 2026-05-30 |
| T41 | Rebrand system core (DESIGN.md v5, foundation for T97–T104) | L | 2026-05-22T16:45:32Z |
| T42 | AI code review automation (PR-gate via Anthropic API) | M | 2026-05-19T13:05:27Z |
| T43 | AI-Agent Security Checklist + Endpoint Audit | M | 2026-05-21T09:15:00Z |
| T44 | LLM input/output hardening (provider-aware, Workers AI primary) | L | 2026-05-22T23:00:00Z |
| T45 | Dependency supply-chain policy (lockfile + Dependabot + action pinning + SBOM) | M | 2026-05-19T23:06:58Z |
| T47 | Repo layout convention + dep-cruiser enforcement | M | 2026-05-20T18:02:47Z |
| T48 | Seeds consolidation (first layout migration) | M | 2026-05-20T21:25:08Z |
| T49 | EU compliance umbrella (DPIA + DPAs + retention + breach SOP + VAT + cross-system GDPR cascade) | L | 2026-06-24T05:12:29Z |
| T50 | Accessibility WCAG 2.1 AA baseline + CI enforcement | M | 2026-05-20T22:45:03Z |
| T51 | Admin BO audit log (transversal) | L | 2026-05-29T17:08:11Z |
| T52 | PWA contract + service worker strategy + Lighthouse gate | L | 2026-08-02T13:53:24Z |
| T55 | Analytics tool selection + GDPR-clean wiring | M | 2026-06-06T13:33:30Z |
| T56 | 56b — Public status page + incident CMS | L | 2026-07-20 |
| T57 | Per-product retention design (Rituales / Módulos / Cápsulas) | M | 2026-06-24T11:09:27Z |
| T60 | Cook thefittclub-eu-compliance-advisor skill via Skill Creator | S | 2026-05-29T14:51:09Z |
| T61 | Pre-MVP lead magnet (decision + production) | M | ? |
| T65 | Zenler Content Pipeline: Ritual Core Legacy → MVP | L | 2026-09-04T15:51:19Z |
| T67 | Skills as pre-commit / CI deterministic gate | S | 2026-05-19 |
| T68 | Setup Loops + migracion SendGrid | S | 2026-05-28 |
| T69 | DB schema leads + bilingual guides + migrations | M | 2026-06-07T00:11:37Z |
| T70 | Pagina /auto-test (surface completa: UI + logica + resultado) | L | 2026-07-28T17:09:59Z |
| T71 | Auto-test bonus PDF delivery (3 variants, ES+EN) | M | 2026-08-03T11:34:18Z |
| T72 | /guias + /guias/[slug] (listado + detalle + form descarga) | L | 2026-06-21T04:45:08Z |
| T73 | Ritual Core waitlist (Home section + founding members) | M | 2026-06-24T12:26:21Z |
| T74 | Worker API /api/leads (POST) | M | ? |
| T75 | Loops sync (webhooks + journeys) | L | 2026-05-28 |
| T76 | Email templates Loops (3x5 = 15 emails, ES/EN) | L | 2026-05-28 |
| T77 | PDFs a R2 + signed URLs | S | ? |
| T78 | Analytics tracking (lead magnets) | M | 2026-08-03T20:38:16Z |
| T80 | Test architecture: 4-layer pyramid + tests/e2e/ restructure + ADR | M | 2026-05-19T07:44:39Z |
| T81 | Observability service unit tests + T27 QA theater | S | 2026-05-19T08:07:45Z |
| T84 | Adapt to react-router 7.15 + @types/react 19.2 strictness | S | 2026-05-20T08:36:47Z |
| T85 | i18n stack major upgrade (i18next 24→26 + react-i18next 15→17 + http-backend 3→4) | M | 2026-05-22T23:38:54Z |
| T86 | Vite 6 → 8 upgrade | M | 2026-05-27T09:20:15Z |
| T88 | Board + spec blocker auto-cleanup on ticket close | S | 2026-05-20T10:15:17Z |
| T89 | lint-board-blockers regex false positives on dates and filename slugs | XS | 2026-05-20T13:22:28Z |
| T90 | Pre-commit hooksPath auto-wire + board lint coverage | XS | 2026-05-20T15:54:04Z |
| T91 | PR subscription poll-back protocol | XS | 2026-05-20T17:13:15Z |
| T92 | Resolve EvolutionChartsPanel ↔ ui/index.ts circular import | XS | 2026-05-20T20:16:22Z |
| T94 | Breakpoints: Tailwind default contract | S | 2026-05-21T13:51:54Z |
| T97 | Rebrand: auth surfaces (signup / login / reset-password) | L | 2026-05-31 |
| T98 | Rebrand: global navigation + footer | M | 2026-05-30T12:53:53Z |
| T99 | Rebrand: dashboard “Mi espacio” Phase M (umbrella — close handoff gaps) | M | 2026-06-16T20:43:53Z |
| T100 | Rebrand: player session shell | L | 2026-06-19T17:25:00+00:00 |
| T101 | Rebrand: onboarding flow | M | 2026-06-14T00:47:48Z |
| T102 | Rebrand: landing Hito 1 (lead-magnet funnel homepage) | M | 2026-06-13T09:41:35Z |
| T103 | Rebrand: account / profile | S | 2026-06-20T15:29:12Z |
| T104 | Rebrand: error pages (404 / 500 / offline) | S | 2026-07-31T11:17:18Z |
| T110 | Consolidar 4 audit jobs en uno (palanca #3 cost mitigation) | M | 2026-05-22 |
| T116 | Backfill dependency-justification.md rows missed by T85 (+ stale security-baseline.md note) | XS | 2026-05-23T05:23:28Z |
| T119 | CI test gate: vitest unit + component as required check + anti-trivial-test defenses | S | 2026-05-23T18:58:26Z |
| T121 | Skill .usage-log.jsonl persistence in remote-only mode | XS | 2026-05-23T18:58:26Z |
| T136 | Canonical brand pages for LLM citation: /metodo + /faq | M | 2026-06-16T10:12:11+00:00 |
| T152 | De-medicalise UI copy: clinical framing → body-awareness language | XS | 2026-05-29T19:48:49Z |
| T153 | Resend email infrastructure (unified) | L | 2026-05-28 |
| T167 | Apply edge WAF rate-limit rule on domain migration | XS | 2026-09-04T10:12:28Z |
| T172 | Bilingual media + subtitles schema | L | 2026-06-01T18:46:07Z |
| T173 | i18n schema consistency cleanup | M | 2026-06-01T16:30:55Z |
| T174 | i18n storage-pattern gate (enforce ADR-0010 mechanically) | M | 2026-06-01T22:24:17Z |
| T175 | Design SSOT: single canonical source + versioning policy | M | 2026-06-10T22:50:40Z |
| T176 | Component reuse contract + enforcement gate | M | 2026-05-31T18:25:38Z |
| T177 | Forms SSOT: primitive library + migrate hand-rolled forms | L | 2026-05-31T21:25:27Z |
| T178 | Buttons SSOT: route all CTAs through <Button> | L | 2026-06-01T10:07:35Z |
| T179 | BentoCard consolidation: 6 files → 1 variant-driven primitive | M | 2026-06-18T17:03:24Z |
| T180 | Modal consolidation: composable bodies over one Modal base | M | 2026-06-24T13:36:00Z |
| T183 | BO: per-locale media upload (es/en) for catalog content | L | 2026-06-01T20:02:49Z |
| T184 | Retire legacy shared media columns + dummy per-locale media seed | M | 2026-06-01T21:26:33Z |
| T190 | Reduce Cloudflare preview request consumption (avoid free-tier daily cap) | XS | 2026-06-03T09:54:34Z |
| T192 | Custom domain cutover | S | 2026-09-06T19:40:18Z |
| T193 | Zenler legacy membership migration (users + access + progress) | M | 2026-06-05T12:08:08Z |
| T194 | Legacy payment transactions ledger (preserve full Zenler purchase history) | M | 2026-06-05T17:21:21Z |
| T195 | Formalise payment_transactions retention + erasure in security-baseline.md §4 | XS | 2026-06-05T18:55:27Z |
| T197 | Onboarding consent coherence + skip-to-generic escape | L | 2026-06-25T16:42:17Z |
| T200 | Safe-start gate: no active program before postpartum-readiness floor | M | 2026-06-26T10:46:00Z |
| T201 | fix: legacy seed generators emit BEGIN TRANSACTION (D1 rejects it) | XS | 2026-06-05T18:22:56Z |
| T202 | Back Office payments ledger view (read-only) | S | 2026-06-05T18:45:00Z |
| T203 | BO payments: membership filter + payment detail view | M | 2026-06-05T23:21:38Z |
| T204 | Ritual Core Legacy: product definition + cohort eligibility + entitlement seed | M | 2026-06-06T08:22:27Z |
| T205 | Retention: computed re-engagement (pause / lapse) | M | 2026-06-06T11:41:42Z |
| T210 | Footer + nav “Próximamente” state + resolve unlinked public pages (absorbs T165) | M | 2026-06-06T14:35:45Z |
| T211 | Seed: Ritual Core Legacy phases (21 sessions/phase + 2→3 & 3→4 transitions) | M | 2026-06-06T15:41:00Z |
| T214 | Legacy position backfill (currentPhase + mainSequenceDay from real Zenler progress) | M | 2026-06-06T18:55:17Z |
| T215 | Archive Zenler data before losing access | M | 2026-06-07 |
| T218 | Back Office: page media assets library (marketing images + videos) | L | 2026-06-12T06:03:16Z |
| T219 | Front-end page-asset consumption layer (slot registry + hook + fallback) | M | 2026-06-12T19:07:40Z |
| T220 | Rebrand: biblioteca (member catalog) | L | ? |
| T221 | Rebrand: fase actual (current-phase detail surface) | M | 2026-06-16T15:45:04Z |
| T222 | Rebrand: module & capsule detail | M | 2026-07-01T20:29:14Z |
| T223 | Drift-audit: auth surfaces (T97) vs Main Style | S | 2026-06-11T08:25:21Z |
| T224 | Drift-audit: global nav + footer (T98) vs Main Style | S | 2026-06-11T15:08:24Z |
| T225 | Fix: password show/hide toggle dead until field interaction under iOS autofill | S | 2026-07-01T22:26:50Z |
| T226 | Nav state matrix + scroll-overlap aterrizaje (Main Style) | M | 2026-06-11T17:09:34Z |
| T230 | Fix: home loader 500s when page-asset resolution fails (page_media_assets missing in prod D1) | XS | 2026-06-13T10:17:44Z |
| T231 | Dashboard hero: session-meta block (stats + materials) | S | 2026-06-13T17:44:59Z |
| T232 | Dashboard collection data projection (DAL for the vitrina) | M | 2026-06-13T18:12:50Z |
| T233 | Dashboard “Tu Colección” vitrina + StateVacio convergence | L | 2026-06-13T19:59:13Z |
| T234 | Dashboard progress card → FaseActualCard | M | 2026-06-14T14:24:49Z |
| T235 | Capsule “Reto” (challenge) product concept: data + backoffice | M | 2026-06-13T20:59:38Z |
| T236 | Collection cards: per-addon urgency countdown | S | 2026-06-13T22:41:26Z |
| T237 | Brand doctrine: motivation vs anti-gamification (rewrite the rule) | S | 2026-06-13T17:44:59Z |
| T239 | BO-configurable onboarding step groups (data-driven wizard, per product) | L | 2026-07-02T12:24:39Z |
| T240 | Playwright E2E infra fix (auto-install Chromium in ephemeral containers) | XS | ? |
| T243 | Back Office media: upload reliability + CF resource deletion + subtitle validation | M | 2026-06-15T07:46:13+00:00 |
| T244 | Scalable multi-surface page-asset slots (extends T219) | M | 2026-06-15T15:29:40Z |
| T254 | Back Office: pick from existing Cloudflare Stream / Images library (no re-upload) | M | 2026-06-15T12:14:47Z |
| T256 | BO media library + landing media rendering (CF Images variants, editor preview, founder video, list filter/sort/paginate) | XL | 2026-06-15T18:40:31Z |
| T258 | Landing card media (BO-managed) + hero image-or-video | M | 2026-06-15T20:15:51Z |
| T261 | Rebrand: El Método (/metodo · /method) | M | 2026-06-19T21:49:13Z |
| T262 | Rebrand: FAQ (/faq) | M | 2026-06-19T23:43:25Z |
| T263 | Rebrand: Soporte (/soporte · /support) | M | 2026-06-20T08:28:22Z |
| T264 | Rebrand: dashboard StateVacio / StateOferta — land the HERO “Estados del Dashboard” design | L | 2026-06-16T19:13:17Z |
| T265 | Fix: dashboard needs_onboarding classifier disagrees with the onboarding route (CTA bounces to dashboard) | S | 2026-06-16T20:38:34Z |
| T266 | Physical-profile delivery model: decouple delivery_type from postpartum recency | L | 2026-06-19T06:37:45Z |
| T271 | fix: completed prod_ritual_core_legacy sessions don’t appear in “Your library” | S | ? |
| T274 | Account credential: role/tier badge + member number | M | 2026-07-25T15:55:00Z |
| T275 | Account privacy section: GDPR export + delete logic | L | ? |
| T276 | Account physical: wire the stimulus readout to the real derived plan | M | ? |
| T278 | Profile avatar upload (member photo, R2-backed) | S | 2026-06-25 |
| T283 | Wire lead-magnet email delivery (/api/leads → Resend) | S | ? |
| T287 | fix: guide PDF upload presign returns HTML (UI-route action) → move to resource route | S | ? |
| T289 | fix: R2 signing hard-500s authed surfaces (missing creds / sign failure) → degrade gracefully | S | 2026-06-21T17:40:00Z |
| T291 | fix: Fase 1 techniques broken in the app (BO works) — library queries wrong product for legacy users; player technique video not rendering + desktop overlap | M | 2026-06-23T20:15:28Z |
| T295 | Unified TechniqueViewer redesign (player + biblioteca) + acquisition ceremony | L | ? |
| T297 | Technique acquisition loop polish: immersive library viewer + “new technique” library-nav indicator | M | ? |
| T298 | Dashboard welcome row: mobile edge/border-radius clipping of kicker + switcher | XS | 2026-07-03T14:45:25Z |
| T300 | Archive all Zenler data before account access expires (~1 month) | S | 2026-09-01T22:02:42Z |
| T317 | AEPD pre-launch: Privacy Policy (Art. 13) + RAT + go-live checklist | M | 2026-06-25T16:42:17Z |
| T319 | Profile ambassador programme (referral code + discount + points ledger + waitlist) | L | 2026-08-02T10:47:40Z |
| T320 | Lead multi-tag model (accumulating funnel/origin/lifecycle tags) + Zenler re-import | M | 2026-06-27T17:19:30Z |
| T322 | BO email event analytics (delivered/opened/clicked/bounced) + privacy update | L | 2026-08-23T14:39:45Z |
| T329 | Accessibility baseline: resolve the expired T41 contrast deferrals for real | M | 2026-07-01 |
| T338 | Fix: prep-mode dashboard loop — restore START + retarget prep banner to the player | S | 2026-07-03T14:00:08Z |
| T353 | fix: dashboard progress counters must reflect reality (same-day repeats, cross-product leak, completion idempotency) | M | 2026-07-26T17:05:00Z |
| T354 | fix: player completion screen shows false “end of this phase” — next-session states (locked / loop / next phase / continue) | M | 2026-07-26T22:20:56Z |
| T355 | fix: library seal badge never clears (multi-unlock asymmetry, per-device state, techniques-facet-only witness) | M | 2026-07-28T10:16:24Z |
| T356 | fix: trained-day bucketing uses UTC, not the member’s real day (Europe/Madrid evening sessions land on the wrong date) | M | 2026-07-27T11:11:22Z |
| T358 | fix: session shows “0 min” when routine blocks are tagged under a non-resolved product-modality (per-modality duration fallback) | S | ? |
| T364 | fix: the CI flags step turns a tolerated warning into a red build | XS | 2026-08-02T13:06:57Z |
| T368 | E2E progress-state fixtures: seed personas for every player next-session state | M | 2026-07-26T22:20:56Z |
| T371 | E2E fixture accounts still live in production carrying real training data | S | 2026-08-05T09:14:12Z |
| T374 | Doctrina v4: ventanas F3-F4 [3,6], config-only (sustituye el suelo plano [5,5]) | S | 2026-07-28T17:09:59Z |
| T377 | fix: tfc-brand-vocab-lint is blind to the brand’s forbidden tech-copy phrases | XS | ? |
| T378 | fix: Art. 9 health data is processed with no demonstrable consent record for pre-ledger members | M | 2026-07-29T23:32:57Z |
| T380 | fix: the sign-in form puts her password in the URL if she submits before the page hydrates | XS | 2026-07-29T23:35:58Z |
| T381 | Contact the members holding Art. 9 data without a consent record | S | 2026-08-05T07:56:41Z |
| T382 | fix: the verify-email wait state drifted from its delivered design | S | 2026-08-07T13:36:29Z |
| T386 | Legacy migration go-live: the wave went out on WhatsApp; measure it and close what it left open | M | 2026-09-18T08:53:15Z |
| T389 | Shell viewport band: a page is the viewport minus the top navigation | S | 2026-07-31T11:17:18Z |
| T403 | fix: a switched-off ambassador programme takes the whole profile page down | XS | 2026-08-02T13:04:34Z |
| T406 | fix: the phase-schedule editor deletes every day it declined to show | S | 2026-08-02T14:59:29Z |
| T409 | Testimonial capture form + curation SSOT (“Tu historia”, circular arc 4) | M | ? |
| T417 | The Privacy Policy publishes four retention deadlines that nothing enforces | M | 2026-09-08T13:44:03Z |
| T420 | fix: phase-change modal shows invented track totals and the wrong progress counter (+ presentation pass) | M | 2026-08-17T16:58:51Z |
| T423 | study: the progression engine and which of its parameters the Back Office should own | M | 2026-08-08T08:16:47Z |
| T424 | One owner for host configuration (canonical origin, brand entity @id, link base) | S | 2026-08-08T08:35:35Z |
| T425 | fix: the auto-test pill row hardcodes the phase count the Back Office owns | XS | 2026-08-07T20:41:25Z |
| T426 | fix: the SessionStart hook never wires core.hooksPath in a remote session | S | 2026-08-08T13:29:47Z |
| T427 | Seed phase_unlock_conditions for phases 2, 3 and 4 (the gate silently falls back to code) | S | 2026-08-11T11:07:03Z |
| T428 | One question bank, soft voice: onboarding and auto-test ask the same questions | L | 2026-08-11T17:01:37Z |
| T429 | The progression engine, rebuilt: per-phase base weeks + per-answer rules, no clamp | XL | 2026-08-11T21:31:07Z |
| T430 | The Back Office grid: every answer’s effect on every phase, with impact preview | XL | 2026-08-12T06:15:06Z |
| T431 | fix: the auto-test publishes the wrong product’s numbers | S | 2026-08-10T15:55:41Z |
| T432 | Member-facing phase descent, and free movement between phases already earned | L | 2026-08-12T10:19:13Z |
| T433 | Start a programme over from zero | M | 2026-08-17T20:01:00Z |
| T434 | Tell her when her effort will not unlock the level test, and why | L | 2026-08-18T09:03:09Z |
| T457 | The prod content deploy is broken, and the snapshot that protects Back Office edits was never committed | M | 2026-08-16T08:27:37Z |
| T468 | The result she reads is derived from the number she gets, not from a parallel score | M | 2026-08-20T13:37:09Z |
| T471 | fix: persistEngine rewrites the engine in sequential statements — a mid-write death serves a mutilated engine to every member | S | 2026-08-12T07:27:37Z |
| T472 | Engine grid legibility: label the cells, explain saturation where it happens, and a guide that matches the screen | M | 2026-08-12T21:43:29Z |
| T473 | See and set which engine governs each product, from the Back Office | M | 2026-08-14T07:35:41Z |
| T474 | Track thresholds move onto the engine; purge the ghost unlock thresholds | L | 2026-08-14T11:50:45Z |
| T475 | Onboarding questions born from the assigned engine, plus the founder’s own extras | L | 2026-08-14T16:39:16Z |
| T476 | Level-up tests follow the engine: coverage per transition, and no test offered after the last phase | M | 2026-08-15T11:11:19Z |
| T477 | The engine seed stops masquerading as the engine: honest degradation, observed | M | 2026-08-15T23:28:36Z |
| T478 | fix: a racing double-submit of a passed evaluation writes duplicate “passed” history rows | S | 2026-08-16T10:17:31Z |
| T479 | The onboarding question library shows and edits visible_in_autotest | XS | 2026-08-16T15:12:58Z |
| T480 | fix: two phase lookups still match raw sort_order against the phase number | XS | 2026-08-16T19:22:51Z |
| T496 | Browser verification as an implementation step: the local Playwright harness, universalized | M | 2026-08-15T14:15:41Z |
| T497 | fix: The assessment route ignores productId: every member is evaluated as Ritual Core | S | 2026-08-15T13:42:35Z |
| T498 | fix: taps land on a loaded-looking screen and nothing happens (start-session + player close, production, iPhone) | M | 2026-08-15T22:55:54Z |
| T499 | fix: session duration double-counts perSide exercises whose demo clip already shows both sides | S | 2026-08-16T11:29:56Z |
| T502 | fix: passing a phase evaluation shows “Error” on screen — the api.* routes answer HTML, not JSON | S | 2026-08-16T19:52:46Z |
| T507 | Cloudflare zone for thefittclub.com (NS migration from GoDaddy) | S | 2026-08-28T12:30:00Z |
| T508 | Better Auth accepts app.thefittclub.com (allowedHosts gap) | XS | 2026-08-24T08:55:15Z |
| T509 | app.thefittclub.com as emergency alias on the Pages project | S | 2026-08-29T11:10:00Z |
| T510 | Member comms: what to do during LaLiga block windows | XS | 2026-09-03 |
| T511 | Canonical origin flip off pages.dev onto app.thefittclub.com | M | 2026-09-06T18:51:50Z |
| T514 | fix: the last two api.* routes still answer HTML — api.auth.$ and api.progress-image | S | 2026-08-16T21:17:09Z |
| T516 | fix: the offline write queue has no producer | M | 2026-08-24T13:22:38Z |
| T517 | fix: the offline surface promises downloads that do not exist | XS | 2026-08-16T22:25:21Z |
| T518 | fix: the Offline handoff still ships the defect T517 removed | XS | 2026-08-20T16:32:18Z |
| T521 | She can see how she advances | L | 2026-08-28T17:29:29Z |
| T522 | Nothing in the toolchain asks whether she understands | M | 2026-08-23T17:15:59Z |
| T523 | The moment she earns a phase passes in silence | M | 2026-08-22T19:02:17Z |
| T524 | The Back Office tells the truth about the auto-test | S | 2026-08-29T12:55:18Z |
| T525 | One weeks floor for the member and for the funnel | S | 2026-08-29T14:21:26Z |
| T526 | The three result texts describe her path, not her muscle | S | 2026-08-31T09:48:48Z |
| T527 | The smoke job stops paying for fonts it does not render | XS | 2026-08-20T12:59:02Z |
| T529 | fix: the Offline handoff still specs a banner that was never built | XS | 2026-08-20T22:28:50Z |
| T530 | BO broadcasts reach pure-customer members (unblocks the legacy invitation) | M | 2026-08-21T13:17:41Z |
| T531 | The ascent-test kicker names the member’s own product | XS | 2026-09-02T14:47:33Z |
| T532 | T128 language-debt cleanup: allowlist to zero dated entries | M | 2026-08-21T04:08:57Z |
| T535 | The block-window screen tells the truth | S | 2026-08-23T11:26:32+00:00 |
| T539 | fix: the session-end screen asks twice, breaks its scale and hides its own button | S | 2026-08-28T16:35:00Z |
| T543 | fix: the visual sweep’s host guard accepts production | S | 2026-09-02T13:25:59Z |
| T553 | Calibrate the comprehension gate so a good screen can pass it | S | 2026-09-04T23:10:57Z |
| T561 | The three bonus guides still promise what T468 deleted | M | 2026-09-05T09:37:05Z |
| T562 | The Rituals SSOT documents the engine that was deleted | S | 2026-09-04T23:10:57Z |
| T563 | Product truth read from the database and the code, not from prose | M | 2026-09-05T08:53:50Z |
| T567 | The method document the repository does not have | M | 2026-09-04T23:10:57Z |
| T568 | Fix: the effort question promises a progression Legacy does not have | M | 2026-08-31T11:56:51Z |
| T569 | Seven lifecycle events fire without the analytics grant, and the RAT says consent | S | 2026-09-11T19:10:10Z |
| T570 | fix: orphan rows reach a production migration unannounced | S | 2026-09-03T20:03:49Z |
| T571 | A second stage for the comprehension judge | M | 2026-09-05T08:46:35Z |
| T580 | A gauge for the metered Cloudflare resources, before the next one ambushes us | S | 2026-09-06T19:40:18Z |
| T581 | The evaluation intro never says what skipping costs, and names a criterion it does not define | S | 2026-09-12T08:49:53Z |
| T582 | The .subhdr atom: what T531 changed in it, and what it still owes the other surfaces | S | 2026-09-06T00:13:16Z |
| T585 | fix: admin child routes are reachable without the layout’s admin gate | S | 2026-09-03T19:41:43Z |
| T586 | fix: withdrawing health-data consent leaves the raw onboarding answers in place | S | 2026-09-05T23:58:09Z |
| T590 | fix: the profile’s Subscription tab shows a mock invoice history to real members | XS | 2026-09-05T21:06:45Z |
| T592 | Every email a woman reads passes the founder’s P6 voice filter | S | 2026-09-03T22:03:38Z |
| T595 | fix: a content recut leaves ghost sessions in a member’s Library | S | 2026-09-04T14:15:33Z |
| T596 | The delivered form has a live character counter and a placeholder select; the shipped primitives have neither | S | 2026-09-06T00:13:16Z |
| T597 | fix: hola@thefittclub.com reaches nobody, and the product publishes it in eleven places | S | 2026-09-04T15:00:28Z |
| T598 | Nobody can read the support tickets the form now stores | S | 2026-09-04T13:05:26Z |
| T599 | The local smoke rung fails on a hydration budget it was never sized for | S | 2026-09-05T22:41:46Z |
| T600 | fix: the orphan detector cannot read production | S | 2026-09-04T11:25:25Z |
| T601 | fix: a KV outage during the attempt check loses the support message | S | 2026-09-04T12:48:13Z |
| T603 | The preview wait still spends five minutes proving a commit was never deployed | XS | 2026-09-05T22:21:29Z |
| T604 | The diff-only critique wrapper fails Back-Office files the real gate exempts | XS | 2026-09-05T22:41:46Z |
| T605 | The player runs a block’s rounds and says so at a glance | M | 2026-09-04T16:45:21Z |
| T606 | Ritual Core Legacy audited clip by clip against Zenler | L | 2026-09-04T23:24:56Z |
| T607 | board-index --write should collapse the duplicate Last updated: line, not just re-derive the counts | S | 2026-09-05T22:41:46Z |
| T608 | What the guides form says when it fails, and whether she can act on it | M | 2026-09-04T19:43:21Z |
| T609 | Legacy cards list the materials she names in the clip; categories follow one written rule | S | 2026-09-05T00:29:54Z |
| T610 | The Zenler material that is not an exercise gets a destination: phase PDFs, bonus videos, measurement videos, glossary | M | 2026-09-06T12:19:41Z |
| T611 | Legacy blocks carry the rounds Zenler asked for and the counts she says in the clip | M | 2026-09-04T22:28:13Z |
| T612 | Legacy cards say only her words: descriptions, tips and warnings corrected from the D6 verdicts | M | 2026-09-05T06:40:00Z |
| T614 | F1-F3 clips re-rendered with audio chain E, boundaries re-cut where she confirms, thumbnails she picked | L | 2026-09-10T21:56:43Z |
| T615 | fix: production is behind the seed on 13 F3 per-side clips (clip_covers_both_sides) and two clip lengths | S | 2026-09-04T22:28:13Z |
| T618 | A session-close exam the contradiction class of defect can fail | S | 2026-09-05T06:33:16Z |
| T619 | The three DRIFT lines T563 left: two stamps that ask for a number their sentence does not state, one row the design does not have | S | 2026-09-05T09:56:38Z |
| T620 | The landing hero serves a native portrait video on mobile | S | 2026-09-05T11:21:26Z |
| T621 | fix: the phone hero paints the landscape still before the portrait master | XS | 2026-09-05T22:49:24Z |
| T622 | fix: the phone hero sometimes plays the landscape master | XS | 2026-09-05T22:49:24Z |
| T623 | fix: the account tab is named for a subscription that does not renew | XS | 2026-09-05T22:14:14Z |
| T626 | Production is behind the seed on three Legacy rows, and the content snapshot froze all three | S | 2026-09-06T13:02:31Z |
| T630 | The session hero is the image again: 16:9 frame, completed state on the image, one line of material | S | 2026-09-06T14:19:22Z |
| T633 | fix: the language switcher is invisible in the desktop account menu | XS | 2026-09-06T15:17:23Z |
| T634 | Home sends a signed-in member to her panel | S | 2026-09-06T16:13:09Z |
| T635 | The published policy never says we keep 10,860 addresses | M | 2026-09-07T07:04:00Z |
| T636 | Rescue the Zenler consent wording before the account expires | XS | 2026-09-06T15:19:47Z |
| T637 | fix: a phone that refuses to autoplay shows a black rectangle instead of the scene | S | 2026-09-06T20:30:00Z |
| T638 | The sweep will delete women we are actively emailing, because opening an email is not “activity” | S | 2026-09-07 |
| T639 | fix: the retention cutoffs overflow on 29 February and delete a day early | XS | 2026-09-06T12:20:41Z |
| T640 | fix: the Back Office leads list cannot see the 10,856 it is counting | XS | 2026-09-06T15:23:14Z |
| T642 | A lead who became a member ages out while she is still training, and her consent proof goes with her | S | 2026-09-06T22:04:20Z |
| T643 | fix: one definition of “UI file”, and the T51 admin exemption the receipt gate never had | S | 2026-09-06T20:53:49Z |
| T644 | fix: Unsubscribing is broken six ways, and one of them restarts the retention clock | M | 2026-09-07T07:04:00Z |
| T652 | The member catalogue sells what is not for sale | M | 2026-09-07T12:49:26Z |
| T653 | fix: a Spanish ISP block on Cloudflare’s ranges empties the landing, because its media comes from three hostnames that are not ours | M | 2026-09-06T22:07:02Z |
| T655 | fix: the landing downloads about 400 KB it does not need | S | 2026-09-07T12:11:05Z |
| T657 | fix: the landing’s background bands go dark when the video host is blocked | XS | 2026-09-06T20:05:00Z |
| T658 | Social login registers in silence from the sign-in mode | S | 2026-09-07T11:14:44Z |
| T670 | Guardar es la única forma de registrar una sesión, y una sesión repetida no vuelve a preguntar | S | 2026-09-12T12:28:31Z |
| T672 | fix: the down page still depends on a host that may be down | XS | 2026-09-07T22:12:29Z |
| T677 | The gauge she will actually see | M | 2026-09-07T14:20:19Z |
| T679 | A recovery request tells nobody | M | 2026-09-07T17:28:26Z |
| T681 | fix: the Back Office translation editor destroys tagline and topic tags on every save | S | 2026-09-08T08:28:44Z |
| T682 | Every email, read in the situation it arrives in | L | 2026-09-10T08:12:19+00:00 |
| T683 | A rule written down, and nothing checking it, let scripts/ into production | M | 2026-09-08T16:31:45Z |
| T684 | A verdict that recovers the account | M | 2026-09-07T17:29:53Z |
| T685 | The preview URL can serve another branch’s build, and nothing notices | S | 2026-09-07T21:14:29Z |
| T697 | The panel’s journal card ignores the program’s own switch | XS | 2026-09-09T10:17:12Z |
| T699 | The panel does not answer the questions it exists to answer | L | 2026-09-11T21:52:23Z |
| T705 | Guides match the method, their test result and the launch stage | L | 2026-09-11T07:52:17Z |
| T710 | recupera-tu-core’s two covers, uploaded and pointed at by real Cloudflare ids | S | 2026-09-11T11:33:18Z |
| T713 | The auto-test has two scrolls on a phone, and #guias lands under the header | S | 2026-09-11T07:52:17Z |
| T714 | The #guias anchor jumps instead of gliding | XS | 2026-09-11T09:10:44Z |
| T719 | The contrast ledger has no owner, and its number is not the real one | L | 2026-09-12T16:38:03Z |
| T722 | fix: the phase gate opens with no entry date and no sessions done | M | 2026-09-13T15:22:23Z |
| T734 | fix: email signup creates no account, and the screen tells her it did | S | 2026-09-13T14:05:03+00:00 |
| T735 | Open the public site to Instagram and YouTube traffic | L | 2026-09-13T18:18:51Z |
| T743 | fix: the Block Exposure card takes the whole Back Office dashboard down with it | S | 2026-09-14T11:50:10Z |
| T748 | fix: the same-origin guard misses the backslash form of a protocol-relative URL | S | 2026-09-14T14:56:00Z |
| T771 | Read the errors Sentry has been collecting, and give every one of them an owner | M | 2026-09-21T13:01:11Z |
| T772 | M | ? | |
| T773 | Six of the seven lifecycle events cannot tell a migrated member from a new one | S | 2026-09-21T14:48:18Z |
| T775 | The route error boundary renders with no error in her hands | M | 2026-09-21T17:15:00Z |
| T779 | Fix: the mutation instrument runs zero tests per mutant and reports every mutant as survived | S | 2026-09-18T23:52:23Z |
| T780 | Phases 2 and 3 in their three modes, seeded for both Ritual Core products | L | 2026-09-18T12:14:24Z |
| T781 | The dashboard asks D1 for the same session three times | M | 2026-09-19T13:17:50Z |
| T782 | The phase-1 evaluation placeholders leave the catalog | S | 2026-09-20T11:53:16Z |
| T783 | One copy helper, one re-own helper, one duration formula: the T780 seed code without its duplicates | S | 2026-09-19T15:05:42Z |
| T784 | Fix: the session’s stale-duration banner never clears on a three-mode session | S | 2026-09-19T11:36:59Z |
| T785 | The AI reviewer skips a PR for its generated data | S | 2026-09-20T13:31:30Z |
| T786 | The dashboard E2E file never reaches its last test | S | 2026-09-18T19:40:23Z |
| T791 | The done-today persona has never trained today | XS | 2026-09-18T17:39:54Z |
| T805 | A new member outside Madrid meets an error screen on her first panel | S | 2026-09-21T18:40:00Z |
| T806 | Nobody owns a thrown Response, so nobody reports it | S | 2026-09-22T09:06:28Z |
| T811 | Fix: the “Situación y condiciones” card rejects every save with “Nivel de actividad no válido” | S | 2026-09-22T10:36:05Z |
| T812 | The form is the contract: a test that submits what the browser submits, and a lint that keeps every _intent route covered | M | 2026-09-24T08:15:47Z |
Auto-generado por scripts/maintenance/generate-vault-dashboard.mjs. Última corrida: 2026-09-28.