TruePresence Developer Reference

Virtue of the Week

52 Thomistic virtues mapped to the Catholic liturgical cycle · Based on Andrew Abela's Superhabits framework
This Week's Virtue
Loading…

Advent — Watching and Waiting Weeks 1–4 · Fixed

WkVirtueAquinas NameCardinalLiturgical ContextConnection
1 Foresight Foresight Prudence Advent 1 — "Stay awake, be ready" Advent opens with the command to watch. Foresight is the virtue of looking ahead, reading the signs, and anticipating what God is bringing.
2 Preparedness Caution Prudence Advent 2 — John the Baptist: "Prepare the way" The Baptist's entire mission is preparation. Preparedness (caution) means taking practical steps now for what lies ahead.
3 Prayer Prayer Justice Advent 3 (Gaudete) — "Rejoice always, pray without ceasing" Gaudete Sunday calls us to rejoice — and the means is prayer. Paul's command in 1 Thessalonians 5:17 makes prayer the virtue of this joyful week.
4 Humility Humility Temperance Advent 4 — The Annunciation to Mary Mary's fiat — "Let it be done to me" — is the supreme act of humility. She receives the greatest mission in history without a trace of self-assertion.

Christmas — God With Us Weeks 5–6 · Fixed

WkVirtueAquinas NameCardinalLiturgical ContextConnection
5 Adoration Adoration Justice Christmas / Holy Family — The Nativity Shepherds fall to their knees. Angels sing. The only fitting response to the Incarnation is adoration — giving God the worship that is His due.
6 Generosity Generosity Justice Epiphany / Baptism of the Lord — The Magi bring gifts The Magi travel far and offer their finest treasures. Epiphany reveals that the generous heart recognizes the King.

Ordinary Time I — Called and Sent Weeks 7–13 · Flex

WkVirtueAquinas NameCardinalLiturgical ContextConnection
7 Teachability Docility Prudence OT Week 2 — "Come and see" / Calling of disciples The first disciples drop everything to learn from Jesus. Teachability is the willingness to be formed by a master — the starting point of discipleship.
8 Courage Fortitude Fortitude OT Week 3 — "Follow me" / Early ministry Leaving nets, tax booths, and families requires fortitude. The call to follow Christ is always a call to be brave.
9 Truthfulness Truthfulness Justice OT Week 4 — The Beatitudes The Beatitudes turn the world's values upside down. Only the truthful person can receive these hard sayings without flinching.
10 Integrity Honesty/Beauty Justice OT Week 5 — "You are salt and light" Salt that loses its flavor is thrown out. Light hidden under a basket serves no one. Integrity means being the same person inside and out — radiant and uncompromised.
11 Reasoning Reason (Prudence) Prudence OT Week 6 — "You have heard it said… but I say to you" Jesus deepens the Mosaic Law through rigorous moral reasoning. He does not abolish but fulfills — showing that reason illuminated by faith goes deeper than the letter.
12 Forgiveness Clemency Temperance OT Week 7 — "Love your enemies" The most radical command in the Gospel. Forgiveness is the temperance virtue that restrains our instinct for retaliation and frees us to love beyond merit.
13 Practical Wisdom Prudence Prudence OT Week 8 — "The wise man built on rock" The capstone of the Sermon on the Mount. Prudence — practical wisdom — is the master virtue that builds one's life on the solid foundation of Christ's teaching.

Lent — Dying to Self Weeks 14–19 · Fixed

WkVirtueAquinas NameCardinalLiturgical ContextConnection
14 Restraint Abstinence Temperance Lent 1 — Ash Wednesday / Temptation in the Desert Lent begins with fasting. Jesus refuses bread, spectacle, and power. Restraint — the habit of saying no to legitimate goods for a higher purpose — is the gateway to Lenten conversion.
15 Fasting Fasting Temperance Lent 2 — The Transfiguration The disciples glimpse glory on Tabor but must descend. Fasting strips away comfort so that we can see clearly — the Transfiguration reveals what fasting prepares us to behold.
16 Self-Discipline Temperance Temperance Lent 3 — Conversion and repentance Mid-Lent deepens the call to interior conversion. Self-discipline is the cardinal virtue itself — the ordering of desires so that what we want serves what we love.
17 Gentlefirmness Meekness Temperance Lent 4 (Laetare) — The Prodigal Son / Healing The father runs to meet his wayward son — gentle in embrace yet firm in truth. Meekness is not weakness but strength held in check by love. Laetare's joy springs from this tender reunion.
18 Perseverance Perseverance Fortitude Lent 5 — "Unless a grain of wheat falls and dies…" Jesus sets his face toward Jerusalem. The grain must fall. Perseverance is the fortitude to keep going when the cost becomes clear and the road narrows.
19 Sacrifice Sacrifice Justice Holy Week / Palm Sunday — The Passion Christ lays down His life — the just offering that restores what sin has broken. Sacrifice is the justice virtue of giving to God what is most costly because He is most worthy.

