Skip to content

Seed the sample events at three sizes - #338

Open
EllAchE wants to merge 4 commits into
mainfrom
demo-event-sizes-20260817-0044
Open

Seed the sample events at three sizes#338
EllAchE wants to merge 4 commits into
mainfrom
demo-event-sizes-20260817-0044

Conversation

@EllAchE

@EllAchE EllAchE commented Aug 26, 2026

Copy link
Copy Markdown
Owner

Summary

  • A seven-speaker demo can't show what the review queue, the agenda grid, or the speaker gallery do under load. This adds three size profiles — small, medium, large — built on two pure modules: db/seeds/event-sizes.ts for the profiles and db/seeds/generated-roster.ts for an index-addressed generator of the people and proposals that fill them.
  • demo keeps its slug and its hand-authored core, and is filled out to the medium profile: 45 speakers, 96 proposals, a two-day grid across five rooms, and a review round with enough volume that sorting the queue is worth doing. The generated programme runs in two rooms the hand-written placements never touch, so the narrative agenda is unchanged.
  • demo-small and demo-large are the same conference at the other two scales, built from the shared form helpers rather than a third hand-written copy of the built-in field list.
  • Generated identities are swept by domain on reseed. The size profiles change between runs, so a name-by-name delete would strand accounts that the next insert then collides with.

Test plan

  • db/seeds/event-sizes.test.ts asserts portrait ranges don't overlap between events — a property no type enforces, and one that otherwise only surfaces visually.
  • db/seeds/generated-roster.test.ts asserts generated addresses are unique and undeliverable.
  • db/seed-publication-invariants.test.ts extended over sized-roster.ts: a gallery of forty invited speakers is exactly as empty as a gallery of seven.
  • README and docs/02-architecture.md updated — the README described two seeded events when there are now four, and the architecture note now names the generated domains, since the on-screen magic link hangs off that property.

Provenance

Recovered from a local worktree during a cleanup sweep. These four commits existed only on one disk and had never been pushed; this PR is their first remote copy.

Agent Audit

  • Action: create-pr
  • Timestamp: 2026-08-26T17:54:58Z
  • Agent: claude
  • Agent type: claude
  • Triggered by: loganharless
  • Origin: loganharless@MacBook-Pro-5
  • Session: fb5149c3-2a85-4af9-b605-a7901a3906a6
  • Source repo: EllAchE/sessionboard-oss
  • Worktree: /Users/loganharless/Desktop/da/worktrees/demo-event-sizes-20260817-0044
  • Branch: demo-event-sizes-20260817-0044
  • Head commit: bb0d0ce
  • tmux pane: %19
  • tmux session: cld-32571-21892

A seven-speaker demo cannot show what the review queue, the agenda grid or
the speaker gallery do under load. These two pure modules are the input to
that: three size profiles (small/medium/large, medium keeping the `demo`
slug as the default) and an index-addressed generator for the people and
proposals that fill them.

Nothing is wired up yet.
`demo` keeps its slug and its hand-authored core and is filled out to the
medium profile: 45 speakers, 96 proposals, a two-day grid across five rooms,
and a review round with enough volume that the queue is worth sorting. The
generated programme runs in two rooms the hand-written placements never touch,
so the narrative agenda is untouched.

`demo-small` and `demo-large` are the same conference at the other two
scales, built from the shared form helpers rather than a third hand-written
copy of the built-in field list.

Generated identities are swept by domain on reseed, because the size profiles
change and a name-by-name delete would strand accounts the next insert then
collides with.
The two properties that matter are not enforced by any type: portrait ranges
must not overlap between events, and generated addresses must be unique and
undeliverable. Both fail in ways that only show up on a screen or halfway
through a seed run, so they are asserted directly.

Extends the existing publication invariants over `sized-roster.ts` — a
gallery of forty invited speakers is exactly as empty as a gallery of seven.
README described two seeded events; there are now four, and which one is the
default matters to anyone opening the app for the first time. Also extends
the architecture note on undeliverable demo identities to name the generated
domains, since that property is what the on-screen magic link hangs from.
@EllAchE EllAchE added the claude PR primarily authored by Claude label Aug 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

claude PR primarily authored by Claude

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant