You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 6cafff7
Browse filesBrowse the repository at this point in the historyBrowse files
Merged student-attendance: students in grades 7 to 12 have attendance of their own, coming on some Sundays the family stays home and sometimes staying after the family stops, and recent graduates move from student to adult check-in in June (decisions 145 to 148). All three packages pass verify on Rock 21.0.2
Copy file name to clipboardExpand all lines: docs/decisions.md
+4Lines changed: 4 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -33,6 +33,7 @@ This log wins over the [design spec](design-spec.md) wherever the two disagree.
33
33
| 130 | 2026-10-21 | Publishing stores no secrets. The publish job runs in the `release` GitHub environment, which needs a person's approval and allows only `main` and `v*` tags. It signs in to nuget.org with trusted publishing, and to Azure with OpenID Connect as an identity that trusts only that environment and whose only role is Storage Blob Data Contributor on the `sampledata` container. | There is no key to leak, rotate, or expire. The identity can write only sample data, and a person approves every publish. |
34
34
| 136 | 2026-10-23 | Full 7's manifest lists the Crowd: 16,800 generated households, with 3,450 at Phoenix, 2,350 at Chandler, 2,300 at Gilbert, 2,250 at Peoria, 2,200 at Scottsdale, 2,150 at Goodyear, and 2,100 at Tempe. A load has 25,248 people in 16,967 households, businesses included, which is the about 25,000 people decision 2 promises. Unlike Core 3, the main campus gets generated households beside the Cast. The Crowd still gets no photos (decision 30). | Rock's installer installs only what the manifest lists, so until now Full 7 had only the Cast. Phoenix is the original and largest campus, so it gets the most. Chandler has three Sunday services and a large kids ministry, so it comes next. Tempe, the urban young-adult campus, gets the fewest. Household shapes do not change by campus, so the counts are the only way to size one. Each count stays under the campus's share of the address pool (3,600 at Phoenix and 2,400 at each other campus), with room for its businesses, so no household gets a made-up address. The Cast still lives only at the main campus (decision 3). |
35
35
| 144 | 2026-10-23 | Each package index entry carries the whole dataset card from its manifest: the name, the summary as its description, what it is best for, the highlights, and the people, households, campuses, and typical install time. `release/merge-index.js` writes them, and `SampleDataPackageIndexEntry` reads them. The card fields are optional in format 1: a missing string reads as empty, missing highlights as none, and a missing number as 0, and an older loader skips them. `SampleDataDatasets` stays for the CLI, the verify tool, and as Rock's fallback. | Rock's installer can show the cards from the index, so a release updates them without Rock shipping a newer loader. Published entries keep their bytes, so an index from before this change still reads, and so does a newer index in an older loader. |
36
+
| 145 | 2026-10-23 | The first release is a soft release of everything done plus everything in progress. Jon's longer list of other work comes after it. | Churches get the finished features, and the work under way, as soon as they are ready. New features from the longer list come in later versions, so none of them holds up the first release. |
36
37
37
38
## Time
38
39
@@ -106,6 +107,9 @@ This log wins over the [design spec](design-spec.md) wherever the two disagree.
106
107
| 60 | 2026-10-19 | Check-in shows the achievements. The Weekly Service Check-in template's Achievement Types setting lists all seven. | Next-gen check-in shows each child's progress and new badges on its success screen and labels, so achievements can be demoed at a kiosk. |
107
108
| 61 | 2026-10-19 | A Cast person can say what Rock should show for their achievements, and every load checks it. Sam Lee has earned Century Club. Grace Fischer has Century Club in progress. Diego Ortiz's Century Club stays in progress, because he stopped coming when his family did. Mason Kelly has High Five but not yet the 25 Club. Before each release, a parity test runs Rock's own streak and achievement code on loaded data and compares it with the loader. | The same reasons as decisions 46 and 47: stories that documentation and tests rely on cannot quietly break, and Rock itself is the proof the port is right. |
108
109
| 65 | 2026-10-19 | Every business gives, and none has stopped: each has gifts in the last 12 months, and every load checks it. Generated businesses give monthly, bi-weekly, or irregularly, by card, bank transfer, or mailed check, from high on the giving curve but short of its very top. In Full 7, businesses are 3.2% of giving units and 6.8% of dollars (the profile has 3.1% and 8.4%). Generated businesses never give quarterly or once a year, because those givers are rare in the profile and big business gifts would skew them. The Cast's businesses cover those cases, plus a new giver, two contacts, and gifts split across two funds. | A church keeps a business record only because the business gives. |
110
+
| 146 | 2026-10-23 | Students in grades 7 to 12 have attendance of their own; everyone else keeps the family's. Young kids (nursery to 6th grade) come only with their family, and adults are unchanged. On a family Sunday a student checks in to the student service 85% of the time, as before. On a Sunday the family stayed home, an engaged student (Engaged or Leading) comes on their own with a share of the family's own chance of coming. The share is a quarter for Jr High and half for High School, shaped by the kids month and holiday pattern, and only on Sundays the kids check-in ran. They check themselves in with their own security code. A student on their own never makes a Sunday a family Sunday, so onsite gifts, serving, and everything else that follows the family's Sundays stays the same. Students are planned in a second pass from each student's own seed, after every family's draws and security codes, so adults and young kids get exactly the Sundays they had before. | Teens often come more than their parents. A share of the family's chance keeps a student from a family that rarely comes from coming often. Flat rates of 15% and 30% pushed the child check-in frequency mix out of tolerance. No measured value covers teen attendance (the teen value the profile grades is the share of people aged 12 to 17), so these rates are designed. |
111
+
| 147 | 2026-10-23 | When a family stops coming inside the history window, 40% of its engaged students in grades 7 to 12 keep coming to the student service for 13 to 52 weeks, at 85% of the family's old rate, until they graduate. | A student often stays with their youth group for a while after their parents drift away. |
112
+
| 148 | 2026-10-23 | Generated adults aged 18 to 20 are recent graduates. The Crowd gives each a graduation in late May of the year the child grade rule gives (an 18-year-old graduated this past spring), and the loader keeps an adult's file graduation year. Attendance treats an adult as a recent graduate only when that year falls inside the history window, so the Cast's adults, who graduated decades ago, do not change. Before graduating, a recent graduate who came with their family checks in to the student service as a student would (or sits in the service), and decisions 146 and 147 apply. After graduating they attend as adults. Half are away at college. Outside Christmas, Easter, and summer (May 16 to August 15) they come 10% of the time. They stay away only on a Sunday when someone else from their household came; when nobody else came, they were home that weekend and came, so the family's Sundays never change. A recent graduate's student check-ins end at the June 1 grade change after they graduate, so the last Sundays of May still count. | The Student Path then shows their high school years with no change to the steps. The student service follows the church calendar (no student service Christmas week), not which kids checked in, so a Cast student's Sundays are the same in every dataset. Giving and serving follow the family's Sundays, so dropping a lone graduate's Sundays changed their household's gifts and moved 40 other volunteers' serving positions in a Full 7 load. |
Copy file name to clipboardExpand all lines: docs/glossary.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -42,6 +42,7 @@ The words this project uses, in alphabetical order.
42
42
|**Pool**| A set of ready-made items the builder draws from: the address pool, or the Core 3 photo pool. |
43
43
|**Position**| A room a serving team serves in, with a minimum, desired, and maximum number of people at each service. |
44
44
|**Profile**| The blended target numbers the builder uses, in `calibration/profiles/`. |
45
+
|**Recent graduate**| A generated adult aged 18 to 20 who finished high school inside the history window. They check in as a student until they graduate. |
45
46
|**Relative date**| A date stored as `yearsAgo` plus a month and day, or as `daysAgo`, instead of a fixed date. |
46
47
|**Release workflow**|`.github/workflows/release.yml`. On a version tag it builds, verifies, and publishes every package for every supported Rock, and pushes the loader to nuget.org (decision 127). |
47
48
|**Rhythm step**| A step that is a habit, such as being in a small group or giving. It starts and can stop. A milestone step happens once, such as baptism. See [Steps](steps.md). |
Copy file name to clipboardExpand all lines: docs/how-it-works.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -50,7 +50,7 @@ The loader runs the steps below in one database transaction. A failure rolls eve
50
50
1.**Configuration.** Connection statuses, service time slots, campuses and their schedules, funds with a child account per campus, and check-in rooms. The Built on the Rock campaign fund gets the campaign's dates, and Rock's two pledge pages and default contribution statement point at it (see [Pledges](pledges.md)). It also sets up small groups: the capacity rule, the Host role, the group attributes, the topics, the inactive reasons, and a parent group per campus. Then it sets up serving: eight teams at every campus with their rooms, service times, staffing, and background check requirement, and Rock's Involvement connection type with the eight serving opportunities.
51
51
2.**People.** Cast families, people, family memberships (including children shared between two homes), addresses with map points, and phones. For Full 7 and Core 3, generated households are added from the profile, and their small groups are planned before they load. Every campus also gets businesses: the Cast's 6 on the main campus, and at least 2 generated ones at each other campus. Each business has one or two contacts, loaded as Rock's Business Contact relationship. Cast staff join the security roles their stories give them, all roles Rock ships (decision 79). The loader fills in what Rock's save hooks would set: ages, grades, giving Ids, giving leaders, primary family, and campus.
52
52
3.**Photos.** Every Cast person gets their delivered profile photo, except the few left without one on purpose. In Core 3, about half of the generated households get faces from a shared pool, one photo ethnicity per family. Full 7's crowd gets none.
53
-
4.**Attendance.** For each Sunday in the history window (3 years by default), each household attends at its own rate, adjusted for holidays and the month. Adults are recorded at worship. Children check in to the room their age or grade puts them in on that date, with a security code per family per Sunday.
53
+
4.**Attendance.** For each Sunday in the history window (3 years by default), each household attends at its own rate, adjusted for holidays and the month. Adults are recorded at worship. Children check in to the room their age or grade puts them in on that date, with a security code per family per Sunday. A student who comes on their own gets their own code. Students in grades 7 to 12 also come on their own: an engaged student comes on some Sundays the family stayed home, and some keep coming for a while after the family stops. Generated adults aged 18 to 20 check in as students until they graduate. Students are planned after every family, from their own seed, so adults and young kids are not affected (decisions 146 to 148).
54
54
5.**Achievements.** The Kids Check-in streak type and its seven achievement types, from High Five to Century Club. Each child who checked in gets a streak, and the achievement attempts Rock would have made at each of their check-ins. Next-gen check-in lists the seven types, so kiosks show each child's progress.
55
55
6.**Small groups.** The Cast's planned groups from `cast/groups` and the generated groups for each campus. Each group gets its schedule, its meeting place at the host's home (or a meeting link), its members, its attribute values, and its history. Weekly attendance follows the church year in [Small groups](small-groups.md): fall and spring seasons, a light summer, and holiday weeks marked "did not meet". Each Cast group gets a photo of its members, and Group Finder shows it on the group's card.
56
56
7.**Serving.** The Cast's rosters and generated volunteers at every campus, each with a rotation and preferences. Every Sunday in the history window, volunteers on their rotation serve when their family came and check in to serve; the next six weeks are scheduled ahead. See [Serving](serving.md).
Copy file name to clipboardExpand all lines: docs/roadmap.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -39,6 +39,7 @@ Where the project stands: the team's working list. Update this page whenever som
39
39
- The Student Path (decisions 87, 88, and 115 to 119; see [Steps](steps.md)). A second step program, filed beside the Discipleship Path, with Student Camp, Follow Jesus, Mission Trip, and Student Leader. Its steps follow the student check-ins the data already has, on church-wide camp and trip dates, for designed shares of the students who could take each step. Students who decide to follow Jesus are often baptized a few months later on the Discipleship Path's Baptism step, and Rock's program completions are written for both programs. The Cast's stories (Ava Brooks at camp, Benjamin Lee's camps and trip, and Jasmine Washington's completed path) are checked on every load, and new invariants tie each student step to the student service. Jasmine's file now sets her graduation, so she checks in through her senior year. Core 1 has 13 steps on the Student Path, 3 student baptisms, and 1 Student Path completion.
40
40
- The loader library is ready for Rock (decisions 120 to 126; see [Using the library](../loader/README.md#using-the-library)). It builds for .NET Framework 4.7.2 too, on Rock's own package versions, and packs as the `SparkDevNetwork.Rock.SampleData.Loader` NuGet package (0.1.0-alpha.10 on nuget.org, and 0.1.0-alpha.11 as a local file for Rock to build against until the next release). A load can choose its parts, steps among them, reports progress instead of writing to the console, takes the server's PasswordKey and DataEncryptionKey, and refuses a database with people beyond a new Rock install under an application lock. `SampleDataPackageIndex` reads the hosted `index.json`, and `SampleDataDatasets` gives Rock's installer a card for each dataset, with people, households, and install times measured from real loads that verify keeps current. Each index entry now carries that whole card too, so every release updates Rock's cards without a new loader in Rock (decision 144). `loader-compat-check/` proves the key derivations give the same bytes on both builds, and that both builds read an index with or without the card fields.
41
41
- Full 7 has its Crowd (decision 136). Its manifest lists 16,800 generated households across all seven campuses, so a load has 25,248 people in 16,967 households, where it had only the Cast's 185 people before. It loads in about 55 seconds with check images, and the package stays 14.6 MB, because the Crowd is generated at install time.
42
+
- Attendance per person for students (decisions 146 to 148). An engaged student comes to the student service on some Sundays their family stays home (High School more than Jr High), and some keep coming for a while after their family stops. Generated adults aged 18 to 20 check in as students until they graduate, then attend as adults, and some come home from college only at Christmas, Easter, and summer. Every adult's and young kid's attendance, and every gift, is exactly what it was before. A load of main and of the branch with the same seed and anchor match row for row. Full 7 has 1,881 students, about 440 more than before, and three new invariants guard the rules.
42
43
43
44
## In progress
44
45
@@ -54,10 +55,9 @@ Nothing right now. (Tempe was confirmed as the seventh campus on 2026-10-16; see
54
55
55
56
## Next
56
57
57
-
1.**Close validation gaps.** First-time visitors run low and teens run low.
58
+
1.**Close validation gaps.** First-time visitors run low. Teens run low as a share of people. Only 16.5% of Full 7's people are 12 to 17, against 22.7% measured. That is how many teens the Crowd makes, not how often they come, so it needs the Crowd to make more teen children; attendance per person did not move it.
58
59
2.**Run the giving parity test** against a running Rock: load Full 7, run Rock's Giving Automation job, and compare (see [Validation](../validation/README.md#rock-version-guard)).
59
-
3.**Per-person attendance,** so a teen can attend more often than their parents. The Student Path does not wait for it: its steps follow whatever student check-ins exist (decision 115). This work should also give recent graduates their student years: generated adults aged 18 to 20 were in high school inside the history window but never checked in as students, because only children carry a graduation year. Once they do, the Student Path shows their history with no change to the steps.
60
-
4.**Real Crowd names** from public-domain frequency data by birth decade.
60
+
3.**Real Crowd names** from public-domain frequency data by birth decade.
0 commit comments