Easter — He Is Risen Weeks 20–27 · Fixed

WkVirtueAquinas NameCardinalLiturgical ContextConnection
20 Gratitude Gratitude Justice Easter Sunday — The Resurrection Alleluia! Death is conquered. Gratitude is the only adequate response — not earning, not striving, but receiving the gift of life with overflowing thanks.
21 Big-Souledness Magnanimity Fortitude Easter 2 (Divine Mercy Sunday) — Thomas touches the wounds Thomas moves from doubt to "My Lord and my God!" — the most expansive act of faith in the Gospels. Magnanimity, big-souledness, is the courage to believe greatly.
22 Understanding Understanding Prudence Easter 3 — The Road to Emmaus "Were not our hearts burning?" The Emmaus disciples' eyes are opened through Scripture. Understanding — the prudence virtue that grasps the meaning beneath the surface — turns grief into recognition.
23 Devotion Devotion Justice Easter 4 (Good Shepherd Sunday) — "I am the Good Shepherd" The shepherd lays down his life for the sheep. Devotion is the prompt willingness to give oneself entirely to God's service — the shepherd's defining quality.
24 Commitment Vows Justice Easter 5 — "I am the vine, you are the branches" "Abide in me." To remain on the vine is a choice renewed daily. Commitment is the justice virtue of following through on what we have promised — staying grafted to Christ.
25 Friendliness Friendliness Justice Easter 6 — "I call you friends" / The New Commandment "I no longer call you servants but friends." The risen Christ elevates His disciples into friendship. Friendliness is the virtue that makes us approachable, warm, and present to others.
26 Diligence Studiousness Temperance Ascension / Easter 7 — "Go and make disciples of all nations" The Great Commission demands industrious effort. Diligence — the measured, sustained application of energy to the work at hand — is how the Church carries out the Ascension mandate.
27 Creativity Shrewdness Prudence Pentecost — The Holy Spirit descends in fire and wind The Spirit speaks in every tongue, invents new ways to reach every heart. Creativity — the prudence virtue of finding unexpected solutions — is the Spirit's signature gift.

Ordinary Time II — Growing in the Green Season Weeks 28–52 · Flex

WkVirtueAquinas NameCardinalLiturgical ContextConnection
28 Memory Memory Prudence Trinity Sunday The Church recalls the deepest mystery of God's inner life. Memory — the prudence virtue of holding truth present in the mind — is how we treasure what has been revealed.
29 Generous Giving Tithing Justice Corpus Christi — "This is my Body, given for you" God holds nothing back. In the Eucharist, He gives His entire self. Generous giving — the habit of offering our substance, not just our surplus — mirrors this total gift.
30 Worship Religion Justice Sacred Heart of Jesus (mid-June) The Solemnity of the Sacred Heart invites us into the burning love of Christ's own heart. Worship — the virtue of rendering God the honor due to Him — is our entry into that fire.
31 Justice Justice Justice Sts. Peter and Paul (June 29) Peter the rock. Paul the apostle to the nations. Together they establish the Church's order in truth and right relationship. Justice itself — giving each person what is due — is their shared legacy.
32 Sound Judgment Sound Judgment Prudence St. Thomas the Apostle (July 3) Thomas demanded evidence. Jesus honored the demand. Sound judgment — the capacity to assess a situation rightly — leads Thomas from skepticism to the greatest confession of faith.
33 Obedience Obedience Justice St. Benedict (July 11) "Listen" — the first word of St. Benedict's Rule. Benedictine obedience is not servile compliance but the deep listening that orients the whole person toward God's will.
34 Respect Observance Justice St. Mary Magdalene (July 22) "Rabboni!" — Mary Magdalene greets the risen Lord with reverent awe. Respect (observance) is the justice virtue of honoring those who are set above us, beginning with Christ Himself.
35 Filial Piety Piety (Filial) Justice Sts. Joachim and Anne (July 26) The grandparents of Jesus. Filial piety — the love and honor owed to parents and ancestors — is embodied in the hidden faithfulness of Joachim and Anne, who prepared the way for Mary.
36 Good Counsel Good Counsel Prudence OT Week 18 — Summer parables of the kingdom The kingdom parables (treasure in a field, pearl of great price) invite deliberation: what is worth everything? Good counsel is the virtue of seeking and giving wise advice before acting.
37 Alertness Circumspection Prudence The Transfiguration (Aug 6) / St. Dominic (Aug 8) "This is my beloved Son — listen to Him!" Alertness — attentiveness to all the circumstances around us — is what the drowsy disciples on Tabor most needed, and what Dominic exercised in founding the Order of Preachers.
38 Poise Shamefacedness Temperance The Assumption (August 15) Mary is taken up body and soul into heaven — the ultimate composure before God. Poise is the temperance virtue of carrying oneself with dignity and grace, neither anxious nor presumptuous.
39 Self-Control Continence Temperance St. Augustine (August 28) "Grant me chastity and continence — but not yet." Augustine's long struggle and eventual victory make him the patron of self-control: the power to master disordered desires through grace.
40 Gracefulness Modesty of Movement Temperance Birth of the Blessed Virgin Mary (September 8) Mary enters the world with quiet grace. Gracefulness — beauty in movement and manner — reflects the inner order of one who is "full of grace."
41 Patience Patience Fortitude Exaltation of the Holy Cross (September 14) The Cross is not just endured but exalted. Patience is the fortitude to bear suffering without being broken — transforming pain into offering.
42 Sobriety Sobriety Temperance Our Lady of Sorrows (September 15) Mary stands at the foot of the Cross with clear-eyed grief — no hysteria, no denial. Sobriety is the temperance of a mind that remains unclouded even in the deepest pain.
43 Strategic Wisdom Military Prudence Prudence Sts. Michael, Gabriel, and Raphael (September 29) Michael battles the dragon. Gabriel delivers the message. Raphael guides the journey. Strategic wisdom — the capacity to coordinate complex efforts toward victory — is the archangels' gift.
44 Orderliness Orderliness Temperance St. Thérèse of Lisieux (October 1) The "Little Way" — doing small things with great love, in order. St. Thérèse found holiness not in grand gestures but in the careful ordering of daily life toward God.
45 Playing Well Eutrapelia Temperance St. Francis of Assisi (Oct 4) / Our Lady of the Rosary (Oct 7) Francis preached to birds, danced with Brother Sun, and called death "Sister." Playing well — the virtue of wholesome recreation and joy — is the Franciscan charism: finding delight in God's creation.
46 Personal Wisdom Personal Prudence Prudence St. Teresa of Ávila (October 15) Teresa mapped the soul's journey through seven mansions. Personal wisdom — prudence directed at one's own spiritual growth — is the interior knowledge she cultivated and taught.
47 Equity Epikeia Justice St. Luke the Evangelist (October 18) Luke, the physician-evangelist, tells the stories of the poor, the outcast, the Samaritan. Equity — the virtue of applying the spirit of the law when the letter falls short — pervades his Gospel.
48 Fair Exchange Commutative Justice Justice Sts. Simon and Jude (October 28) The "hidden apostles" gave their lives for the Gospel and received the crown. Fair exchange — the justice of equal giving and receiving — is fulfilled in martyrdom: life given, eternal life received.
49 Modesty Modesty of Dress Temperance All Saints (November 1) The saints include kings and beggars, doctors and peasants — but all are clothed in white. Modesty, the virtue of presenting oneself appropriately, reminds us that holiness is the only garment that matters.
50 Chasteness Chastity Temperance All Souls / OT Week 32 — Parable of the wise and foolish virgins The wise virgins kept their lamps burning. Chasteness — purity of heart and body — is the oil that keeps the flame alive as we await the Bridegroom.
51 Just Correction Vindication Justice OT Week 33 — Parable of the talents / End-time accountability The master returns and settles accounts. Just correction — the virtue of righting wrongs and holding others accountable with fairness — is the theme of these eschatological parables.
52 Fair Distribution Distributive Justice Justice Christ the King — "Whatever you did for the least of these…" The final Sunday of the liturgical year. Christ the King judges the nations: did you feed the hungry, clothe the naked, visit the prisoner? Fair distribution — giving to each according to their need — is the measure of His kingdom.
⚙️ Algorithm — How to Determine the Virtue Week

The Core Problem

