Programming & Technical Jul 12, 2026

jq Gate Sketch for february_fest_live_ops_receipt_v1.json Hourly BUILD_RECEIPT Row Diff - 2026

2026 jq gate sketch—hourly february_fest_live_ops_receipt_v1.json BUILD_RECEIPT row diff for live fest stand-ups; J1–J6 gates, verify_february_live_ops.sh, copy-paste jq one-liners.

By GamineAI Team

jq Gate Sketch for february_fest_live_ops_receipt_v1.json Hourly BUILD_RECEIPT Row Diff - 2026

Pixel-art hero for jq gate sketch february fest live ops hourly BUILD_RECEIPT row diff 2026

February 2027 live week, hour six: Pager P2 shows build_label drift, hour-one funnel went YELLOW, and someone asks “did we already file queue receipt?” Nobody ran jq since yesterday’s Thursday row review—that ritual is weekly, not hourly.

Live fest needs february_fest_live_ops_receipt_v1.json appended each hour with a honest row_diff[] against the prior snapshot—same discipline as BUILD_RECEIPT truth, compressed for stand-ups.

This Programming & Technical sketch ships february_fest_live_ops_receipt_v1.json, verify_february_live_ops.sh, gates J1–J6, copy-paste jq for CI and facilitator laptops—strategy above per-evening tutorials, below Course 280 forward and Guide #40 forward.

Non-repetition note: January reentry jq pointer owns pre-live capstone crosswalk. November crosswalk owns child receipt unity. Thursday row review owns weekly ten-minute diff. This URL owns hourly live-week february_fest_live_ops row diff jq.

Pair 5-night pager challenge, February timebox, queue wall-clock playbook, stream overlay O pass.

Why this matters now (February 2027 live week)

  1. Hourly driftbuild_label, funnel rates, and queue receipts change between stand-ups—not only on Wednesdays.
  2. Pager P2 without diff — Nightly challenge diffs columns; hourly receipt stores the proof path.
  3. Cluster receipts — Timebox, funnel, queue, overlay, and pager each own files—hourly receipt indexes them.
  4. HOTFIX noise — Without jq, teams debate whether drift is new or already filed.
  5. Sunday closeout — Forward #11 needs hourly jsonl trail—not reconstructed from Discord.

Direct answer: Append hourly rows to february_fest_live_ops_hourly_log.jsonl, file february_fest_live_ops_receipt_v1.json with row_diff[], run verify_february_live_ops.sh, gates J1–J6, set BUILD_RECEIPT february_fest_live_ops_hourly_ok: true before declaring stand-up GREEN.

Who this sketch is for

Audience You will…
Beginner Copy bash + jq one-liners; read exit table
Facilitator Paste hourly diff into #fest-live-ops
Engineer Wire CI cron every 60 minutes during D1–D7
Producer Block HOTFIX comms until J4 passes

Time: ~40 minutes first hourly template; ~90 seconds per hour after scripts pinned.

Mental model — hourly receipt vs weekly row review

Cadence Artifact Proves
Weekly Thursday row review Ten-minute BUILD_RECEIPT column diff
Nightly Pager P1–P5 Ritual completion per fest night
Hourly february_fest_live_ops_receipt_v1.json Snapshot + row_diff[] vs prior hour
BUILD_RECEIPT Root row february_fest_live_ops_hourly_ok

Rule: Hourly jq does not replace Thursday review—it feeds Sunday closeout and pager P2 with timestamped deltas.

february_fest_live_ops_receipt_v1.json (schema)

{
  "schema": "february_fest_live_ops_receipt_v1",
  "fest_window": "2027-02-next-fest-live",
  "fest_day": "D3",
  "hour_utc": "2027-02-24T18:00:00Z",
  "build_label": "fest-demo-2027-02-rc2",
  "snapshot": {
    "fest_live_timebox_ok": true,
    "hour_one_funnel_receipt": "release-evidence/funnel/HOUR_ONE_FUNNEL_SNAPSHOT.json",
    "february_live_queue_wall_clock_ok": true,
    "fest_stream_overlay_safe_zone_ok": true,
    "february_live_ops_challenge_night": "N3",
    "pager_build_label": "fest-demo-2027-02-rc2"
  },
  "row_diff": [
    {"field": "hour_one_launch_rate", "before": 0.41, "after": 0.38, "delta": -0.03},
    {"field": "build_label", "before": "fest-demo-2027-02-rc2", "after": "fest-demo-2027-02-rc2", "delta": "unchanged"},
    {"field": "february_live_queue_wall_clock_ok", "before": true, "after": true, "delta": "unchanged"}
  ],
  "gates": {
    "J1_schema": "pass",
    "J2_prior_hour": "pass",
    "J3_build_label_policy": "pass",
    "J4_snapshot_paths": "pass",
    "J5_row_diff_honest": "pass",
    "J6_receipt_filed": "pass"
  },
  "february_fest_live_ops_hourly_ok": true
}

Hourly log (jsonl)

release-evidence/february-live/february_fest_live_ops_hourly_log.jsonl — one line per hour:

{"hour_utc":"2027-02-24T17:00:00Z","fest_day":"D3","build_label":"fest-demo-2027-02-rc2","february_fest_live_ops_hourly_ok":true,"receipt_path":"release-evidence/february-live/FEbruary_LIVE_OPS_RECEIPT_1700.json"}

Gates J1–J6

Gate Check Pass when
J1 Schema + fest_window schema == february_fest_live_ops_receipt_v1
J2 Prior hour in jsonl Previous line exists for same fest_day or documented D1 first hour
J3 build_label policy Unchanged OR hotfix_id in notes with exception list forward #10
J4 Snapshot paths exist Funnel, queue, overlay paths resolvable on disk
J5 row_diff honest Numeric deltas recompute from before/after; no hand-waved zeros
J6 Receipt + verify script february_fest_live_ops_hourly_ok: true

J3 fail-closed: build_label change without HOTFIX doc → route setlive case study before gameplay patch.

Gate-by-gate facilitator notes (working dev depth)

J1 — schema and fest_window latch

J1 is not cosmetic naming—it prevents hourly receipts from colliding with January reentry pointer or November crosswalk schemas in the same release-evidence/ folder. Facilitators should fail CI when fest_window drifts from 2027-02-next-fest-live mid-week; that usually means someone copied a January template without renaming.

jq -e '.schema == "february_fest_live_ops_receipt_v1" and .fest_window == "2027-02-next-fest-live"' "$REC"

J2 — prior hour and jsonl continuity

D1 hour one may document prior_hour: null in notes—that is the only waiver. Every other hour must point at the previous jsonl line for the same fest_day. Gaps (skipped stand-ups) fail J2 until backfilled or waived in writing on the receipt.

tail -n 1 release-evidence/february-live/february_fest_live_ops_hourly_log.jsonl | jq -e '.fest_day == "D3"'

J3 — build_label policy and pager coupling

J3 ties directly to Pager P2: nightly diff catches label columns; hourly receipt stores the build_label row for stand-up paste. If label changes, require hotfix_id in notes and forward #10 HOTFIX exception opinion before community posts.

J4 — snapshot path resolution

J4 checks that cluster receipts from #1–#7 exist on disk—not that every gate inside them is GREEN. A YELLOW funnel receipt path is still valid; routing happens via row_diff and pager lanes. Missing files fail J4 and block february_fest_live_ops_hourly_ok.

Snapshot key Owning evening tutorial
fest_live_timebox_ok #1 timebox
hour_one_funnel_receipt #2 funnel
february_live_queue_wall_clock_ok #6 queue
fest_stream_overlay_safe_zone_ok #7 overlay

J5 — row_diff honesty audit

Hand-typed deltas are the fastest way to lose partner trust. Recompute with jq or the Python cousin below; attach recompute output to stand-up thread when facilitators dispute a YELLOW.

J6 — receipt filed + verify script

J6 requires both february_fest_live_ops_hourly_ok: true and verify_february_live_ops.sh exit 0 on the same file. BUILD_RECEIPT root row should mirror the latch—do not flip the bool before verify passes.

jsonl integrity checks (Sunday closeout prep)

Forward #11 Sunday closeout will consume the full jsonl as debrief annex. Run these before fest ends:

# Line count should equal facilitated hours (± documented waivers)
wc -l release-evidence/february-live/february_fest_live_ops_hourly_log.jsonl

# No duplicate hour_utc stamps
jq -s '[.[].hour_utc] | length as $n | unique | length == $n' \
  release-evidence/february-live/february_fest_live_ops_hourly_log.jsonl

# build_label stability tail (24h)
tail -n 24 release-evidence/february-live/february_fest_live_ops_hourly_log.jsonl | \
  jq -s '[.[].build_label] | unique'

If the unique tail returns more than one label without matching HOTFIX rows in receipts, pause post-fest debrief until setlive case study routing completes.

Beginner path — five-command hourly stand-up

# 1) Latest receipt exists
REC=release-evidence/february-live/FEBRUARY_LIVE_OPS_RECEIPT_LATEST.json
test -f "$REC"

# 2) Verify gates
./scripts/verify_february_live_ops.sh "$REC"

# 3) Print build_label drift only
jq -r '.row_diff[] | select(.field=="build_label") | "\(.before) → \(.after)"' "$REC"

# 4) Append to hourly log (facilitator)
jq -c '{hour_utc, fest_day, build_label, february_fest_live_ops_hourly_ok, receipt_path: $rec}' \
  --arg rec "$REC" "$REC" >> release-evidence/february-live/february_fest_live_ops_hourly_log.jsonl

# 5) Confirm exit 0
echo $?

Success check: Script prints february_fest_live_ops verify: OK.

Exit code table (snippet-friendly)

Exit Meaning Fix
0 J1–J6 pass Stand-up GREEN
1 Wrong schema Fix february_fest_live_ops_receipt_v1
2 Missing fest_day/window Fill required fields
3 J3 build_label policy fail HOTFIX doc or setlive case study
5 Empty or dishonest row_diff Recompute deltas
6 february_fest_live_ops_hourly_ok false Complete child snapshot paths

Worked example — synthesized D3 hour 18:00 UTC

Step Action Output
T+0 Export BUILD_RECEIPT row to now.json build_label: rc2
T+2m Load prior.json from jsonl hour 17:00 launch_rate: 0.41
T+5m jq diff launch_rate delta -0.03 → funnel YELLOW
T+8m Verify queue + overlay paths on disk J4 pass
T+10m Write receipt + run verify script exit 0
T+12m Append jsonl line debrief trail updated

Producer rule: Do not post “investigating gameplay” until J3 confirms label policy—not queue CDN (queue playbook).

CI hourly job sketch (GitHub Actions)

name: february-live-ops-hourly
on:
  schedule:
    - cron: "0 * * * *"  # adjust to fest week window only
jobs:
  verify:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: verify latest receipt
        run: |
          test -f release-evidence/february-live/FEBRUARY_LIVE_OPS_RECEIPT_LATEST.json
          bash scripts/verify_february_live_ops.sh release-evidence/february-live/FEBRUARY_LIVE_OPS_RECEIPT_LATEST.json

Pin if: to fest dates only—do not run hourly year-round on empty receipts.

jq one-liners (copy-paste)

Diff launch_rate vs prior hour

