Tablero de desarrollo — TheFittClub MVP

Última sincronización: 2026-06-25 (auto via GitHub Action — no editar a mano). Repo: gala1234/thefittclub — board fuente: _docs/03-tickets/00-board.md. Pipeline: 01-pending/02-active/03-qa/04-done/.


🧭 Orden de ejecución (brújula)

Espejo del bloque compass del board (_docs/03-tickets/00-board.md). Editar allí, no aquí.

🧭 June — execution order (compass, refreshed 2026-06-20). North star unchanged: a bilingual app functional without payments — landing → lead-magnet funnel (email capture) → signup → onboarding → dashboard + player, with legal/compliance and analytics. No Stripe. Foundations are DONE — auth (T97), dashboard (T99), player (T100), landing (T102), leads schema+API (T69/T74), analytics (T55), legal pages (T35), auth hardening (T40), audit log (T51), EU advisor skill (T60), de-medicalise copy (T152), and the whole i18n data layer (T172/T173/T174). What remains for the 07-01 launch is the funnel surfaces, onboarding+safety, the compliance umbrella, and the content-archival deadline.

  • 🔴 Deadline-driven (external clock — schedule FIRST, do NOT slip): T300 (archive ALL Zenler data before account access expires ~1mo; renumbered from T215) — enables T65 + Q3 personalization. No code dep; purely a calendar gate.
  • Critical path — the funnel (still the heart, mostly unbuilt): T61 (decision + production) → { T77 (PDFs→R2) ∥ T70 (/auto-test) ∥ T73 (Ritual Core waitlist) } → T71 (/auto-test/resultado) → T72 (/guias) → T78 (lead-magnet analytics). Every upstream blocker (T69, T74, T55) is already closed.
  • Onboarding + safety gate (compliance pre-launch): T101 (rebrand onboarding) → T197 (consent coherence + skip-to-generic escape) → T200 (postpartum safe-start floor). T239 (BO configurable step groups) supports but is off the launch-critical line. Legal sign-off gates T197/T200 copy.
  • Compliance / security lane (must land before launch): T49 (EU umbrella — DPIA + DPAs + VAT + cascade) · T52 (PWA contract + service worker + Lighthouse).
  • Rebrand tail (parallel): T103 (account/profile — ACTIVE) → T222 (módulo/cápsula detail). T104 (error pages) reclassified Beta; T221/T261/T262/T263 already in QA/done.
  • Content pipeline: T300 (ex-T215) → T65 (Zenler Ritual Core Legacy → MVP — needs re-activation) → T271 (legacy completion not surfaced in library — fix).
  • Stabilise the harness (fixes — noise hides real regressions): T187 (nightly full-E2E always red) · T188 (auth E2E register→login) · T267 (profile mutation 500) · T225 (password show/hide toggle dead under iOS autofill).
  • Retention foundation: T57 (contract-only retention-model.md + lint gate; T205 already active).
  • Ordering traps: T54 (multi-currency) is payments-adjacent — keep OUT of June unless the waitlist needs it, and never start before T73 · T180 (Modal consolidation) is polish — land after the funnel · T78 needs T70-T73 live first · i18n data-layer Wave 0 (T172/T173/T174) is CLOSED — the compass:i18n block below now only drives the Wave 2 lead-magnet chain.

🧭 i18n / data-layer — execution order (compass, refreshed 2026-06-20). North star: a single canonical i18n storage pattern (ADR-0010) before building on it, plus correct bilingual delivery across text, media and email. Wave 0 (the data-layer GATE) is CLOSED — the schema is converged and locked.

  • ✅ Wave 0 — DONE (data layer sanitized + locked): T173 (dropped zombie LocalizedText columns + physical_focus_translations) → T172 (per-locale media + mixable subtitle tracks) + T174 (deterministic storage-pattern gate). T96 (drop legacy routines) stays Hito Beta — different tables, never blocked T172/T173.
  • Wave 2 — bilingual content surfaces (Junio · ON the canonical base): the lead-magnet chain ships bilingual day 1 — this is the same critical path as compass:junio above (T61 → { T77T70T73 } → T71T72T78). No separate i18n work — bilingual is a build-time invariant of each surface.
  • Wave 1 — bilingual email (Hito Beta; only needs users.language, already exists): T171 (branded ES/EN transactional emails + per-user locale).
  • Wave 3 — final copy sweep (Hito Beta, last): T24 (app bilingual completeness — copy strings only), so it also audits the new email + lead-magnet strings.
  • One-liner: Wave 0 closed · Junio lead-magnet chain ships bilingual (see compass:junio) · T171 + T24 are the remaining Beta i18n waves.

