diff --git a/internal/check-packet-a1-structure.mjs b/internal/check-packet-a1-structure.mjs
index ac10aba84..7eff7eb28 100644
--- a/internal/check-packet-a1-structure.mjs
+++ b/internal/check-packet-a1-structure.mjs
@@ -101,7 +101,7 @@ const box = (html) => {
if (b) ok(Math.abs(b.x + 34 * b.s - M) < 1 && b.y + 34 * b.s >= M - 1,
`the map-only sheet's names start ${(b.x + 34 * b.s).toFixed(1)}px from the edge; every packet page keeps ${M}px`,
`its names land on the same ${M}px margin as every other page (scale ${b.s})`)
- // ★ A POSTER FILLS THE PAGE inside the white margin M (Driver 2026-09-29: page 1 is the map alone).
+ // ★ A POSTER FILLS THE PAGE inside the white margin M (2026-09-29: page 1 is the map alone).
const p = box(R.liftMap(POSTER_SHEET))
ok(p && p.kind === 'poster' && p.x >= M - 0.5 && p.y >= M - 0.5 && p.x + p.w <= W - M + 0.5 && p.y + p.h <= H - M + 0.5
&& (Math.abs(p.w - (W - 2 * M)) < 1 || Math.abs(p.h - (H - 2 * M)) < 1),
diff --git a/internal/check-packet-variants.mjs b/internal/check-packet-variants.mjs
index b29cfa0c6..8b9aed630 100644
--- a/internal/check-packet-variants.mjs
+++ b/internal/check-packet-variants.mjs
@@ -85,7 +85,7 @@ ok(count(light, /sheet-christian/g) === 0, 'lightweight still carries the %-evan
ok(count(light, /funnel-title/g) === count(full, /funnel-title/g), 'lightweight lost the funnel (the narrowing triangle)')
// …and the SETS page, which is back matter a reader sits with rather than carries — the same
// reason the life calendar and the %-evangelical grid are dropped.
-// ★ ONE SETS PAGE CARRYING BOTH CHARTS (Driver 2026-09-29: two square panels side by side), asserted
+// ★ ONE SETS PAGE CARRYING BOTH CHARTS (2026-09-29: two square panels side by side), asserted
// by each chart's own class, so losing EITHER chart fails by name rather than inside a total.
ok(count(full, /
ok(((all[i] || {}).name || '') === w,
`ring ${i + 1} should read ${JSON.stringify(w)}, got ${JSON.stringify(all[i])}`))
- // ★ EVERY RING IS EXPLAINED (Driver 2026-09-29: "a legend to explain each ring"), and each row
+ // ★ EVERY RING IS EXPLAINED (2026-09-29: a legend explains each ring), and each row
// states its own count. Two-sided: a populated ring shows its number, an empty ring shows a dash.
const sparse = only([1, 1, 3, 7, 7, 7])
ok(sparse.length === 10, `every ring should be explained even when empty, got ${sparse.length} rows`)
diff --git a/internal/desktop-build.mjs b/internal/desktop-build.mjs
index 06062b573..8bec40be5 100644
--- a/internal/desktop-build.mjs
+++ b/internal/desktop-build.mjs
@@ -26,7 +26,7 @@ const TAURI_DIR = join(ROOT, 'deployment', 'src-tauri')
const plugin = process.argv[2]
const die = (m) => { console.error('desktop:build: ' + m); process.exit(1) }
// ★ THE BUILD YIELDS THE CPU TO LIVE TRANSCRIPTION. Rudder's speech model runs on the CPU
-// (backend/rudder-engine starts it with --device cpu), and the Driver measured dictation falling
+// (backend/rudder-engine starts it with --device cpu), and dictation was measured falling
// behind WHILE THIS BUILD RAN. A Rust build saturates every core, so at equal priority it starves
// the one process whose latency a person can feel.
//
diff --git a/library/packet/packet-render.js b/library/packet/packet-render.js
index d7fd89841..48105ec81 100644
--- a/library/packet/packet-render.js
+++ b/library/packet/packet-render.js
@@ -229,7 +229,7 @@ export function createPacketRenderer({ strings, lang = 'en', fontData = null, de
column through the viewBox, which is what keeps gospel's boundary gap intact:
the gap lives in the LAYOUT's coordinates and scaling the viewBox cannot
compress it, whereas nudging r or spread would. */
- /* ★ ONE PAGE, TWO SQUARE PANELS SIDE BY SIDE (Driver 2026-09-29, after the Module 1 "list of 100"
+ /* ★ ONE PAGE, TWO SQUARE PANELS SIDE BY SIDE (2026-09-29, after the Module 1 "list of 100"
sheet, which closes on BOUNDED SET | CENTERED SET as two squares). Each panel is a framed square
with its heading on top; the ring legend runs under both at full width. */
.set-row{display:flex;gap:40px;justify-content:center;align-items:stretch;margin-top:30px}
@@ -515,7 +515,7 @@ export function createPacketRenderer({ strings, lang = 'en', fontData = null, de
}
function mapPage(zone, groups, mapSvg, funnel = null) {
- // ★ A POSTER IS PAGE 1 BY ITSELF (Driver 2026-09-29): the map fills the page inside a white margin,
+ // ★ A POSTER IS PAGE 1 BY ITSELF (2026-09-29): the map fills the page inside a white margin,
// under its own title only. Drawing the packet's title over it as well printed TWO headers and
// shrank the map to fit beneath them. The set it belongs to is the triangle page's job.
if (mapSvg && /data-map-kind="poster"/.test(mapSvg)) {
@@ -856,15 +856,15 @@ export function createPacketRenderer({ strings, lang = 'en', fontData = null, de
// ★ 5,200 IS NOT ROUNDED OR CHOSEN FOR LAYOUT: 100 years x 52 weeks, a 100-year life in weeks.
// Everything else here is derived from it, so the two pages cannot
// drift apart into two grids that merely look alike.
- // ★ LAID OUT LIKE THE PRINTED LIFE CALENDAR (the Module 1 "Life Calendar in Weeks" sheet, which the
- // Driver asked this page to imitate): square boxes, week numbers across the top, the year down the
+ // ★ LAID OUT LIKE THE PRINTED LIFE CALENDAR (the Module 1 "Life Calendar in Weeks" sheet, which this
+ // page is asked to imitate): square boxes, week numbers across the top, the year down the
// side, a thin rule between decades, the whole grid framed and centred on the page. The earlier grid
// stretched 52 columns across the full width, so its boxes were flattened rectangles with no axes.
//
- // ★ SHADED FROM THE TOP, IN READING ORDER (Driver 2026-09-29: "show the highlighted dots started from
- // the top"). This grid used to SCATTER the shaded boxes, a choice made from a contact sheet in which a
- // contiguous run looked like a bar; the Driver has now asked for the opposite, and the grid is the
- // Driver's picture. Filling from the top also makes the two pages read the same way: Jesus' 33 years
+ // ★ SHADED FROM THE TOP, IN READING ORDER (2026-09-29: the highlighted boxes start from
+ // the top). This grid used to SCATTER the shaded boxes, a choice made from a contact sheet in which a
+ // contiguous run looked like a bar; the opposite has now been asked for, and the grid is the
+ // product's picture. Filling from the top also makes the two pages read the same way: Jesus' 33 years
// are the first rows of a life, and the evangelical share is the first boxes of the same life.
function lifeGrid({ shaded = 0, shadeClass = 'lc-on' } = {}) {
const YEARS = 100, WEEKS = 52, TOTAL = YEARS * WEEKS;
@@ -891,8 +891,8 @@ export function createPacketRenderer({ strings, lang = 'en', fontData = null, de
// No age is supplied today: the packet is printed for a reader we do not know, so shading their life
// would be a guess presented as a fact. The empty grid is the honest version and still lands the
// point — 5,200 boxes is a whole life on one page.
- // ★ THE FIRST 33 YEARS ARE JESUS' LIFE (Driver 2026-09-29: "the boxes highlighted need to show 33
- // years representing Jesus' life"). Still no reader's age: shading the reader's own weeks would be a
+ // ★ THE FIRST 33 YEARS ARE JESUS' LIFE (2026-09-29: the highlighted boxes show the 33
+ // years of Jesus' life). Still no reader's age: shading the reader's own weeks would be a
// guess presented as a fact, while 33 x 52 is the same for every reader.
const JESUS_YEARS = 33;
function lifePage(zone) {
@@ -1049,7 +1049,7 @@ export function createPacketRenderer({ strings, lang = 'en', fontData = null, de
}
// ── THE LIGHTWEIGHT LIST: a worksheet, not a profile book ───────────────────
- // Driver 2026-09-29: the lightweight packet is less about fitting information in and more a
+ // 2026-09-29: the lightweight packet is less about fitting information in and more a
// printable, instructive sheet — every people group, less text, a kind rather than commanding
// voice, and type and spacing sized for paper. Modelled on the Module 1 list-of-100 worksheet: a
// short note on the first page, one column header per page, numbered rows with room to tick. No
@@ -1281,7 +1281,7 @@ export function createPacketRenderer({ strings, lang = 'en', fontData = null, de
if (rows) legend = `
${esc(t('sets_rings_head'))}
${rows}
`;
}
- // ★ ONE PAGE (Driver 2026-09-29), superseding the one-chart-per-page split: the two figures are a
+ // ★ ONE PAGE (2026-09-29), superseding the one-chart-per-page split: the two figures are a
// PAIR and read as one, square panels side by side in the middle of the page, the legend under both.
// The page key stays 'sets', so the lightweight variant still drops it whole.
return sheet(`