Hito activo: Junio

Última sincronización: 2026-08-13 (auto via GitHub Action — no editar a mano). Deadline: 2026-09-15 · 33 días restantes Repo: gala1234/thefittclub


Estado del hito

██████████████████░░ 88% (560/633 pts)

MétricaValor
Tickets totales179 (160 done · 0 en vuelo · 19 pending)
Puntos restantes73 pts
ETA (early)2026-12-28 (20 semanas)
ETA (late, +50%)2027-03-06
Fuente velocityreal (pts/hour) · 0.187 pts/h · 5.33 h/pt (n=260) · 20h working/week
Velocity real0.187 pts/h · 5.33 h/pt (n=260)
Velocity calendar56.63 pts/week (n=74, last 4 wks)
¿Llega a deadline?⚠️ En riesgo (ETA early 104 días después de deadline)

Carga de trabajo

EffortTicketsPtsDetalle
XS21 ptsT479 · T480
S22 ptsT300 · T478
M1030 ptsT386 · T420 · T387 · T411 · T433 · T457 · T468 · T473 · T476 · T477
L540 ptsT65 · T410 · T434 · T474 · T475

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.

ProductoF1F2F3F4Real
Ritual Core Legacy (prod_ritual_core_legacy) — el producto de las socias vitalicias — pipeline T652/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 Junio en Active ni QA)

Listos para activar (sin bloqueos)

Estos tickets no tienen dependencias pendientes — pueden pasar a Active con un “go”:

#TicketTítuloEffortModelDomain
1T300Archive all Zenler data before account access expires (~1 month)Ssonnetcontent-migration
2T65Zenler Content Pipeline: Ritual Core Legacy → MVPLmixedcontent-pipeline
7T420fix: phase-change modal shows invented track totals and the wrong progress counter (+ presentation pass)Mmixeddashboard
T410Public testimonial wall + UI consumption from the SSOTLmixeddesign
T411Club points for testimonials: per-product amounts, profile display, in-product promptsMmixedother
T433Start a programme over from zeroMopusdashboard
T434Tell her when her effort will not unlock the level test, and whyLopusdashboard
T457The prod content deploy is broken, and the snapshot that protects Back Office edits was never committedMopusinfra
T468The result she reads is derived from the number she gets, not from a parallel scoreMopusonboarding
T473See and set which engine governs each product, from the Back OfficeMopusadmin
T474Track thresholds move onto the engine; purge the ghost unlock thresholdsLopusschema
T476Level-up tests follow the engine: coverage per transition, and no test offered after the last phaseMmixeddashboard
T477The engine seed stops masquerading as the engine: honest degradation, observedMsonnetonboarding
T478fix: a racing double-submit of a passed evaluation writes duplicate “passed” history rowsSsonnetplayer
T479The onboarding question library shows and edits visible_in_autotestXSsonnetadmin
T480fix: two phase lookups still match raw sort_order against the phase numberXSsonnetdashboard

Grafo de dependencias

Tickets con dependencias explícitas (de la sección “Blockers / dependencies” de cada spec):

  • T386 (Legacy migration go-live: invitation wave + first access) → depende de: T65 ⏳, T214 ✅
  • T387 (Q3 personalization seed: Semana-0 survey → migrated members’ physical profiles) → depende de: T300 ⏳
  • T475 (Onboarding questions born from the assigned engine, plus the founder’s own extras) → depende de: T473 ⏳

Cuellos de botella

Tickets que bloquean a otros (ordenados por impacto):

  • T65 (Zenler Content Pipeline: Ritual Core Legacy → MVP) — bloquea 1 ticket(s): T386
  • T300 (Archive all Zenler data before account access expires (~1 month)) — bloquea 1 ticket(s): T387
  • T473 (See and set which engine governs each product, from the Back Office) — bloquea 1 ticket(s): T475

Próximas 4 semanas

Tickets de Junio proyectados por semana (basado en velocity + cola de prioridad):