Salud del MVP

Métricas computadas desde el repo en cada push a main. Si un número se ve raro, ajustar la realidad en la fuente correspondiente — no editar este archivo.

Cuadro de mando

MétricaHoyFuente
% MVP realizado (effort)66% (549 de 832 pts) · 15 tickets sin estimar (asumidos M)ticket headers Effort:
% MVP realizado (count)70% (179 de 255)_docs/01-core/mvp-scope.md
% Prod readiness7% (2 de 27)_docs/01-core/production-readiness.md
Legacy abierto6 (1 TD + 5 LD)_docs/01-core/legacy-inventory.md
Seguridad? moderate npm audit · headers present · auth 4/6 ✅_docs/01-core/security-baseline.md
Velocity real (h/pt)4.58 h/pt · 0.219 pts/h (n=160)spec headers Started: + Closed:
Velocity calendar108.13 pts/week (n=128, last 4 wks)board’s Done table 4-col rows
Launch range (estimado)2027-09-21 (early) – 2028-05-04 (late, +50% buffer) · source: real (pts/hour) · 65 semanas (20h working/week)computed from velocity + remaining points

Distribución del backlog pending (MVP)

EjeDistribución
EffortXS: 6 · S: 15 · M: 34 · L: 20 · XL: 0 · sin estimar: 0
Modelo LLMsonnet: 33 · opus: 13 · mixed: 29 · sin asignar: 0

Salud por Hito

Progreso desglosado por hito. Cada fila muestra tickets done/en vuelo/pending y el % completado weighted por effort.

HitoDeadlineDoneEn vueloPendingPts done/total%Restante
Junio2026-07-01 (6d)110017385/467.5 pts82%82.5 pts
Beta2026-07-15 (20d)60134168.5/269 pts63%100.5 pts
Beta Launch2026-09-01 (68d)301114/65 pts22%51 pts
Producción2026-12-01 (159d)40127.5/59 pts13%51.5 pts
Deferred1202142.5/92 pts46%49.5 pts
Sin hito320184/87 pts97%3 pts

🎯 Hito Junio: 82% completado · 82.5 pts restantes · ETA: 2026-11-04 (early) – 2027-01-09 (late) · 19 semanas · source: real (pts/hour).

Insight

Código MVP: 66% hecho por effort (70% por count). Producción listo: 7%. La cifra que importa es la weighted; la count es para continuidad histórica. El gap entre código listo y producción listo es la diferencia entre “compila y funciona” y “puedo cobrar dinero sin que se rompa el viernes a las 11pm” — lo que falta para go-live es operaciones, contenido, canales y legal, no código.

Pipeline en estado actual

  • WIP (en vuelo): 1 active · 0 QA = 1 abiertos.
  • Backlog: 97 pending.
  • Done con fecha en el board: 190 entradas registradas (190 con Effort registrado).

Outreach pillars (pre-MVP)

Hitos de audiencia que corren en paralelo al MVP. Detalle + pilares de contenido en _docs/01-core/mvp-scope.mdOutreach pillars.

HitoPlazoEntregableTicket
H13-4 semanasLead magnet pre-MVP elegido + producido (PDF / audio / video). Disponible en R2, signed-URL on form submission.T61
H24-6 semanasLanding pública con email capture sirviendo H1. Forma parte de T36 con LEAD_MAGNET_VARIANT=pre-mvp.T36 (consumes T61)
H36-10 semanasBlog público /blog con 4-6 artículos evergreen, uno por pilar.T53 (promovido a MVP)
H48-14 semanasNewsletter bi-weekly en producción. ≥4 emisiones publicadas. Workflow estable (≤2h founder time/emission).T62

Outreach activity (cumulative)

Métricas de trabajo no-dev. Fuente: _docs/01-core/outreach-metrics.md (actualización manual al cerrar cada pieza).

CategoríaCountNotas
Instagram posts publicados0canal primario — 100% conversiones históricas
YouTube videos publicados0long-form companion (pro setup disponible)
Newsletters publicadas0
Blog articles publicados0
Lead magnet downloads (semanas registradas)0
Beta sessions completadas0

Esta semana (2026-06-22 → 2026-06-28)

Presupuesto: 4.4 pts · fuente: real velocity × 20 working h/wk

Foco principal (en activo): Ticket 156 — Eval harness: wire the live agent-runner seam (Effort M, model opus)

Obligaciones no-dev esta semana (2 pts):

  • Instagram — 3 posts/semana (canal primario) · rotating 4 pillars (2 pts) — Independiente del cluster bi-mensual. 1 de los 3 puede ser teaser/derivado del cluster en curso.
  • Founder energy + journal review · founder (0 pts) — Tracked as 0 pts — habit, not a project deliverable.

Próximas 4 semanas (lookahead)

Proyección de carga por semana. Cada semana consume el presupuesto en obligaciones no-dev primero, después walks la cola de prioridad hasta agotar puntos disponibles.

SemanaTickets proyectadosPtsObligacionesRiesgo
Wk1 (2026-06-22)T528/2.4000000000000004Instagram · Founder
Wk2 (2026-06-29)T658/2.4000000000000004Instagram · Founder
Wk3 (2026-07-06)T708/1.4000000000000004Instagram · Founder · Monthly
Wk4 (2026-07-13)T718/2.4000000000000004Instagram · Founder

Próximos 3 meses — big rocks

Tickets XL/L proyectados por mes basados en la cola de prioridad + velocity. Los XL definen el ritmo; un mes con XL es un mes que no entra mucho más. Launch range: Sept-26 → Ene-27.

MesTickets proyectadosBig rocks (XL/L)
2026-06T52 · T65T52 (L) · T65 (L)
2026-07T78 · T300 · T24 · T28T28 (L)
2026-08T29 · T63 · T56 · T14 · T30

Active (en implementación)

Ticket 156 — Eval harness: wire the live agent-runner seam

Branch: claude/ticket-t156-am7po8 (remote-session branch overrides the feat/156-* convention — precedent T124/T163; recorded in the board row) · Track: infra · Hito: Beta · Domain: infra

Wire the real “engine” of the agent regression eval (T125): today the plumbing is tested but the agent never actually runs — the SDK connector is still a placeholder. This change makes it run live.


QA (en verificación)

(vacío — ningún ticket en QA ahora mismo)


Pending (backlog, agrupado por Hito)

Next up: Ticket 52 — PWA contract + service worker strategy + Lighthouse gate · mvp.

Junio (deadline: 2026-07-01) — 17 tickets · 82.5 pts

#TicketTítuloTrackEffortModelDomain
552PWA contract + service worker strategy + Lighthouse gatemvpLmixedother
765Zenler Content Pipeline: Ritual Core Legacy → MVPcontent-migrationLmixedcontent-pipeline
1870Pagina /auto-test (UI + logica)mvpLmixedother
1971/auto-test/resultado (3 variantes dinamicas)mvpLmixedother
2678Analytics tracking (lead magnets)mvpMsonnetother
300300Archive all Zenler data before account access expires (~1 month)content-migration,Ssonnetcontent-migration
200Safe-start gate: no active program before postpartum-readiness floormvpMopusonboarding
222Rebrand: module & capsule detailmvpMmixeddesign
225Fix: password show/hide toggle dead until field interaction under iOS autofillmvpSsonnetauth
239BO-configurable onboarding step groups (data-driven wizard, per product)mvpLmixedonboarding
271fix: completed prod_ritual_core_legacy sessions don’t appear in “Your library”mvpSsonnetother
274Account credential: role/tier badge + member numbermvpMsonnetaccount
275Account privacy section: GDPR export + delete logicmvpLopusaccount
276Account physical: wire the stimulus readout to the real derived planmvpMsonnetaccount
277Wire real billing/entitlements to the profile Subscription UImvpLmixedbilling
298Dashboard welcome row: mobile edge/border-radius clipping of kicker + switchermvpXSsonnetdashboard
319Profile ambassador programme (referral code + discount + points ledger + waitlist)mvpLmixedaccount

Beta (deadline: 2026-07-15) — 34 tickets · 97.5 pts

#TicketTítuloTrackEffortModelDomain
2924App bilingüe completeness passmvpMsonnetother
3028D1 disaster recovery: tested backup/restore tooling + secrets rotationmvpLopusother
3129Pre-launch verification: perf SLA + happy-path E2E theatermvpMsonnetother
3263Beta program design + execution (1-2 months free, polish before paid launch)mvpMsonnetother
3356Status page + maintenance mode surfacemvpMsonnetother
3414BO ID normalization (mass migration, pre-prod)infraSsonnetschema
3530Operational emergency runbookmvpSsonnetother
3993A11y retrofit: tighten jsx-a11y warnings to errorsmvpLsonnetother
39105PWA native UX patterns (push, ⌘K search, FAB empezar sesión)mvpLmixedpwa, global UI
40115Journal write surface (member-facing entry creation UI)mvpMmixeddashboard
51143Nightly E2E failure escalation policy (auto-page / auto-disable after N consecutive failures)infraXSsonnetinfra
56155Eliminate the separate close PR (collapse lifecycle to ≤2 PRs)infraMopusother (infra / devops — ticket lifecycle harness)
59160Remove eslint-plugin-jsx-a11y ESLint-10 peer override (upstream-gated)infraXSsonnetother
60161Back Office admin design-token restyle (retire dark-SaaS chrome)polishSsonnetother
61162Harden the migration-validation CI job (close the latent-baseline gap)infraSsonnetother
5151b — Catalog mutation audit loggingpost-mvpMsonnetother
54Multi-currency + multi-region pricing strategy (LATAM + EU)mvpMsonnetother
104Rebrand: error pages (404 / 500 / offline)mvpSmixederror
168Account recovery: email-switch action + new-device sign-in alertmvpMmixedauth
170Social login: Google + Apple (activate the dormant OAuth buttons)mvpMmixedauth
196Per-product Bitácora + Diario (“Tu seguimiento” in module detail)mvpMmixeddashboard
206Retention: action-event emission (T57 slice C)mvpMmixedanalytics
207Retention: moment-driven celebratory cadence (T57 slice D)mvpMmixedemail
208Retention: in-app surfaces (T57 slice E)mvpMmixeddashboard
242Surface Playwright Chromium install failure in SessionStart hookinfraXSsonnetinfra
272Remove orphaned .tfc-onb-calc-* / .tfc-onb-grid-pattern CSS rulespolishXSsonnetdesign-system
273Reconcile the .btn-gradient base atom with the handoff cta.css SSOTpolishMsonnetdesign
281Email unsubscribe endpoint (GDPR/CAN-SPAM one-click)mvpSsonnetemail, compliance
282Leads growth insights (cross-leads analytics)mvpMsonnetadmin, analytics
284Back-Office email dashboard (thin layer over Resend API)mvpMsonnetemail, back-office
288English translation quality sweep (detect ES-in-EN + translate)mvp,Lmixedcontent-migration
307Library seal: “discharge” farewell flash when the acquisition ceremony is witnessedmvpXSsonnetplayer
315Tier the heavy audit CI job off every PR sync (replicate the ADR-0006 E2E pattern)infraMopusother
318Separate the journaling consent from the onboarding consentmvpMopuscompliance

Beta Launch (deadline: 2026-09-01) — 11 tickets · 51 pts

#TicketTítuloTrackEffortModelDomain
3936Public landing + pricing pages + Cápsula Cero entrymvpLmixedother
4053Blog /blog for SEO + GEO with strict wellness/fitness editorial guardrailsmvpMmixedother
4137Member account self-service (cancel, password, data export, delete)mvpMsonnetauth
4238Branded error pages: routing + HTTP layer (404, 500, offline)mvpSmixedother
4331Embajadoras: códigos + tracking + descuento amiga + ledger de puntosmvpLmixedschema
4462Cross-channel content production workflow (Instagram + YouTube + blog + newsletter)mvpLmixedother
4525Support form backend (tickets + auto-reply)mvpMsonnetother
50181Ritual Core: sales page Hito 3 (máxima conversión)mvpLmixedother
32Embajadoras: dashboard, share links, redemption UXpost-mvp??dashboard
279Diario /blog: build the public surface from the closed Main Style designpost-mvpMsonnetdesign
280Prensa /prensa · /press: public press surface (net-new)post-mvpMsonnetdesign

Producción (deadline: 2026-12-01) — 12 tickets · 51.5 pts

