mass-sim-liturgy

Development guide and resume checklist

Read this first when starting a new session, human or AI. It explains how to pick up the work, the current status, and the steps each change goes through. What the product must do is specified in SPEC.md.

Start-of-session checklist

Per-change checklist

Conventions and pitfalls

Status

The repository is jddcef/mass-sim-liturgy, renamed from roman-mass-explorer. GitHub Pages serves main at https://jddcef.github.io/mass-sim-liturgy/. Contributions use topic branches and pull requests; do not commit directly to main. Consult the Magisterium MCP server for liturgical or Catholic questions and clarifications.

Next decision number: R217.

Round PR Content
1 #2 Playable simulator: roles, four levels, options, lapses, M.C., sacristan, bells and thurible
2–3 #3 Watch mode, symbols, varied heights, incensation detail, cross and crucifix placement, outfits, liturgical colours, redo, windows and floor
4 #4 Recorded audio in the game, homily place, collection, EMHC, reserved hosts, readers, timeline jump, speed slider
5 #5 Role card, side quests, camera pad, speaker view, highlight, first person, sacristan training, audio fixes
6 #6 Cupboard models, vestment rail and stand, first-person views, figure eyes
7 #7 Presets, role switching, screen operator, monstrance, detail levels, sound icon, cancel New game
8 #8 Search and index card, hover tips, feedback, wall fade, nave seating, audio timing, rename
docs #8 Player-facing README opening, SPEC.md, this guide, Copilot instructions
9 (this PR) More natural bell synthesis, compact phone layout with fold-away menus
10 local, not published Offline stone/marble/wood textures and metal finishes on Standard/High, reversible detail switching, restrained lighting; existing defaults and saved choices retained
11 local, not published Repository workflow guidance: changes go through PRs rather than direct commits to main; consult the Magisterium MCP for liturgical and Catholic questions
12 local, not published The Path and seniority: Involvement rename, Sunday split into with and without incense, a liturgical-year map of celebrations with marks and ranks, roadmap of rites “in preparation”
27 #21 Good Friday (Celebration of the Passion of the Lord): silent entrance and prostration before bare altar; Collect without Oremus; Passion of St John in parts; ten Solemn Intercessions; Showing and Adoration of the Holy Cross (Ecce lignum Crucis); Communion from reserved Sacrament; Prayer over the People; silent departure; no Gloria, Creed, bells, or Eucharistic Prayer (R195–R201)
28 local, not published Speaker-perspective look-around via drag and camera pad; continuous collection route joining the offertory presentation while keeping collection away from altar (R202–R203)
29 #24 (merged) Corpus Christi outside-Mass procession with outdoor route, optional local-custom canopy/lights/stations, Benediction and reposition (R204)
30 #25 (merged) Completion-based milestones and 1-3 performance stars; owner confirms R77 aisle layout and R17 calendar (R205-R207)
31 #26 (merged) Persistent mini-game ideas and status backlog, including thurible timing and candle-lighting games (R208)
32 #27 (merged) Practice room MG01-MG03: scene finding, selected cupboard preparation and procession arrangement; separate completion/stars records; standalone explorer compatibility fix (R209-R212)
33 #28 (open, merge pending) MG10 abstract thurible rhythm/direction; MG11 symbolic lighter balance/reach ending at Easter Candle; MG12 abstract charcoal glow/pulse puzzle. Standard, Slow and untimed Assisted controls, isolated practice records and completion without score gates. MG04-MG09 remain Idea (R213-R216).
26 #21 Holy Thursday (Evening Mass of the Lord’s Supper): Gloria with bells followed by liturgical silence; Mandatum (washing of the feet); Creed strictly omitted; EP I Roman Canon with proper Communicantes, Hanc igitur, and Qui pridie; no consecration bells; transfer of the Blessed Sacrament to Altar of Repose with humeral veil and Pange Lingua; stripping of the altar (Denudatio altaris) in silence without final blessing or dismissal (R188–R194)
25 local, not published Liturgical Season Ribbon & Mini-Breviary sheet (feast rank, Latin vestment colours with GIRM 346 rationales, Ordo Missae and rubrics), and Visual Chime & Thurible Ripples on HUD and 3D floor (R182–R187)
24 #21 Palm Sunday: blessing of palms at the back of the church, procession with palm branches, no Penitential Act or Gloria; the Passion read in parts at the ambo without candles or incense; all genuflect at the death of the Lord; Creed is said (R175–R181)
23 #20 Funerals: the Funeral Mass (reception of the body at the door with holy water and the white pall, violet, no Gloria or Creed, final commendation with incense and the Song of Farewell, “In paradisum”) and the funeral liturgy outside Mass with the Priest or the Deacon; coffin on a bier, paschal candle, holy-water stand; new Path branch “The rites for the dead” (R168–R174)
22 #18 Baptism of children within Sunday Mass (reception at the door, rite at the font after the Homily, Solemn Blessing) and outside Mass with the Priest or the Deacon; font, paschal candle, oils, white garment and candle; new Path branch “Christian initiation” (R161–R167)
21 #17 Ash Wednesday: no Penitential Act, Gloria, Creed or Alleluia; after the Homily the Priest blesses and sprinkles the ashes and gives them to the faithful, who come forward in a line; the Deacon or a server holds the vessel (R154–R160)
20 #16 Candlemas: blessing of candles at the back of the church, procession with lighted candles and the Canticle of Simeon, no Penitential Act, candles out at the Gloria (R147–R153)
19 #15 Christmas Mass during the Night: the Christmas Proclamation before Mass, all genuflect at the Incarnation, the crib in the nave blessed at the universal prayer, Christmas solemn blessing; the M.C. rank becomes reachable (R137–R146)
18 #14 Confirmation within Mass: candidate and sponsor, presentation, renewal of promises, laying on of hands, anointing with chrism, no Creed, Confirmation blessing (R127–R136)
17 #13 Mass with the Bishop: mitre- and crozier-bearers in vimps, mitre and pastoral staff in 3D, homily at the cathedra, pontifical blessing (R119–R126)
16 #12 Exposition and Benediction by a Deacon; white cope and humeral veil in 3D (R115–R118)
14 #10 Rite registry; lay-led Adoration and Exposition and Benediction with the Priest (R104–R110)
13 local, not published Generic prepared-shell parish profiles and maintainer editor: local library/draft, plan and 3D route preview, full-profile JSON export/import, seating/target integration and simple exterior; future user patch workflow reserved
15 local, not published Parish source intake: agent runbook, parishes/ manifest and spec formats, Street View screening, draft profiles, offline bulk reviewer (R111–R114)

Round 33 was exercised in an isolated headless Edge instance through file:// at 1280x900 (keyboard) and 390x844 (emulated touch). All three hands-on games were completed in Assisted mode on both viewports; Standard/Slow marker animation, manual timing freeze, reset/replay with retained assistance, skips, early completion, best-star retention, reload, the existing MG01 scene markers, explicit storage-write failure, all existing save-key isolation and an unfinished Priest game/camera resume were checked. The animation and standalone 3D pages also loaded without console errors or external page requests. All five Node suites and every CI-listed script syntax check pass locally (Node 26); PR CI uses Node 22. No physical low-spec device, screen-reader software, or real flame was used; symbolic games are not practical fire-handling instruction.

Round 10 was exercised in Edge through file:// on all three pages, including all sanctuary floors, repeated quality switches, layouts, appearance changes, wall fading, first-person material clones and a complete accelerated Sacristan Watch run (opening, setup, Mass and pack-away). Browser checks reported no console errors or external requests; texture/material counts stayed constant after warming and repeating the quality/floor combinations. This is not a performance claim for physical low-spec hardware. Simulated low-memory mobile startup selected Auto/Low and created no surface textures, finish-material variants or reflection environment. All script syntax checks and all four Node suites pass on Node 22. No commit, push or PR was requested, so remote CI has not been run for this change.

Round 12 was exercised in Edge headless through file://: the Path opens from setup and from the summary, “Prepare this celebration” sets the preset, a credited game updates the mark, the rank strip and the recommendation, Esc closes the Path, and at 390 px the list replaces the map. No console errors. All four Node suites pass. Not committed or pushed.

Round 13 keeps the Legacy layout as the initial default and does not change existing setup, layout, score or Path storage keys. mass-parishes.js supplies pure profile validation, reversible seating coordinates and nave aisle routing; mass-parish-editor.js supplies maintainer authoring on both 3D pages. Profiles are strict versioned data for the fixed rectangular-v1 shell, not arbitrary surveyed churches. bundled in mass-parishes.js is the maintainer-reviewed published profile list. New photographic/model assets require separate preparation and rights review.

File-protocol browser checks in an isolated, self-exiting headless Edge instance covered draft preview/cancel, furniture and seating mapping, the exterior and animated route marker, working-copy persistence, full-profile export shape and import, rejected unsupported/oversize files, explicit storage failures, multiple-church selection, reload, Low/Standard/High switching, shifted-door placement, expert picking for a moved ambo, editing guards, phone-width layout and a complete accelerated Sacristan Watch run including opening and pack-away. The browser harness advanced the Mass clock through its normal stop limits and rendered walkers explicitly to avoid virtual-time frame throttling. Expected validation/storage errors were checked separately; there were no unexpected console errors or external page requests. All four Node suites and script syntax checks pass. Direct file:// startup also passed without a file-access override; a cold Low startup created no surface textures with the profile shell enabled. There is no physical low-spec performance claim, and no real parish has yet been surveyed or recreated. Changes are local and uncommitted; no push, PR or remote CI run was requested.

Round 15 adds parish source intake (R111–R114). docs/PARISH-INTAKE.md is a runbook for an agent that prepares per-parish folders under parishes/, made up of a source manifest with statuses and reason codes, and a parish spec with per-value source and confidence. The agent screens Street View images with a bearing rule and a visual check, and builds a review queue. parish-intake.cjs (using parish-intake.js) provides the template, check, aim, draft, index and apply commands. parish-review.html is the offline bulk reviewer. The mass-assets suite covers formats, the bearing rule, draft conversion and a full CLI round trip in a temporary folder. The reviewer was checked in headless Edge through file:// with sample data. It covered the contact sheet, one-by-one mode, Ctrl+Enter accept with comment, R reject, auto-advance, skip back to the sheet and saved decisions. All four Node suites pass. No real parish material has been processed yet. The work is local and uncommitted.

Round 28 adds look-around controls to the temporary speaker-perspective camera and connects the usher’s collection route continuously from the nave to the offertory presentation. The collection remains off the altar (GIRM 73, 140). All four Node test suites and edited-script syntax checks pass. A headless Edge load through file:// initialized the scene, but interactive camera movement was not automated. Changes are local and uncommitted.

Round 29 adds Corpus Christi as a playable celebration on the Path. It depicts the procession after Mass (the Mass itself is not shown); the Priest carries the Blessed Sacrament, and the celebration concludes with Benediction and reposition. The route and optional canopy, lights, route incense and prayer stations are explicitly treated as local custom. See R204 and the Magisterium sources in SOURCES.md. All five Node suites, CI syntax checks and git diff --check pass. The file:// browser check confirmed the Corpus preset, after-Mass setup, and 3D procession through the first outdoor station; the scene rendered without a visible initialization error. Route, incense and small-team behavior are covered by the Corpus regression tests. Merged in #24.

Round 30 makes every completed named celebration count towards seniority and recommendations, regardless of score or involvement. Performance is shown as 1-3 stars, with saved marks and best results preserved (R205). The owner confirmed the current centre-aisle layout and simplified calendar (R206-R207). All five Node suites, changed-script syntax checks and git diff --check pass. A file:// browser check confirmed legacy completion credit, seniority, 1/2/3-star map badges, accessible labels and mobile-list completion labels; the test restored the original saved progress afterwards.

Round 31 records eleven mini-game ideas in MINI-GAMES.md, with stable IDs, status definitions and delivery-reference fields. All are Idea, not implemented. Includes the user’s thurible rhythm/direction timing game and virtual lighter/match balance-and-reach game ending with the Easter Candle. Documentation only; no gameplay changes.

Open items and backlog

Round 32 implements the first three practice games behind a surgical setup entry, leaving the setup redesign in #23 alone. Five Node suites, including new practice rules/records regressions, pass. Repeated isolated headless Edge checks through file:// exercised desktop and 390px touch layouts, all four supported preparation/procession arrangements, five-target scene rounds, replay, independent record persistence, explicit storage denial, and resuming and restarting an existing celebration after practice. No unexpected console errors or external page requests occurred in the completed acceptance runs. MG01-MG03 remain In progress, not Done, until merged. MG12 is an entirely virtual backlog idea; MG10-MG12 have no implemented gameplay in this batch. An additional standalone-page smoke check found an existing mass-3d.html startup failure when optional Corpus route data is absent. At the coordinating session’s request, this batch also guards the route-dependent petal generation when fewer than two points exist. Node regression cases cover absent, empty, single-point and two-point routes; file-protocol smoke checks cover both the standalone explorer without Corpus globals and the floor-plan page.

flowchart TD
  F[1 Weekday Mass] --> S[2 Sunday Mass] --> SI[3 Sunday with incense] --> SO[4 Solemnity]
  SO --> B[5 Mass with the Bishop] --> N[6 Christmas]
  S --> AL[Adoration, lay-led] --> EB[Exposition and Benediction] --> CC[Corpus Christi procession]
  SI --> EB
  SO --> CA[Candlemas] --> AW[Ash Wednesday] --> PS[Palm Sunday]
  S --> BA[Baptism] --> CF
  SI --> FU[Funeral]
  B --> CF[Confirmation]
  N --> HT[Holy Thursday]
  PS --> HT
  CC --> HT
  CF --> HT
  HT --> GF[Good Friday] --> EV[Easter Vigil]