SemanaTickets JunioPtsOtrosRiesgo
Wk1 (2026-08-10)T3001
Wk2 (2026-08-17)T658
Wk3 (2026-08-24)T3863
Wk4 (2026-08-31)T4203

Backlog completo Junio

#TicketTítuloBriefEffortModelDomainDeps
1T300Archive all Zenler data before account access expires (~1 month)Extract and archive the member data that lives only in Zenler (assignment photos…Ssonnetcontent-migration
2T65Zenler Content Pipeline: Ritual Core Legacy → MVPZenler Content Pipeline: Ritual Core Legacy → MVPLmixedcontent-pipeline
3T386Legacy migration go-live: invitation wave + first accessInvitar a las socias legacy a la app y llevarlas hasta su primer acceso: email d…MmixedemailT65, T214
7T420fix: phase-change modal shows invented track totals and the wrong progress counter (+ presentation pass)El modal «Subir de fase» enseña números inventados: «3 de 1 semanas» con barra l…Mmixeddashboard
12T387Q3 personalization seed: Semana-0 survey → migrated members’ physical profilesAplicar la «Encuesta - Semana 0» (archivada por T300) al perfil físico de las so…Mmixedcontent-migrationT300
T410Public testimonial wall + UI consumption from the SSOTEl muro público de historias: moderno y cinematográfico, con las historias aprob…Lmixeddesign
T411Club points for testimonials: per-product amounts, profile display, in-product promptsEscribir una historia da puntos del Club, distintos según el producto (Ritual, M…Mmixedother
T433Start a programme over from zeroA member — or the founder on her behalf — can return a programme to its starting…Mopusdashboard
T434Tell her when her effort will not unlock the level test, and whyWhen a woman’s choices mean she will not reach the stimulus her body needs, the …Lopusdashboard
T457The prod content deploy is broken, and the snapshot that protects Back Office edits was never committednpm run db:seed -- --env=prod aborts with a Cloudflare D1_RESET_DO error, so…Mopusinfra
T468The result she reads is derived from the number she gets, not from a parallel scoreThe auto-test decides her result with a points score and her plan length with th…Mopusonboarding
T473See and set which engine governs each product, from the Back OfficeNo BO screen shows or changes which engine a product progresses under; the only …Mopusadmin
T474Track thresholds move onto the engine; purge the ghost unlock thresholdsThe last progression values outside the engine are the per-track consecutive wee…Lopusschema
T475Onboarding questions born from the assigned engine, plus the founder’s own extrasengine_questions exists in schema and runtime reads none of it; the real polic…LopusonboardingT473
T476Level-up tests follow the engine: coverage per transition, and no test offered after the last phaseNothing checks that every engine-governed transition has a level-up test, and th…Mmixeddashboard
T477The engine seed stops masquerading as the engine: honest degradation, observedFour surfaces answer with the hardcoded RITUAL_CORE_ENGINE_SEED when the engin…Msonnetonboarding
T478fix: a racing double-submit of a passed evaluation writes duplicate “passed” history rowsTwo racing submits of a passed evaluation both land, writing two “passed” histor…Ssonnetplayer
T479The onboarding question library shows and edits visible_in_autotestvisible_in_autotest decides which questions the public auto-test asks, the adm…XSsonnetadmin
T480fix: two phase lookups still match raw sort_order against the phase numberT351’s convention — a phase number is an ordinal position, never a raw `sort_ord…XSsonnetdashboard

Completados en Junio

TicketTítuloEffortCerrado
T35Cookie consent banner + legal-surface completionM2026-05-29T23:08:35Z
T38Branded error pages: routing + HTTP layer (404, 500, offline)S2026-07-31T18:19:23Z
T40Auth hardening: rate limiting + health-data consentL2026-05-30
T41Rebrand system core (DESIGN.md v5, foundation for T97–T104)L2026-05-22T16:45:32Z
T42AI code review automation (PR-gate via Anthropic API)M2026-05-19T13:05:27Z
T43AI-Agent Security Checklist + Endpoint AuditM2026-05-21T09:15:00Z
T44LLM input/output hardening (provider-aware, Workers AI primary)L2026-05-22T23:00:00Z
T45Dependency supply-chain policy (lockfile + Dependabot + action pinning + SBOM)M2026-05-19T23:06:58Z
T47Repo layout convention + dep-cruiser enforcementM2026-05-20T18:02:47Z
T48Seeds consolidation (first layout migration)M2026-05-20T21:25:08Z
T49EU compliance umbrella (DPIA + DPAs + retention + breach SOP + VAT + cross-system GDPR cascade)L2026-06-24T05:12:29Z
T50Accessibility WCAG 2.1 AA baseline + CI enforcementM2026-05-20T22:45:03Z
T51Admin BO audit log (transversal)L2026-05-29T17:08:11Z
T52PWA contract + service worker strategy + Lighthouse gateL2026-08-02T13:53:24Z
T55Analytics tool selection + GDPR-clean wiringM2026-06-06T13:33:30Z
T5656b — Public status page + incident CMSL2026-07-20
T57Per-product retention design (Rituales / Módulos / Cápsulas)M2026-06-24T11:09:27Z
T60Cook thefittclub-eu-compliance-advisor skill via Skill CreatorS2026-05-29T14:51:09Z
T61Pre-MVP lead magnet (decision + production)M?
T67Skills as pre-commit / CI deterministic gateS2026-05-19
T68Setup Loops + migracion SendGridS2026-05-28
T69DB schema leads + bilingual guides + migrationsM2026-06-07T00:11:37Z
T70Pagina /auto-test (surface completa: UI + logica + resultado)L2026-07-28T17:09:59Z
T71Auto-test bonus PDF delivery (3 variants, ES+EN)M2026-08-03T11:34:18Z
T72/guias + /guias/[slug] (listado + detalle + form descarga)L2026-06-21T04:45:08Z
T73Ritual Core waitlist (Home section + founding members)M2026-06-24T12:26:21Z
T74Worker API /api/leads (POST)M?
T75Loops sync (webhooks + journeys)L2026-05-28
T76Email templates Loops (3x5 = 15 emails, ES/EN)L2026-05-28
T77PDFs a R2 + signed URLsS?
T78Analytics tracking (lead magnets)M2026-08-03T20:38:16Z
T80Test architecture: 4-layer pyramid + tests/e2e/ restructure + ADRM2026-05-19T07:44:39Z
T81Observability service unit tests + T27 QA theaterS2026-05-19T08:07:45Z
T84Adapt to react-router 7.15 + @types/react 19.2 strictnessS2026-05-20T08:36:47Z
T85i18n stack major upgrade (i18next 24→26 + react-i18next 15→17 + http-backend 3→4)M2026-05-22T23:38:54Z
T86Vite 6 → 8 upgradeM2026-05-27T09:20:15Z
T88Board + spec blocker auto-cleanup on ticket closeS2026-05-20T10:15:17Z
T89lint-board-blockers regex false positives on dates and filename slugsXS2026-05-20T13:22:28Z
T90Pre-commit hooksPath auto-wire + board lint coverageXS2026-05-20T15:54:04Z
T91PR subscription poll-back protocolXS2026-05-20T17:13:15Z
T92Resolve EvolutionChartsPanel ↔ ui/index.ts circular importXS2026-05-20T20:16:22Z
T94Breakpoints: Tailwind default contractS2026-05-21T13:51:54Z
T97Rebrand: auth surfaces (signup / login / reset-password)L2026-05-31
T98Rebrand: global navigation + footerM2026-05-30T12:53:53Z
T99Rebrand: dashboard “Mi espacio” Phase M (umbrella — close handoff gaps)M2026-06-16T20:43:53Z
T100Rebrand: player session shellL2026-06-19T17:25:00+00:00
T101Rebrand: onboarding flowM2026-06-14T00:47:48Z
T102Rebrand: landing Hito 1 (lead-magnet funnel homepage)M2026-06-13T09:41:35Z
T103Rebrand: account / profileS2026-06-20T15:29:12Z
T104Rebrand: error pages (404 / 500 / offline)S2026-07-31T11:17:18Z
T110Consolidar 4 audit jobs en uno (palanca #3 cost mitigation)M2026-05-22
T116Backfill dependency-justification.md rows missed by T85 (+ stale security-baseline.md note)XS2026-05-23T05:23:28Z
T119CI test gate: vitest unit + component as required check + anti-trivial-test defensesS2026-05-23T18:58:26Z
T121Skill .usage-log.jsonl persistence in remote-only modeXS2026-05-23T18:58:26Z
T136Canonical brand pages for LLM citation: /metodo + /faqM2026-06-16T10:12:11+00:00
T152De-medicalise UI copy: clinical framing → body-awareness languageXS2026-05-29T19:48:49Z
T153Resend email infrastructure (unified)L2026-05-28
T172Bilingual media + subtitles schemaL2026-06-01T18:46:07Z
T173i18n schema consistency cleanupM2026-06-01T16:30:55Z
T174i18n storage-pattern gate (enforce ADR-0010 mechanically)M2026-06-01T22:24:17Z
T175Design SSOT: single canonical source + versioning policyM2026-06-10T22:50:40Z
T176Component reuse contract + enforcement gateM2026-05-31T18:25:38Z
T177Forms SSOT: primitive library + migrate hand-rolled formsL2026-05-31T21:25:27Z
T178Buttons SSOT: route all CTAs through <Button>L2026-06-01T10:07:35Z
T179BentoCard consolidation: 6 files → 1 variant-driven primitiveM2026-06-18T17:03:24Z
T180Modal consolidation: composable bodies over one Modal baseM2026-06-24T13:36:00Z
T183BO: per-locale media upload (es/en) for catalog contentL2026-06-01T20:02:49Z
T184Retire legacy shared media columns + dummy per-locale media seedM2026-06-01T21:26:33Z
T190Reduce Cloudflare preview request consumption (avoid free-tier daily cap)XS2026-06-03T09:54:34Z
T193Zenler legacy membership migration (users + access + progress)M2026-06-05T12:08:08Z
T194Legacy payment transactions ledger (preserve full Zenler purchase history)M2026-06-05T17:21:21Z
T195Formalise payment_transactions retention + erasure in security-baseline.md §4XS2026-06-05T18:55:27Z
T197Onboarding consent coherence + skip-to-generic escapeL2026-06-25T16:42:17Z
T200Safe-start gate: no active program before postpartum-readiness floorM2026-06-26T10:46:00Z
T201fix: legacy seed generators emit BEGIN TRANSACTION (D1 rejects it)XS2026-06-05T18:22:56Z
T202Back Office payments ledger view (read-only)S2026-06-05T18:45:00Z
T203BO payments: membership filter + payment detail viewM2026-06-05T23:21:38Z
T204Ritual Core Legacy: product definition + cohort eligibility + entitlement seedM2026-06-06T08:22:27Z
T205Retention: computed re-engagement (pause / lapse)M2026-06-06T11:41:42Z
T210Footer + nav “Próximamente” state + resolve unlinked public pages (absorbs T165)M2026-06-06T14:35:45Z
T211Seed: Ritual Core Legacy phases (21 sessions/phase + 2→3 & 3→4 transitions)M2026-06-06T15:41:00Z
T214Legacy position backfill (currentPhase + mainSequenceDay from real Zenler progress)M2026-06-06T18:55:17Z
T215Archive Zenler data before losing accessM2026-06-07
T218Back Office: page media assets library (marketing images + videos)L2026-06-12T06:03:16Z
T219Front-end page-asset consumption layer (slot registry + hook + fallback)M2026-06-12T19:07:40Z
T220Rebrand: biblioteca (member catalog)L?
T221Rebrand: fase actual (current-phase detail surface)M2026-06-16T15:45:04Z
T222Rebrand: module & capsule detailM2026-07-01T20:29:14Z
T223Drift-audit: auth surfaces (T97) vs Main StyleS2026-06-11T08:25:21Z
T224Drift-audit: global nav + footer (T98) vs Main StyleS2026-06-11T15:08:24Z
T225Fix: password show/hide toggle dead until field interaction under iOS autofillS2026-07-01T22:26:50Z
T226Nav state matrix + scroll-overlap aterrizaje (Main Style)M2026-06-11T17:09:34Z
T230Fix: home loader 500s when page-asset resolution fails (page_media_assets missing in prod D1)XS2026-06-13T10:17:44Z
T231Dashboard hero: session-meta block (stats + materials)S2026-06-13T17:44:59Z
T232Dashboard collection data projection (DAL for the vitrina)M2026-06-13T18:12:50Z
T233Dashboard “Tu Colección” vitrina + StateVacio convergenceL2026-06-13T19:59:13Z
T234Dashboard progress card → FaseActualCardM2026-06-14T14:24:49Z
T235Capsule “Reto” (challenge) product concept: data + backofficeM2026-06-13T20:59:38Z
T236Collection cards: per-addon urgency countdownS2026-06-13T22:41:26Z
T237Brand doctrine: motivation vs anti-gamification (rewrite the rule)S2026-06-13T17:44:59Z
T239BO-configurable onboarding step groups (data-driven wizard, per product)L2026-07-02T12:24:39Z
T240Playwright E2E infra fix (auto-install Chromium in ephemeral containers)XS?
T243Back Office media: upload reliability + CF resource deletion + subtitle validationM2026-06-15T07:46:13+00:00
T244Scalable multi-surface page-asset slots (extends T219)M2026-06-15T15:29:40Z
T254Back Office: pick from existing Cloudflare Stream / Images library (no re-upload)M2026-06-15T12:14:47Z
T256BO media library + landing media rendering (CF Images variants, editor preview, founder video, list filter/sort/paginate)XL2026-06-15T18:40:31Z
T258Landing card media (BO-managed) + hero image-or-videoM2026-06-15T20:15:51Z
T261Rebrand: El Método (/metodo · /method)M2026-06-19T21:49:13Z
T262Rebrand: FAQ (/faq)M2026-06-19T23:43:25Z
T263Rebrand: Soporte (/soporte · /support)M2026-06-20T08:28:22Z
T264Rebrand: dashboard StateVacio / StateOferta — land the HERO “Estados del Dashboard” designL2026-06-16T19:13:17Z
T265Fix: dashboard needs_onboarding classifier disagrees with the onboarding route (CTA bounces to dashboard)S2026-06-16T20:38:34Z
T266Physical-profile delivery model: decouple delivery_type from postpartum recencyL2026-06-19T06:37:45Z
T271fix: completed prod_ritual_core_legacy sessions don’t appear in “Your library”S?
T274Account credential: role/tier badge + member numberM2026-07-25T15:55:00Z
T275Account privacy section: GDPR export + delete logicL?
T276Account physical: wire the stimulus readout to the real derived planM?
T278Profile avatar upload (member photo, R2-backed)S2026-06-25
T283Wire lead-magnet email delivery (/api/leads → Resend)S?
T287fix: guide PDF upload presign returns HTML (UI-route action) → move to resource routeS?
T289fix: R2 signing hard-500s authed surfaces (missing creds / sign failure) → degrade gracefullyS2026-06-21T17:40:00Z
T291fix: Fase 1 techniques broken in the app (BO works) — library queries wrong product for legacy users; player technique video not rendering + desktop overlapM2026-06-23T20:15:28Z
T295Unified TechniqueViewer redesign (player + biblioteca) + acquisition ceremonyL?
T297Technique acquisition loop polish: immersive library viewer + “new technique” library-nav indicatorM?
T298Dashboard welcome row: mobile edge/border-radius clipping of kicker + switcherXS2026-07-03T14:45:25Z
T317AEPD pre-launch: Privacy Policy (Art. 13) + RAT + go-live checklistM2026-06-25T16:42:17Z
T319Profile ambassador programme (referral code + discount + points ledger + waitlist)L2026-08-02T10:47:40Z
T320Lead multi-tag model (accumulating funnel/origin/lifecycle tags) + Zenler re-importM2026-06-27T17:19:30Z
T329Accessibility baseline: resolve the expired T41 contrast deferrals for realM2026-07-01
T338Fix: prep-mode dashboard loop — restore START + retarget prep banner to the playerS2026-07-03T14:00:08Z
T353fix: dashboard progress counters must reflect reality (same-day repeats, cross-product leak, completion idempotency)M2026-07-26T17:05:00Z
T354fix: player completion screen shows false “end of this phase” — next-session states (locked / loop / next phase / continue)M2026-07-26T22:20:56Z
T355fix: library seal badge never clears (multi-unlock asymmetry, per-device state, techniques-facet-only witness)M2026-07-28T10:16:24Z
T356fix: trained-day bucketing uses UTC, not the member’s real day (Europe/Madrid evening sessions land on the wrong date)M2026-07-27T11:11:22Z
T358fix: session shows “0 min” when routine blocks are tagged under a non-resolved product-modality (per-modality duration fallback)S?
T364fix: the CI flags step turns a tolerated warning into a red buildXS2026-08-02T13:06:57Z
T368E2E progress-state fixtures: seed personas for every player next-session stateM2026-07-26T22:20:56Z
T371E2E fixture accounts still live in production carrying real training dataS2026-08-05T09:14:12Z
T374Doctrina v4: ventanas F3-F4 [3,6], config-only (sustituye el suelo plano [5,5])S2026-07-28T17:09:59Z
T377fix: tfc-brand-vocab-lint is blind to the brand’s forbidden tech-copy phrasesXS?
T378fix: Art. 9 health data is processed with no demonstrable consent record for pre-ledger membersM2026-07-29T23:32:57Z
T380fix: the sign-in form puts her password in the URL if she submits before the page hydratesXS2026-07-29T23:35:58Z
T381Contact the members holding Art. 9 data without a consent recordS2026-08-05T07:56:41Z
T382fix: the verify-email wait state drifted from its delivered designS2026-08-07T13:36:29Z
T389Shell viewport band: a page is the viewport minus the top navigationS2026-07-31T11:17:18Z
T403fix: a switched-off ambassador programme takes the whole profile page downXS2026-08-02T13:04:34Z
T406fix: the phase-schedule editor deletes every day it declined to showS2026-08-02T14:59:29Z
T409Testimonial capture form + curation SSOT (“Tu historia”, circular arc 4)M?
T423study: the progression engine and which of its parameters the Back Office should ownM2026-08-08T08:16:47Z
T424One owner for host configuration (canonical origin, brand entity @id, link base)S2026-08-08T08:35:35Z
T425fix: the auto-test pill row hardcodes the phase count the Back Office ownsXS2026-08-07T20:41:25Z
T426fix: the SessionStart hook never wires core.hooksPath in a remote sessionS2026-08-08T13:29:47Z
T427Seed phase_unlock_conditions for phases 2, 3 and 4 (the gate silently falls back to code)S2026-08-11T11:07:03Z
T428One question bank, soft voice: onboarding and auto-test ask the same questionsL2026-08-11T17:01:37Z
T429The progression engine, rebuilt: per-phase base weeks + per-answer rules, no clampXL2026-08-11T21:31:07Z
T430The Back Office grid: every answer’s effect on every phase, with impact previewXL2026-08-12T06:15:06Z
T431fix: the auto-test publishes the wrong product’s numbersS2026-08-10T15:55:41Z
T432Member-facing phase descent, and free movement between phases already earnedL2026-08-12T10:19:13Z
T471fix: persistEngine rewrites the engine in sequential statements — a mid-write death serves a mutilated engine to every memberS2026-08-12T07:27:37Z
T472Engine grid legibility: label the cells, explain saturation where it happens, and a guide that matches the screenM2026-08-12T21:43:29Z

Auto-generado por scripts/maintenance/generate-vault-dashboard.mjs. Última corrida: 2026-08-13.