#TicketTítuloTrackEffortModelDomain
4620Stripe checkout + custom page + webhooksmvpLmixedschema
4721Oferta urgencia 72hmvpMsonnetdashboard
4822Gifting / gift_vouchersmvpMsonnetschema
5033WhatsApp Business + AI inbound assistmvpLmixedother
5134BO admin: Stripe customer + purchases panelpost-mvp??admin
5239Funnel analytics + event trackingmvpMsonnetother
5419Multi-ritual weekly distribution algorithmpost-mvp??dashboard
5564Friction stacks: comprimir loop de producción IG de 15 a 5 pasosinfraMmixedother
57213Meta CAPI: deduplicated Purchase from app checkout (pixel + server)mvpLmixedanalytics
167Apply edge WAF rate-limit rule on domain migrationmvpXSmixedinfra
192Custom domain cutoverinfraSsonnetinfra
209Retention: Back Office dashboard (T57 slice F)mvpLmixedadmin

Deferred — 21 tickets · 49.5 pts

#TicketTítuloTrackEffortModelDomain
03Member routes: loading skeletons + i18n cleanuppolish??dashboard
10Onboarding / dashboard UI handoff (UI-only addendum)post-mvp??onboarding
15Admin detach + purge safe flow (product deletion)post-mvp??admin
17R2 Media Browserpost-mvp??admin
18Admin routes: tripartite pattern refactorpolish??admin
111Skill tfc-ai-pulse: structured quarterly AI tooling review (parked)infraSopusother (meta — Claude Code skill / dev tooling)
112Migración a GitHub Organization con plan Team para branch protection enforcement (parked)infraMopusother (infra / devops — repo administration)
126D1 per-PR branching (PARKED — deferred follow-up)infraMopusinfra
127OpenTelemetry distributed tracing (PARKED — deferred follow-up)infraMopusinfra
164In-app notifications: header badge + center (consumes T98 slot)mvpMmixedglobal UI
165Post-T98 unlinked public pages: keep/delete decisionpolishSsonnetother
189Adversarial E2E subagent (tfc-adversarial-e2e)infraSopusinfra
255Unify the admin-BO design carve-out into a single shared sourceinfraSsonnetinfra
259Fix horizontal overflow on /admin/assets (mobile)polishSsonnetinfra
285Resend marketing layer (the never-built half of T153)mvpLsonnetemail
290Content-only seed mode: populate prod (catalog + guides + media) without users / payments / leadsmvpMsonnetinfra
301Auto-derive active-goal.md from board + queue state (retire the hand-maintained handoff)infraSopusinfra
308infraSsonnetinfra
309infraSsonnetinfra
310Modal .tm-* token-tier visual adoption (surface ticket)polishMmixedother
316polish: SessionHero modality switcher — distinct keyboard focus ring on optionspolishXSsonnetdashboard

Sin hito — 1 tickets · 3 pts

#TicketTítuloTrackEffortModelDomain
306---untagged?opus-

Deferred (migrates to Beta when ADR-0005 lands) — 1 tickets · 8 pts

#TicketTítuloTrackEffortModelDomain
130Brand / product vocabulary SSOT (with mandatory ADR-0005 investigation)infraLopuscontent-migration

Done reciente