jq -s '
  .[1] as $now | .[0] as $prev |
  ($now.snapshot.hour_one_launch_rate // null) as $a |
  ($prev.snapshot.hour_one_launch_rate // null) as $b |
  {field:"hour_one_launch_rate", before:$b, after:$a, delta: ($a - $b)}
' prior.json now.json

Flag any changed build_label in jsonl tail

tail -n 24 release-evidence/february-live/february_fest_live_ops_hourly_log.jsonl | \
  jq -s '[.[].build_label] | unique | length'

Output 1 means stable label across last 24 hours; 2+ triggers pager P2.

Crosswalk queue + overlay booleans

jq -e '
  .snapshot.february_live_queue_wall_clock_ok == true and
  .snapshot.fest_stream_overlay_safe_zone_ok == true
' "$REC"

Hourly funnel YELLOW detector

jq -r '
  .row_diff[] |
  select(.field=="hour_one_launch_rate" and (.delta | tonumber) < -0.03) |
  "YELLOW launch_rate \(.delta)"
' "$REC"

Pair hour-one funnel F4 routing.

Python cousin — recompute row_diff for J5 audit

# audit_row_diff.py — compare two snapshot exports
import json, sys
prev, now = json.load(open(sys.argv[1])), json.load(open(sys.argv[2]))
fields = ["hour_one_launch_rate", "hour_one_quit_rate", "build_label"]
for f in fields:
    b, a = prev.get(f), now.get(f)
    print({"field": f, "before": b, "after": a, "delta": a if f == "build_label" else (a - b)})

Run before filing receipt when facilitators distrust hand-typed deltas.

verify_february_live_ops.sh

#!/usr/bin/env bash
set -euo pipefail
REC="${1:-release-evidence/february-live/FEBRUARY_LIVE_OPS_RECEIPT_LATEST.json}"

jq -e '.schema == "february_fest_live_ops_receipt_v1"' "$REC" || exit 1
jq -e '.fest_window != null and .fest_day != null' "$REC" || exit 2
jq -e '.gates.J3_build_label_policy == "pass"' "$REC" || exit 3
jq -e '.row_diff | length >= 1' "$REC" || exit 5
jq -e '.february_fest_live_ops_hourly_ok == true' "$REC" || exit 6

# J5: build_label row must exist
jq -e '.row_diff[] | select(.field=="build_label")' "$REC" >/dev/null || exit 5

echo "february_fest_live_ops verify: OK"

PowerShell verify cousin

$Rec = "release-evidence/february-live/FEBRUARY_LIVE_OPS_RECEIPT_LATEST.json"
$j = Get-Content $Rec -Raw | ConvertFrom-Json
if ($j.schema -ne "february_fest_live_ops_receipt_v1") { exit 1 }
if (-not $j.fest_day) { exit 2 }
if ($j.gates.J3_build_label_policy -ne "pass") { exit 3 }
if (-not $j.february_fest_live_ops_hourly_ok) { exit 6 }
Write-Host "february_fest_live_ops verify: OK"

BUILD_RECEIPT wiring

{
  "build_label": "fest-demo-2027-02-rc2",
  "february_fest_live_ops_hourly_ok": true,
  "february_fest_live_ops_receipt": "release-evidence/february-live/FEBRUARY_LIVE_OPS_RECEIPT_LATEST.json",
  "february_fest_live_ops_hourly_log": "release-evidence/february-live/february_fest_live_ops_hourly_log.jsonl"
}

Latch order during live week:

  1. Cluster receipts (timebox T, funnel F, queue Q, overlay O, pager P) filed on their evenings.
  2. Hourly receipt snapshots their paths—not replaces their gates.
  3. february_fest_live_ops_hourly_ok flips true only when J1–J6 pass for that hour.

Integration with February cluster #1–#7

Row Hourly snapshot field
#1 timebox fest_live_timebox_ok
#2 funnel hour_one_funnel_receipt + launch_rate in row_diff
#3 moderation moderation_roster_path optional in notes
#4 pager february_live_ops_challenge_night + pager_build_label
#5 setlive case study J3 routes label drift
#6 queue playbook february_live_queue_wall_clock_ok
#7 overlay O fest_stream_overlay_safe_zone_ok

Facilitator stand-up script (hourly, 5 min)

## Hourly february_fest_live_ops stand-up

- [ ] Run verify_february_live_ops.sh on latest receipt
- [ ] Paste build_label row_diff line to stand-up thread
- [ ] If launch_rate delta YELLOW → pager owns; community holds
- [ ] If queue_ok flipped false → queue playbook Q4 routing
- [ ] Append jsonl line with receipt path
- [ ] Do not declare HOTFIX until J3 pass

Proof table

Row Evidence GREEN when
P1 Hourly receipt JSON J1 pass
P2 jsonl prior line J2 pass
P3 build_label row_diff J3 pass
P4 Snapshot path stat J4 pass
P5 Recomputed delta J5 pass
P6 verify script exit 0 J1–J6 pass

Scenarios A–G

A — First hour D1 — J2 waived with prior_hour: null in notes; still file receipt.

B — launch_rate -0.04row_diff triggers funnel YELLOW; pager lane per timebox D4.

C — build_label change with HOTFIX-002 — J3 pass when hotfix_id documented; attach setlive case study if player label diverges.

D — queue_ok false — Snapshot shows queue receipt path; route Q4 without blaming players.

E — overlay_ok false — Block co-stream proof clips until O2 GREEN.

F — Skipped hour — jsonl gap; next hour J2 fail until facilitator backfills or documents waiver.

G — Sunday closeout — Forward #11 consumes full jsonl as debrief annex.

Comparison pack (jq sketches)

Sketch Cadence Schema
November crosswalk Pre-holiday november_closeout_capstone_v1
January pointer Re-entry january_reentry_capstone_v1
This sketch Live hour february_fest_live_ops_receipt_v1
Thursday review Weekly row review ritual (no hourly jsonl)

Common mistakes

Weekly jq only — Drift happens between Thursdays.

row_diff theater — Hand-entered deltas without recomputation fails J5.

Skipping snapshot paths — Hourly receipt becomes vibes-only JSON.

Replacing child receipts — Snapshot points to funnel/queue files; does not merge schemas.

CI weekly cron — Live week needs hourly job or manual facilitator discipline.

Printable facilitator card

# february_fest_live_ops hourly (pin near #fest-live-ops)

1. prior.json ← last jsonl hour
2. now.json ← BUILD_RECEIPT export
3. jq diff launch_rate + build_label
4. verify_february_live_ops.sh → exit 0
5. append jsonl + post row_diff to stand-up
6. YELLOW launch → pager; GREEN → community holds

Engine / tooling notes

Tool Role
jq Primary diff + gate checks
bash verify_february_live_ops.sh
Python Optional J5 recompute audit
GitHub Actions Fest-week hourly cron
PowerShell Windows facilitator verify cousin

Official jq reference: stedolan.github.io/jq.

Related GamineAI reads

Key takeaways

  1. Live fest needs hourly BUILD_RECEIPT row diff—not only weekly Thursday review.
  2. february_fest_live_ops_receipt_v1.json gates J1–J6 with honest row_diff[].
  3. february_fest_live_ops_hourly_log.jsonl feeds Sunday closeout C7 jsonl annex—#11 consumed.
  4. Snapshot indexes cluster #1–#7 receipts—does not replace their gates.
  5. J3 routes build_label drift to setlive case study before gameplay HOTFIX.
  6. jq launch_rate delta pairs hour-one funnel YELLOW routing.
  7. verify_february_live_ops.sh gives CI one exit code per hour.
  8. Pager P2 nightly diff cousins hourly build_label row.
  9. Course 280 + Guide #40 forward own milestone cousins.
  10. Refund spike threshold worksheet snapshots refund_spike_watch_ok when funnel + refunds diverge—#9 consumed.
  11. Forward #10 HOTFIX exception when J3 needs waiver ID—#10 consumed (HOTFIX list opinion).
  12. February cluster #12 published—same-day Whisper live-week triage closes February cluster #1–#12.

FAQ

Is this the same as Thursday row review?
No—Thursday is weekly ten-minute ritual; this is hourly jsonl + receipt during D1–D7.

Do we need CI every hour?
Facilitator laptop is enough if jsonl + verify run each stand-up; CI optional.

Can one receipt cover multiple hours?
No—file per hour; jsonl append keeps audit trail.

What if cluster receipt missing?
J4 fails—run the owning evening tutorial first.

What ships next in February cluster?
Blog-Create #9 — February fest refund spike threshold worksheet.

How does this relate to Thursday row review?
Thursday row review diffs BUILD_RECEIPT columns weekly; this sketch diffs hourly during D1–D7 and feeds Sunday closeout jsonl.

Can we skip jsonl on quiet hours?
Only with a documented waiver line—gaps fail J2 on the next hour and break Sunday annex continuity.

Does hourly replace pager P2?
No—pager owns nightly ritual completion; hourly indexes P2 build_label rows for stand-up paste.

What if queue_ok and launch_rate disagree?
Route queue first per queue playbook Q4; funnel YELLOW without queue drift is a different comms template.

Closing

February live week is too fast for “we’ll diff on Thursday.” One hourly jq sketch, one jsonl append, and J1–J6 turn pager noise into timestamped BUILD_RECEIPT truth—beginners copy bash, working devs wire cron, producers get a single exit code before HOTFIX language ships.