The Catholic liturgical year does not align with the calendar year. It begins on the First Sunday of Advent (late November) and ends the Saturday before the next Advent 1. Within that year, the length of Ordinary Time varies because Easter moves. Developers need a reliable way to map any calendar date → virtue week (1–52).

Phase Mapping

PhaseVirtue WeeksFixed?Notes
Advent1–4Fixed (4 wks)Advent Sunday 1 → Week 1, etc.
Christmas5–6Fixed (2 wks)Christmas octave → Week 5, Epiphany/Baptism → Week 6
Ordinary Time I7–13Flex (5–9 wks)Between Baptism of the Lord and Ash Wednesday
Lent14–19Fixed (6 wks)Ash Wednesday week → Week 14, … Holy Week → Week 19
Easter20–27Fixed (8 wks)Easter → Week 20, … Pentecost → Week 27
Ordinary Time II28–52Flex (24–28 wks)Day after Pentecost through Saturday before next Advent 1

Handling the Flex Zones

Ordinary Time I has 7 virtue-week slots (weeks 7–13) but the actual number of calendar weeks varies from ~5 to ~9.
Ordinary Time II has 25 virtue-week slots (weeks 28–52) but the actual number of calendar weeks varies from ~24 to ~28.

Rule: Distribute virtue weeks proportionally across the actual calendar weeks in each flex zone:

virtue_week = start_virtue_week + floor(days_elapsed / total_phase_days * num_virtue_slots)

Pseudocode

function getVirtueWeek(date):

  1. Find the current liturgical year:
     - If date >= Advent1(current_calendar_year), liturgical year starts this year
     - Else, liturgical year started last year's Advent 1

  2. Calculate key dates for this liturgical year:
     - advent1         = First Sunday of Advent
     - christmas       = Dec 25
     - baptism         = Sunday after Epiphany (see formula below)
     - ashWednesday    = Easter - 46 days
     - easter          = Computus algorithm
     - pentecost       = Easter + 49 days
     - nextAdvent1     = First Sunday of Advent next year

  3. Determine phase and virtue week:

     IF date is in [advent1, Dec 24]:
        virtue_week = floor((date - advent1) / 7) + 1      // 1-4

     ELSE IF date is in [Dec 25, baptism - 1]:
        virtue_week = 5 + floor((date - Dec 25) / 7)       // 5-6

     ELSE IF date is in [baptism, ashWednesday - 1]:        // FLEX ZONE
        virtue_week = 7 + floor(days_elapsed / total * 7)
        clamp(7, 13)

     ELSE IF date is in [ashWednesday, easter - 1]:
        virtue_week = 14 + floor((date - ashWed) / 7)      // 14-19

     ELSE IF date is in [easter, pentecost + 6]:
        virtue_week = 20 + floor((date - easter) / 7)      // 20-27

     ELSE IF date is in [pentecost + 7, nextAdvent1 - 1]:   // FLEX ZONE
        virtue_week = 28 + floor(days_elapsed / total * 25)
        clamp(28, 52)

Key Date Calculations

Advent 1 — Sunday nearest to November 30 (always Nov 27 – Dec 3)

Easter — Anonymous Gregorian algorithm (Meeus/Jones/Butcher). Always March 22 – April 25.

Ash Wednesday — Easter minus 46 days

Pentecost — Easter plus 49 days (7 Sundays after Easter)

Baptism of the Lord (US) — Epiphany is Sunday between Jan 2–8. Baptism is the following Sunday (or Monday if Epiphany is Jan 7/8).

Lectionary Cycle — Based on the year Advent 1 falls in: mod 3 = 0 → Year C (Luke), mod 3 = 1 → Year A (Matthew), mod 3 = 2 → Year B (Mark)

💻 JavaScript Implementation

Complete implementation ready for use in the TruePresence app. Includes the Computus algorithm for Easter, Advent 1 calculation, Baptism of the Lord (US), and flex-zone proportional mapping.

// === Date Helpers ===

function getEasterDate(year) {
  // Anonymous Gregorian algorithm (Meeus/Jones/Butcher)
  const a = year % 19;
  const b = Math.floor(year / 100);
  const c = year % 100;
  const d = Math.floor(b / 4);
  const e = b % 4;
  const f = Math.floor((b + 8) / 25);
  const g = Math.floor((b - f + 1) / 3);
  const h = (19 * a + b - d - g + 15) % 30;
  const i = Math.floor(c / 4);
  const k = c % 4;
  const l = (32 + 2 * e + 2 * i - h - k) % 7;
  const m = Math.floor((a + 11 * h + 22 * l) / 451);
  const month = Math.floor((h + l - 7 * m + 114) / 31);
  const day = ((h + l - 7 * m + 114) % 31) + 1;
  return new Date(year, month - 1, day);
}

function getAdvent1(year) {
  const nov30 = new Date(year, 10, 30);
  const dow = nov30.getDay();
  if (dow === 0) return nov30;
  if (dow <= 3) return new Date(year, 10, 30 - dow);
  return new Date(year, 10, 30 + (7 - dow));
}

function getBaptismOfLord(year) {
  const jan2 = new Date(year, 0, 2);
  const dow = jan2.getDay();
  const epiphany = dow === 0 ? jan2 : new Date(year, 0, 2 + (7 - dow));
  const epDay = epiphany.getDate();
  if (epDay >= 7) return new Date(year, 0, epDay + 1);
  return new Date(year, 0, epDay + 7);
}

function daysBetween(a, b) {
  return Math.floor((b - a) / (1000 * 60 * 60 * 24));
}

function clamp(val, min, max) {
  return Math.max(min, Math.min(max, val));
}

// === Main Function ===

function getVirtueWeek(date) {
  const d = new Date(date.getFullYear(), date.getMonth(), date.getDate());
  const advent1ThisYear = getAdvent1(d.getFullYear());
  let liturgicalYearStart = d >= advent1ThisYear
    ? d.getFullYear() : d.getFullYear() - 1;

  const advent1    = getAdvent1(liturgicalYearStart);
  const christmas  = new Date(liturgicalYearStart, 11, 25);
  const easterYear = liturgicalYearStart + 1;
  const baptism    = getBaptismOfLord(easterYear);
  const easter     = getEasterDate(easterYear);
  const ashWed     = new Date(easter.getTime() - 46 * 86400000);
  const pentecost  = new Date(easter.getTime() + 49 * 86400000);
  const nextAdvent1 = getAdvent1(liturgicalYearStart + 1);

  if (d >= nextAdvent1) return 1;

  // ADVENT (1-4)
  if (d >= advent1 && d < christmas)
    return clamp(Math.floor(daysBetween(advent1, d) / 7) + 1, 1, 4);

  // CHRISTMAS (5-6)
  if (d >= christmas && d < baptism)
    return clamp(5 + Math.floor(daysBetween(christmas, d) / 7), 5, 6);

  // ORDINARY TIME I (7-13) — flex
  if (d >= baptism && d < ashWed) {
    const total = daysBetween(baptism, ashWed);
    const elapsed = daysBetween(baptism, d);
    return clamp(7 + Math.floor((elapsed / total) * 7), 7, 13);
  }

  // LENT (14-19)
  if (d >= ashWed && d < easter)
    return clamp(14 + Math.floor(daysBetween(ashWed, d) / 7), 14, 19);

  // EASTER (20-27)
  const pentEnd = new Date(pentecost.getTime() + 7 * 86400000);
  if (d >= easter && d < pentEnd)
    return clamp(20 + Math.floor(daysBetween(easter, d) / 7), 20, 27);

  // ORDINARY TIME II (28-52) — flex
  if (d >= pentEnd && d < nextAdvent1) {
    const total = daysBetween(pentEnd, nextAdvent1);
    const elapsed = daysBetween(pentEnd, d);
    return clamp(28 + Math.floor((elapsed / total) * 25), 28, 52);
  }

  return 1;
}
📅 Key Liturgical Dates by Year
Liturgical YearAdvent 1BaptismAsh WedEasterPentecostNext Advent 1Cycle
2025–2026 2025-11-30 2026-01-11 2026-02-18 2026-04-05 2026-05-24 2026-11-29 Year A
2026–2027 2026-11-29 2027-01-10 2027-02-10 2027-03-28 2027-05-16 2027-11-28 Year B
2027–2028 2027-11-28 2028-01-09 2028-03-01 2028-04-16 2028-06-04 2028-12-03 Year C
2028–2029 2028-12-03 2029-01-08 2029-02-14 2029-04-01 2029-05-20 2029-12-02 Year A
2029–2030 2029-12-02 2030-01-13 2030-03-06 2030-04-21 2030-06-09 2030-12-01 Year B
2030–2031 2030-12-01 2031-01-12 2031-02-26 2031-04-13 2031-06-01 2031-11-30 Year C
2031–2032 2031-11-30 2032-01-11 2032-02-11 2032-03-28 2032-05-16 2032-11-28 Year A
2032–2033 2032-11-28 2033-01-09 2033-03-02 2033-04-17 2033-06-05 2033-11-27 Year B
2033–2034 2033-11-27 2034-01-09 2034-02-22 2034-04-09 2034-05-28 2034-12-03 Year C
2034–2035 2034-12-03 2035-01-08 2035-02-07 2035-03-25 2035-05-13 2035-12-02 Year A
2035–2036 2035-12-02 2036-01-13 2036-02-27 2036-04-13 2036-06-01 2036-11-30 Year B
🔍 Quick Reference — "What Week Are We In?"

2025–2026 Liturgical Year (Cycle A)

Date RangePhaseVirtue Weeks
2025-11-30 – Dec 24Advent1–4
Dec 25 – 2026-01-11Christmas5–6
2026-01-11 – day before 2026-02-18Ordinary Time I7–13
2026-02-18 – day before 2026-04-05Lent14–19
2026-04-05 – 2026-05-24 +6dEaster20–27
After Pentecost week – 2026-11-29Ordinary Time II28–52

2026–2027 Liturgical Year (Cycle B)

Date RangePhaseVirtue Weeks
2026-11-29 – Dec 24Advent1–4
Dec 25 – 2027-01-10Christmas5–6
2027-01-10 – day before 2027-02-10Ordinary Time I7–13
2027-02-10 – day before 2027-03-28Lent14–19
2027-03-28 – 2027-05-16 +6dEaster20–27
After Pentecost week – 2027-11-28Ordinary Time II28–52

2027–2028 Liturgical Year (Cycle C)

Date RangePhaseVirtue Weeks
2027-11-28 – Dec 24Advent1–4
Dec 25 – 2028-01-09Christmas5–6
2028-01-09 – day before 2028-03-01Ordinary Time I7–13
2028-03-01 – day before 2028-04-16Lent14–19
2028-04-16 – 2028-06-04 +6dEaster20–27
After Pentecost week – 2028-12-03Ordinary Time II28–52

2028–2029 Liturgical Year (Cycle A)

Date RangePhaseVirtue Weeks
2028-12-03 – Dec 24Advent1–4
Dec 25 – 2029-01-08Christmas5–6
2029-01-08 – day before 2029-02-14Ordinary Time I7–13
2029-02-14 – day before 2029-04-01Lent14–19
2029-04-01 – 2029-05-20 +6dEaster20–27
After Pentecost week – 2029-12-02Ordinary Time II28–52
📊 Summary by Cardinal Virtue

Prudence

13
Practical Wisdom, Memory, Understanding, Teachability, Creativity, Reasoning, Foresight, Alertness, Preparedness, Good Counsel, Sound Judgment, Personal Wisdom, Strategic Wisdom

Justice

20
Justice, Worship, Devotion, Prayer, Adoration, Sacrifice, Commitment, Generous Giving, Obedience, Gratitude, Just Correction, Truthfulness, Friendliness, Generosity, Fair Distribution, Fair Exchange, Equity, Filial Piety, Respect, Integrity

Fortitude

4
Courage, Big-Souledness, Patience, Perseverance

Temperance

15
Self-Discipline, Restraint, Sobriety, Chasteness, Forgiveness, Gentlefirmness, Humility, Diligence, Modesty, Gracefulness, Playing Well, Poise, Orderliness, Fasting, Self-Control
🚫 5 Virtues Not Included
VirtueReason
Exceptional JudgmentSubstantially overlaps with Sound Judgment
Household WisdomToo domain-specific for a universal weekly calendar
Civic WisdomToo domain-specific for a universal weekly calendar
MagnificenceSubstantially overlaps with Big-Souledness and Generosity
Consecrated PuritySpecific to the vocation of religious life
⚠️ Edge Cases

Gap between liturgical years: There can be 0–6 days between the last Saturday of OT II and the next Advent 1. During this gap, continue showing Week 52 (Fair Distribution / Christ the King) until the new Advent 1 begins.

Ordinary Time flex zones: In years with an early Easter (e.g., March 28), OT I is short (~5 weeks) and OT II is long (~28 weeks). In years with a late Easter (e.g., April 21), OT I is long (~9 weeks) and OT II is short (~24 weeks). The proportional mapping algorithm handles both cases — every virtue week still appears, just with slightly different durations.

Liturgical year spans two calendar years: The liturgical year always begins in November/December and ends in November of the next. Easter always falls in the second calendar year. The getVirtueWeek() function handles this automatically.