TicketTítuloCerrado
278Profile avatar upload (member photo, R2-backed) — enable the disabled control with updateAvatar/removeAvatar (R2 MEDIA_PUBLIC, no migration) + multipart action intents + AvatarUploadField + RRSS square-crop modal (AvatarCropModal + react-easy-crop + avatar-crop canvas util, WEBP optimize). QA defects fixed live: CSP img-src blob: (R-T278-9) + oval credential ring display:flex (R-T278-10, headless-measured). design-reviewer 7/7 ×2; theater PASSED (founder-confirmed live); R-T278-1..10 binding. Ambassador half spun out → T319. PR #712.2026-06-25
314fix: SessionHero switcher listbox a11y — collapsed <li role="option">+<Button> into one focusable option (nested-interactive) + aria-label on <ul role="listbox"> (aria-input-field-name); both axe rule-disables re-enabled as live assertions. Zero visual change (old .btn-text computed box reproduced exactly, verified via compiled-CSS headless measurement → R-T314-5). Test-first (RED e7bc9d2 before fix). Design-reviewer 7/7; theater passed; R-T314-1..5 binding. PR #701.2026-06-25
313fix: decorative DashboardMediaImage fallback no longer exposes <div role="img" aria-label=""> (axe role-img-alt) — decorative alt="" graphic hidden from the a11y tree (aria-hidden); named case unchanged. Test-first (RED before fix); re-enables the rule-disabled axe assertion in BentoHeroCard + SessionHero DOM tests. Design-reviewer 7/7; theater 12/12; R-T313-1 binding. PR #699.2026-06-25
312DOM test coverage for the 20 T311-flagged interactive components — a tests/component-dom/<Component>.test.tsx for every focus/keyboard/aria component the tfc-dom-interaction-coverage --mode=full gate reported uncovered (ui→layout→dashboard→library→player), driving the uncovered count 20→0. Each test exercises the real interactive contract (managed/initial focus, Tab/Shift+Tab trap, restore-focus, Escape/close, aria state) + a WCAG-tag-scoped vitest-axe pass, modelled on Modal.test.tsx. dom project testTimeout→20s (axe CPU contention). Test-only (no production code). 3 pre-existing a11y violations isolated behind documented per-assertion rule-disables → T313/T314. Theater 14/14; R-T312-1..3 binding. PR #697.2026-06-25
311DOM testing infrastructure — second vitest project (dom, jsdom) alongside the untouched node project, with @testing-library/react + user-event + vitest-axe and a shared tests/setup/dom.ts. Proof-of-value tests/component-dom/Modal.test.tsx (7/7) locks the T180 a11y contract in a real DOM — initial-focus, Tab/Shift+Tab trap-wrap, single-focusable no-churn (PR #694 CONCERN #1), restore-focus, Escape, WCAG axe. Wired into preflight + CI (node-scoped coverage + dedicated DOM step). Adoption gate tfc-dom-interaction-coverage (WARN-only: pre-commit §13 diff nudge + audit-design-ci.sh §11 full-repo trend) makes the layer self-adopting; 20-component backlog → T312. dep-bump (5 test-only devDeps, no runtime/bundle impact). Theater iteration 1 PASSED; R-T311-1..4 binding. PR #696.2026-06-24

Para histórico completo (incluye tickets pre-redesign sin fecha): _docs/03-tickets/00-board.md en el repo.


Cómo leer este tablero

  • Active = lo que estoy construyendo ahora. Cada ticket tiene una rama abierta.
  • QA = implementación terminada y commiteada, theater en ejecución (_docs/06-prompts/03-qa-ticket.md).
  • Pending = ideas con spec escrito que aún no pueden tocarse sin “go” explícito.
  • Done = mergeado a main. El spec está bloqueado en 04-done/ con su ## Regression contract.
  • Hito indica el milestone objetivo: Junio (lead magnets + legacy) · Beta (polish) · Beta Launch (Cápsula Cero) · Producción (Stripe).
  • Track clasifica el ticket — ver tabla ## Tracks más abajo para descripción de cada uno y si cuenta o no al % MVP.
  • Effort (T-shirt) estima horas de Claude Code: XS<1h (0.5pts) · S<4h (1pt) · M=4-12h (3pts) · L=12-30h (8pts) · XL=30h+ (20pts). Weighted % usa estos puntos.
  • Model indica el LLM recomendado para implementar: sonnet (mecánico, sigue spec), opus (síntesis arquitectural / branding), mixed (cada fase su modelo).

Tracks

Cada ticket lleva un Track: en el header de su spec. Define la naturaleza del trabajo y si cuenta al % de progreso del Hito.

TrackDescripción¿Cuenta al % MVP?
mvpFuncionalidad core para lanzamiento (rutas, dominio, UI de producto, autenticación, contenido del MVP).✅ sí
infraPlataforma, CI, pipelines, harness, observabilidad, hooks. Habilita ritmo seguro.✅ sí
post-mvpDiferido a Beta o post-launch. No bloquea el lanzamiento del Hito Junio.❌ no
polishMejoras de pulido (DX, refactor incremental, microcopy) sin cambio de contrato.❌ no
content-migrationMigración / consolidación de contenido (Ritual Core Legacy → MVP, copy bilingüe).❌ no — el contenido cuenta caso por caso, no globalmente

Para detalle técnico de cualquier ticket, abrir el spec en el repo: ~/Desktop/TFC/thefittclub/_docs/03-tickets/<carpeta>/<NN>-<slug>.md

Para detalle de cualquier métrica, abrir la fuente correspondiente en ~/Desktop/TFC/thefittclub/_docs/01-core/.


Auto-generado por scripts/maintenance/generate-vault-dashboard.mjs. Última corrida local/CI: 2026-06-25.