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 ce702e2
Browse filesBrowse the repository at this point in the historyBrowse files
Merged part7-source1-rerun: source-1's profile is regenerated from its part 7 rerun, adding saturation and a year of unsubscribes, and the sample church excludes five designed or unmeasured values. All three packages pass verify on Rock 21.0.2
Copy file name to clipboardExpand all lines: calibration/profiles/sample-church.json
+6-1Lines changed: 6 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -40,7 +40,12 @@
40
40
{ "path": "communicationDetail.unsubscribes", "reason": "The measured sends recorded no unsubscribes or spam complaints, so these rates are designed." },
41
41
{ "path": "communicationDetail.sms.massReplies", "reason": "Replies were not linked to the texts they answer in the measured data, so this reads zero. Reply rates are designed." },
42
42
{ "path": "communicationDetail.sms.inbound.pctLinkedToCommunication", "reason": "Replies were not linked to the texts they answer in the measured data." },
43
-
{ "path": "communicationDetail.outcomes.Recipient preference.pctOpenedOfDelivered", "reason": "Some opens are recorded without updating the recipient's status, so this reads low. The open rate is engagement's pctUniqueOpenersOfDelivered." }
43
+
{ "path": "communicationDetail.outcomes.Recipient preference.pctOpenedOfDelivered", "reason": "Some opens are recorded without updating the recipient's status, so this reads low. The open rate is engagement's pctUniqueOpenersOfDelivered." },
44
+
{ "path": "communicationDetail.saturation.byMedium.Email.bulkFlagged", "reason": "The sample church flags every mass send as bulk (decision 132), so its load is graded against the all-mass-sends shape." },
45
+
{ "path": "communicationDetail.saturation.byMedium.SMS.bulkFlagged", "reason": "The sample church flags every mass send as bulk (decision 132), so its load is graded against the all-mass-sends shape." },
46
+
{ "path": "communicationDetail.saturation.byMedium.Push", "reason": "The measured data has almost no pushes, so push load is designed." },
47
+
{ "path": "communicationDetail.unsubscribesYear.levelMix", "reason": "Only texted STOPs are recorded on recipient rows in the measured data, so the email unsubscribe levels are designed (decision 131)." },
48
+
{ "path": "communicationDetail.unsubscribesYear.perThousandMassRecipients.Recipient preference", "reason": "Too few unsubscribes to use." }
44
49
],
45
50
"overrides": [
46
51
{ "path": "groups.smallGroups.pctDidAttend", "value": 65, "reason": "Design choice. Small group attendance sits between the measured rate and a livelier demo church (docs/small-groups.md)." },
Copy file name to clipboardExpand all lines: docs/communications.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
@@ -83,15 +83,15 @@ Unsubscribes are designed, not measured (decision 131). The measured data record
83
83
-**Which sends.** Large newsletters draw more unsubscribes than small ministry sends.
84
84
-**Texted STOP.** A few people text STOP. Their newest text gets a level All unsubscribe, and texting is turned off on their phone, so later texts leave them out.
85
85
-**The Cast.** A couple of Cast people unsubscribe in ways their stories explain, such as leaving the Men's list after moving to a Saturday group, so tests can find a known case.
86
-
-**Calibration.** Part 7 also counts a whole year of unsubscribes, with their levels and timing, where Rock 19's unsubscribe index exists. Where a source has them, they shape the design.
86
+
-**Calibration.** Part 7 also counts a whole year of unsubscribes, with their levels and timing, where Rock 19's unsubscribe index exists. In the measured data, recipient rows hold texted STOPs (about 0.34 per 1,000 mass-text recipients, mostly the same day) but no email unsubscribes, so the STOP rate and the timing are measured, and the email levels and rates are designed.
87
87
88
88
## Message load per person
89
89
90
90
Rock's Saturation report shows how many messages each adult got. A plan that sends every newsletter to a whole campus list would put most adults in the same bucket, and no real church looks like that (decision 133).
91
91
92
92
-**List membership follows involvement.** Leading and Engaged adults are on more lists (Volunteers, Small Group Leaders, Prayer Team, Parents of Kids) than Known adults, and some adults are on none. Parents get kids and student messages, and volunteers get serving reminders, so the busiest people sit in the high buckets.
93
93
-**Some get nothing.** Adults with no email, an inactive email, "No mass emails", or no list get no mass email, and adults who cannot text get no texts.
94
-
-**Graded.** Part 7 measures the share of active adults in each bucket over a month, by medium, for sends flagged bulk and for all mass sends. Validation grades the sample church against it.
94
+
-**Graded.** Part 7 measures the share of active adults in each bucket over a month, by medium, for sends flagged bulk and for all mass sends. Validation grades the sample church against the all-mass-sends shape, since the sample church flags every mass send as bulk. In the measured data, most active adults get no mass email in a month and a core group gets about one a week, with a thin tail above that; texts reach far fewer people.
95
95
96
96
## Texts and SMS conversations
97
97
@@ -163,7 +163,7 @@ Volume is designed, as for prayer and notes: the sample church shows what good c
163
163
Each slice lands on its own, passes verify, and goes to the integrator.
164
164
165
165
1.**Design and calibration.** This page, the decisions, the calibration part 7 script, and the church app stub. Done. Source-1 has run part 7, and its shapes are in the profile.
166
-
2.**Setup.** System phone numbers, communication lists with membership that follows involvement, topics, the sample church template, and the message library. Before this starts, source-1 reruns part 7 for the saturation and unsubscribe measures.
166
+
2.**Setup.** System phone numbers, communication lists with membership that follows involvement, topics, the sample church template, and the message library.
167
167
3.**Bulk email.** Sends flagged bulk with a sender, reviewer, and topic, recipients with their own send time, opens, clicks, failures, and unsubscribes that follow Rock's rules with matching History. Validation starts grading saturation.
168
168
4.**Texts and SMS conversations.** Bulk texts, replies, the Cast's threads, generated threads, and STOP opt-outs.
169
169
5.**One-to-one messages.** Serving, connections, prayer, and staff messages.
Copy file name to clipboardExpand all lines: docs/roadmap.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
@@ -39,7 +39,7 @@ Where the project stands: the team's working list. Update this page whenever som
39
39
## In progress
40
40
41
41
-**The Sample Data Installer block in Rock**, built in the Rock repository against the loader package. It shows Core 1, Core 3, and Full 7 as cards from the dataset catalog and downloads the chosen package from a hosted `index.json`, beside the old sample data block.
42
-
-**Communications** (decisions 90 to 96; see [Communications](communications.md)). Email, texts, and push with very large mass sends, opens and clicks, SMS conversations, one-to-one messages, and messages tied to steps. Slice 1 is done: the design, calibration part 7, and the church app stub. Source-1 has run part 7, and its communication shapes are in the profile. The plan now covers the Unsubscribe and Saturation reports (decisions 131 to 133), and part 7 measures saturation and a year of unsubscribes. Next: source-1 reruns part 7, then the setup slice.
42
+
-**Communications** (decisions 90 to 96; see [Communications](communications.md)). Email, texts, and push with very large mass sends, opens and clicks, SMS conversations, one-to-one messages, and messages tied to steps. Slice 1 is done: the design, calibration part 7, and the church app stub. Source-1 has run part 7, and its communication shapes are in the profile. The plan now covers the Unsubscribe and Saturation reports (decisions 131 to 133), and part 7 measures saturation and a year of unsubscribes. Source-1 has rerun part 7, so the profile has its saturation shape, texted STOP rate, and unsubscribe timing. Next: the setup slice.
43
43
-**The release workflow** (decisions 127 to 130; see [Publishing a release](maintaining.md#publishing-a-release)). `.github/workflows/release.yml` builds each Rock release in `release/rock-releases.json`, writes and verifies every package, and runs the publishing gate. On a version tag it pushes the loader to nuget.org and uploads the packages, receipts, and index to Azure, the index last. A dry run on GitHub's `windows-2025` runner on 2026-10-22 built Rock 21.0.2, ran SQL Server 2025, passed verify on all three packages, and passed the gate. Its Packages job took 66 minutes (about 30 to build Rock, 6 for SQL Server, and 28 for verify). A self-hosted runner stays a fallback. The one-time setup in [Maintaining](maintaining.md#one-time-setup) is done (2026-10-22): the Azure identity and its role, nuget.org trusted publishing for `SparkDevNetwork.Rock.SampleData.Loader`, and the `release` environment with its approvers and variables. What is left:
44
44
- The first real release, to prove the Publish job.
45
45
- Change the Rock 21.0.2 entry from a develop commit to its tag once Rock tags it.
0 commit comments