Skip to content

feat: Dayparting PR 1/5 — foundation (db/35, Show entity + /api/shows, resolver chokepoint, air-time stamp) - #455

Merged
genwave-radio merged 7 commits into
mainfrom
feat/dp1-foundation
Aug 11, 2026
Merged

feat: Dayparting PR 1/5 — foundation (db/35, Show entity + /api/shows, resolver chokepoint, air-time stamp)#455
genwave-radio merged 7 commits into
mainfrom
feat/dp1-foundation

Conversation

@genwave-radio

Copy link
Copy Markdown
Collaborator

📛 Dayparting epic — PR 1 of 5 (SPEC F115–F121 · PLAN T238–T242)

Zero audible change — the foundation every later PR stands on:

  • 🗄️ db/35 (35-show-identity-migration.sh + db/06 + 01-library fresh-init mirrors): station.show widens — slug (unique show_slug_key), tagline, flavor (prompt-only, never public), provenance, and the dormant persona_id/envelope bundle columns (ruled 2026-08-10 — unread until the schedulable-bundle slice; layering rule recorded: block ?? show ?? none, block wins). Plus booth_log.show_id + library.media.show_id (both deliberately no-FK — F121.1 history / db/22 grant boundary).
  • 🎛️ Show domain + /api/shows (T239/T240): budgets 60/120/400 at the seam, house Slugify (FallbackSlug promoted), 23503→Referenced mapped store-side (T120 ruling), delete guard 409 naming referencing blocks, best-effort imaging unscope (post-commit, CancellationToken.None, logged), F115.5 write gate (authored save never erases imported provenance) + gh-save-as-own provenance guard is read-then-write (TOCTOU) — make it a conditional upsert #394 note. New IShowImagingScope seam — SEAMS.md 77→79 (generated).
  • 🎯 EffectiveAssignment chokepoint (T241): ONE identity function in ScheduleResolver; OnAirSnapshot/ScheduleSegment gain ShowSummary (Abstractions — source-compatible trailing defaults per the MediaItem/SegmentRequest precedent); schedule load LEFT JOINs exactly 4 show columns (the dormant pin is structural — ShowSummary has no member to receive them).
  • 🧾 Air-time show_id stamp (T242): publish-time capture (the T60 discipline, backlog-proven) via an ActiveShowId DIM on IActivePersonaAccessor; one chokepoint stamps music + kinded alike; tools/demo_hour_gate.sql gains the F121.2 halves (recurring-show false-pass closed via lag() bounding; coalesce false — both probe-proven red/green). Rider: IBoothLogAppender 8-positional-param → BoothLogAppendRequest (the recorded T220 carry-forward).

✅ Gates

Every task opus-review-gated (T238 ×4 rounds, T239 ×2, T240 ×2, T241 ×2, T242 ×2 — every catch mutation- or probe-proven). Suites: solution non-Integration green 0 failed, MediaLibrary Integration 647/0, Architecture laws 95/95, check-seam-index.sh green, -warnaserror 0/0. Kestrel-smoked: login → create → 409-naming-blocks (real FK) → delete, plus the JOIN'd schedule load, all through the production binary against live Postgres.

⚠️ Noted for the tracker (pre-existing, surfaced during review): Story012's 3s feeder-tick wall-clock budget flakes under parallel-suite load (~1 in 5 on a loaded box).

Stack: PR 2 (authoring surfaces) → PR 3 (on-air + spectator) → PR 4 (catalog) → PR 5 (specials, droppable) follow on this base.

…acts + 23 jest todos, all skipped/todo pending T238–T261
…rovenance + dormant bundle cols, booth_log.show_id, library.media.show_id) w/ fresh-init mirrors + snapshot-proven convergence specs
…, 60/120/400 budgets at the seam, provenance, 23503→Referenced store-side) + 32 live-PG facts
…ming delete guard w/ best-effort imaging unscope, F115.5 write gate, IShowImagingScope seam; SEAMS 79; Kestrel-smoked
…heduleSegment carry ShowSummary (Abstractions, source-compatible defaults); schedule load LEFT JOINs show identity, dormant columns structurally unread
…ActiveShowId DIM, one chokepoint for music+kinded) + F121.2 gate halves in demo_hour_gate.sql; IBoothLogAppender parameter object (T220 carry-forward)
@genwave-radio
genwave-radio merged commit 1f3a7bf into main Aug 11, 2026
11 checks passed
@genwave-radio
genwave-radio deleted the feat/dp1-foundation branch August 11, 2026 20:36
@github-actions github-actions Bot locked and limited conversation to collaborators Aug 11, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant