Process & Workflow Jul 14, 2026

Thursday Content Update BUILD_RECEIPT Row Review - Ten Minutes After Wednesday Warm Catalog Smoke - 2026

2026 Process—Thursday content-update BUILD_RECEIPT row review after Wednesday warm catalog; T1–T10 gates, content_update_row_diff_receipt_v1.json, promote latch vs fest Thursday cousin.

By GamineAI Team

Thursday Content Update BUILD_RECEIPT Row Review - Ten Minutes After Wednesday Warm Catalog Smoke - 2026

Pixel-art hero for Thursday content update BUILD_RECEIPT row review after Wednesday warm catalog smoke 2026

Wednesday evening: warm catalog returns GREEN. Thursday noon: someone promotes the remote catalog to the Sale CDN label because "warm already proved it." Thursday 4 p.m.: BUILD_RECEIPT.json still shows last week's catalog_hash, warm_catalog_ok is a three-day-old boolean, and PATCH exception count is zero while jq weekly already saw a silent bump. The path ran—the receipt lied, and Sale weekend inherits stale truth.

April–June 2027 content-update Thursdays are when micro-studios skip the ritual that Fest demos already learned: after proof day, row-review day. The fest cousin is Thursday BUILD_RECEIPT row review after Wednesday demo smoke (gates R1–R10, promotion_allowed). This Process & Workflow URL owns a cousin with different columns: after Wednesday warm catalog, run a ten-minute Thursday content-update row review—diff catalog_hash, warm_catalog_ok, patch_exception_list_ok, CDN label pointers—before setting BUILD_RECEIPT content_update_promote_allowed: true.

Non-repetition note: Fest Thursday row review owns demo/surface/channel promotion after smoke. Warm catalog evening owns A1–A6 path proof. jq April weekly owns Monday catalog identity (J1–J6). PATCH opinion owns numbered ship authorization (P1–P6). Friday March capstone owns pre-April latch. This URL owns T1–T10 promote ritual after warm—Sale must not inherit last Wednesday's boolean.

Pair warm catalog, jq April weekly, PATCH exception, fest Thursday cousin, June aftermath, Course 289 forward, forward blog #12 Whisper highlight reel.

Why this matters now (April–June 2027 content-update weeks)

  1. Warm GREEN is not promote GREENWarm evening proves a candidate path; Thursday proves receipt rows still describe this week's catalog.
  2. Stale booleans survive Sale — Teams leave warm_catalog_ok: true untouched across three catalog bumps; Sale store week then trusts ghosts.
  3. jq weekly vs ThursdayMonday jq detects identity drift; Thursday decides promote permission.
  4. PATCH without promote latchPATCH opinion numbers ships; without T-gates you promote a numbered lie.
  5. Orphan ambulance weekOrphan recovery is what you run when Thursday was skipped.

Direct answer: After Wednesday warm GREEN, spend ten minutes Thursday on gates T1–T10, file content_update_row_diff_receipt_v1.json, set BUILD_RECEIPT content_update_promote_allowed only when blockers pass—refuse CDN/Sale label promotion on warm theater alone.

Who this ritual is for

Audience Outcome
Solo tech-art Clipboard card: promote Y/N in ten minutes
Producer Block Sale CDN label until T4–T8 GREEN
Working devops Wire verify_content_update_row_diff.sh + CI after warm artifact upload

Time: 10 minutes every content-update Thursday (default), immediately after Wednesday warm when both run the same week.
Prerequisites: Current BUILD_RECEIPT.json, last Thursday (or last promoted) baseline receipt, Wednesday april_content_update_warm_catalog_receipt (or equivalent), PATCH list if a hash changed this week, row catalog below.

Format ladder (content-update week)

Day Artifact Layer
Monday jq April weekly Catalog identity hashes
Before ship PATCH-00N Authorization
Wednesday Warm catalog evening Installed/player path
Thursday This row review Machine-readable claims + promote latch
As needed Orphan recovery Ghost ambulance

Fest demos still use Wednesday smoke + fest Thursday—different columns, do not reuse promotion_allowed for Addressables CDN promote.

Content-update row catalog (what to diff)

Store release-evidence/content-update/receipt-row-catalog-content-update.md:

Row key Type Must match warm? Typical drift
catalog_hash / content_catalog_hash string Yes Forgot bump after PATCH
warm_catalog_ok bool Yes Stale true from last week
warm_catalog_receipt_path string Yes Path points at old ISO week
warm_iso_week string Yes Wednesday was W15, receipt still W14
patch_exception_list_ok bool If hash changed true without PATCH-00N
patch_exception_count int If hash changed count ≠ exceptions length
cdn_label / promote_target string Yes Sale label vs staging
cdn_purge_noted bool If CDN touch Missing after catalog ship
april_content_update_weekly_ok bool Prefer Monday jq RED ignored
orphan_risk_cleared bool If prior orphan Still false after R recovery
content_update_promote_allowed bool Output Manually set true without T-gates
human_signoff.signed_at_utc timestamp Yes Unsigned promote

Add rows when you adopt new sidecars—never delete mid-Sale without receipt_version bump in diff notes.

Gates T1–T10 (Thursday promote blockers)

Gate Name Pass criteria
T1 File exists Current BUILD_RECEIPT.json + baseline path documented
T2 catalog_hash parity Receipt hash equals warm receipt / CDN candidate hash
T3 warm linkage warm_catalog_receipt_path exists; warm_catalog_ok true this ISO week
T4 warm week freshness warm_iso_week matches current review week (not last week's GREEN)
T5 PATCH coupling If hash ≠ baseline ⇒ patch_exception_list_ok + count aligned
T6 weekly jq april_content_update_weekly_ok true or freeze week documented
T7 CDN / promote target cdn_label / promote_target matches intended Thursday promote
T8 purge / orphan note CDN touch ⇒ cdn_purge_noted or orphan note; prior orphan cleared
T9 signoff Producer signoff within 7 days of warm
T10 diff receipt content_update_row_diff_receipt_v1.json committed; latch set honestly

T4–T8 are promote blockers when RED. T6 YELLOW (freeze week) allows promote only with written notes waiver.

The ten-minute ritual (minute-by-minute)

Min Action
0–1 Confirm Wednesday warm log GREEN; open current + baseline receipts
1–3 T1–T3: files, catalog_hash, warm path + ok
3–5 T4–T5: ISO week freshness; PATCH if hash changed
5–7 T6–T8: weekly jq, CDN label, purge/orphan
7–9 T9: signoff; decide RED/YELLOW/GREEN
9–10 Write content_update_row_diff_receipt_v1.json; set content_update_promote_allowed

Calendar invite: "Thursday content-update row review — promote gate (warm week)."

Same-week calendar (recommended)

Day Block Total
Monday jq catalog weekly ~15–20 min
Before ship PATCH-00N if bumping 10–25 min
Wednesday Warm catalog evening
Thursday Row review (this) 10 min
Thursday PM CDN / Sale label promote (human) Only if Wed + Thu GREEN

content_update_row_diff_receipt_v1.json (template)

{
  "schema": "content_update_row_diff_receipt_v1",
  "iso_week": "2027-W15",
  "reviewed_at_utc": "2027-04-10T14:10:00Z",
  "current_catalog_hash": "c3d4e5f6a1b2",
  "baseline_catalog_hash": "a1b2c3d4e5f6",
  "paired_warm_catalog": "release-evidence/content-update/PATCH_001_WARM.json",
  "paired_patch_list": "release-evidence/content-update/PATCH_EXCEPTION_LIST_RECEIPT.json",
  "gates": {
    "T1_file_exists": "GREEN",
    "T2_catalog_hash_parity": "GREEN",
    "T3_warm_linkage": "GREEN",
    "T4_warm_week_freshness": "GREEN",
    "T5_patch_coupling": "GREEN",
    "T6_weekly_jq": "GREEN",
    "T7_cdn_promote_target": "GREEN",
    "T8_purge_orphan": "GREEN",
    "T9_signoff": "GREEN",
    "T10_diff_receipt": "GREEN"
  },
  "row_diff": [
    {
      "key": "catalog_hash",
      "baseline": "a1b2c3d4e5f6",
      "current": "c3d4e5f6a1b2",
      "expected": "c3d4e5f6a1b2",
      "status": "expected_change"
    },
    {
      "key": "warm_iso_week",
      "baseline": "2027-W14",
      "current": "2027-W15",
      "expected": "2027-W15",
      "status": "fixed"
    }
  ],
  "content_update_promote_allowed": true,
  "notes": "PATCH-001 ship; warm same week; Sale staging CDN only"
}

Store under release-evidence/content-update/receipt-diffs/.

BUILD_RECEIPT root rows

{
  "catalog_hash": "c3d4e5f6a1b2",
  "warm_catalog_ok": true,
  "warm_iso_week": "2027-W15",
  "patch_exception_list_ok": true,
  "april_content_update_weekly_ok": true,
  "content_update_promote_allowed": true,
  "content_update_row_diff_receipt": "release-evidence/content-update/receipt-diffs/W15.json"
}

Fail-closed: Do not set content_update_promote_allowed: true while any of T4–T8 are RED.

verify_content_update_row_diff.sh

#!/usr/bin/env bash
set -euo pipefail
DIFF="${1:-release-evidence/content-update/receipt-diffs/LATEST.json}"
BR="${2:-BUILD_RECEIPT.json}"

jq -e '.schema == "content_update_row_diff_receipt_v1"' "$DIFF" || exit 1
for g in T4_warm_week_freshness T5_patch_coupling T7_cdn_promote_target T8_purge_orphan; do
  jq -e --arg g "$g" '.gates[$g] == "GREEN"' "$DIFF" || { echo "blocker $g"; exit 2; }
done
ALLOWED=$(jq -r '.content_update_promote_allowed' "$DIFF")
BR_ALLOWED=$(jq -r '.content_update_promote_allowed' "$BR")
[[ "$ALLOWED" == "$BR_ALLOWED" ]] || { echo "latch mismatch"; exit 3; }
HASH=$(jq -r '.current_catalog_hash' "$DIFF")
BR_HASH=$(jq -r '.catalog_hash // .content_catalog_hash' "$BR")
[[ "$HASH" == "$BR_HASH" ]] || { echo "hash mismatch"; exit 4; }
echo "content_update_row_diff verify: OK"

Beginner path — printable ritual card

THURSDAY CONTENT-UPDATE ROW REVIEW (10 min)
ISO week: ________  Warm GREEN? Y/N  Week match? Y/N
catalog_hash current: ________  baseline: ________
PATCH required? Y/N  patch_exception_list_ok? Y/N
weekly jq ok / freeze? ________
cdn_label / promote_target: ________
purge/orphan noted? Y/N
content_update_promote_allowed: Y / N
Signer: ________  Date: ________

Tape beside the warm evening checklist so promote cannot skip the card.

Developer path — jq skim before the ten minutes

jq -r '.catalog_hash, .warm_catalog_ok, .warm_iso_week,
       .patch_exception_list_ok, .content_update_promote_allowed' BUILD_RECEIPT.json

jq -r '.catalog_hash_after // .catalog_hash, .warm_iso_week // .iso_week' \
  release-evidence/content-update/PATCH_*_WARM.json | tail -1

If warm week ≠ review week, T4 is already RED—stop before promoting.

Diff mechanics (Python sketch)

import json
from pathlib import Path

KEYS = [
    "catalog_hash", "warm_catalog_ok", "warm_iso_week",
    "patch_exception_list_ok", "cdn_label", "content_update_promote_allowed"
]

def get(o, k):
    return o.get(k) if isinstance(o, dict) else None

cur = json.loads(Path("BUILD_RECEIPT.json").read_text())
base = json.loads(Path("receipts/baseline-content-update.json").read_text())
for k in KEYS:
    b, c = get(base, k), get(cur, k)
    if b != c:
        print(k, b, "->", c)

Run after warm artifact upload in CI—fail if T4–T8 would be RED while content_update_promote_allowed is true.

Worked example — W15 near-Sale promote

Gate Finding Status
T2 Warm hash c3d4…, BUILD_RECEIPT still a1b2… RED
T4 Warm ISO W15, receipt warm_iso_week W14 RED
T5 Hash changed; PATCH list empty RED
T7 cdn_label still staging while Sale label requested RED

Outcome: Promote slipped one day. Tech-art bumped hash, filed PATCH-001, refreshed warm week, set Sale staging first—re-ran T1–T10 GREEN Thursday PM. Marketing avoided orphan ambulance on Sale Friday.

Scenarios A–G

ID Situation Move
A Standard mid-April bump Full T1–T10 before CDN promote
B Freeze week, no hash change T5 N/A; T6 freeze note; promote may stay false
C Warm GREEN last week reused T4 RED—re-warm or no promote
D PATCH filed, warm same week Expect T5 GREEN; still run T7 label
E Monday jq J5 RED Fix PATCH / honesty before Thursday promote
F Orphan recovery last week T8 needs orphan_risk_cleared
G Sale weekend tomorrow Only promote if T4–T8 GREEN—no "close enough"

RED / YELLOW / GREEN routing

Signal Route
T4 RED Re-run warm this week or block promote
T5 RED File PATCH-00N or revert hash claim
T6 RED File Monday jq or document freeze
T7 RED Fix CDN label string before human promote
T8 RED Purge note / orphan clear first
Warm GREEN / promote RED Correct—do not treat as conflict
All GREEN Set content_update_promote_allowed: true

Comparison pack — fest Thursday vs content-update Thursday

Item Fest Thursday This URL
Proof day Wednesday demo smoke Wednesday warm catalog
Gates R1–R10 T1–T10
Diff schema build_receipt_row_diff_receipt_v1 content_update_row_diff_receipt_v1
Latch promotion_allowed content_update_promote_allowed
Lineage build_id / surface catalog_hash / CDN label
Season Fest demo weeks Apr–Jun content-update

PowerShell verify cousin

$d = Get-Content release-evidence/content-update/receipt-diffs/LATEST.json -Raw | ConvertFrom-Json
if ($d.schema -ne "content_update_row_diff_receipt_v1") { throw "schema" }
foreach ($g in @("T4_warm_week_freshness","T5_patch_coupling","T7_cdn_promote_target","T8_purge_orphan")) {
  if ($d.gates.$g -ne "GREEN") { throw $g }
}
"OK content_update_row_diff"

CI sketch

name: content-update-thursday-row-diff
on:
  pull_request:
    paths:
      - "BUILD_RECEIPT.json"
      - "release-evidence/content-update/receipt-diffs/**"
jobs:
  verify:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: bash scripts/verify_content_update_row_diff.sh

Common mistakes

Reusing fest Thursday card for Addressables — Wrong gate letters and latch name.
Promote on warm alone — Skips T4 freshness and T5 PATCH.
Leaving content_update_promote_allowed: true all season — Reset false until each Thursday GREEN.
Ignoring Monday jq — Thursday cannot launder a J5 RED.
Capsule-only weeks marked promote — No catalog change ⇒ leave latch false (honesty).
Orphan cleared verbally — T8 needs a receipt path.

Facilitator stand-up (two minutes)

Producer: content_update_promote_allowed last value? ____
Tech-art: Warm this week? Y/N  iso_week on receipt? ____
Hash changed vs baseline? Y/N → PATCH id? ____
Monday jq: GREEN / J5 / freeze
CDN target tomorrow: staging / Sale / none
If any T4–T8 RED: no promote language in Discord.

Waiver when you must promote under YELLOW (T6 only)

{
  "waiver_id": "CU-PROMOTE-WAIVER-2027-W16",
  "gates_overridden": ["T6_weekly_jq"],
  "reason": "Freeze week documented; catalog_hash unchanged; Sale label not touched",
  "signed_by": "producer",
  "expires_iso_week": "2027-W16"
}

Never waiver T4 or T5—stale warm week or missing PATCH is not a paperwork inconvenience.

Engine / CDN notes

Stack Thursday focus
Unity Addressables Diff remote catalog hash + profile label; pair drift loop
Godot remote packs Manifest hash ≈ catalog_hash; warm = install+load one player build
Custom CDN T7 cdn_label must match the hostname players hit, not the upload bucket name
Steam depot + Addressables Two promotes: depot setlive (fest Thursday cousin) vs catalog CDN (this ritual)—run both cards when both change

Worked narrative — Studio East vs West (Sale −10 days)

East warmed Wednesday, promoted Thursday noon without row review, left warm_iso_week on W14. Sale traffic pulled a mix of W14 and W15 hashes; Discord filled with InvalidKey. They paid orphan recovery during Sale opener and lost store response hours.

West printed the ritual card, caught T4 and T5 RED in nine minutes, filed PATCH-002, re-warmed Wednesday late (same ISO week), Thursday PM GREEN promote to Sale staging only. Partner zip showed content_update_row_diff_receipt_v1.json beside warm and PATCH receipts—no archaeology.

Proof table (diligence)

Artifact Proves
Diff receipt T1–T10 Promote decision was gated
Warm path same ISO week T3/T4 honesty
PATCH list when hash moved T5 coupling
Monday weekly ok / freeze note T6
BUILD_RECEIPT latch == diff latch No dual truths
verify script exit 0 Machine check

Integration with June aftermath / October prep

If you are transferring lessons from June Next Fest aftermath into Addressables weeks, treat "keep" rows that say "always promote Thursday" as incomplete—promote only after this ritual. Aftermath REWRITE language for Sale store pages does not replace catalog_hash honesty.

Partner zip minimum (content-update Thursday)

  1. content_update_row_diff_receipt_v1.json (this week)
  2. Paired warm receipt path
  3. PATCH list (or empty latch-true if no hash change)
  4. Monday weekly receipt or freeze note
  5. BUILD_RECEIPT excerpt showing content_update_promote_allowed

Skip any of these and diligence reviewers will treat Sale GREEN as marketing theater.

Ten things not to do on Thursday lunch

  1. Promote because Slack said warm was fine.
  2. Copy last week's diff JSON and flip only the date.
  3. Set latch true in BUILD_RECEIPT before writing the diff receipt.
  4. Use fest promotion_allowed as a synonym.
  5. Skip T5 because "PATCH is paperwork."
  6. Promote Sale CDN and staging in one click without two label rows.
  7. Ignore Monday J5 because "Thursday will catch it."
  8. Leave orphan_risk false after recovery week.
  9. Sign produce blank cards "for later."
  10. Cancel the calendar invite during Sale crunch—that is when you need it most.

Relationship to forward highlight reel

Forward blog #12 (Whisper creator highlight reel) is press/creator media—not a substitute for catalog promote honesty. Finish Thursday latch before spending editor time on reels that advertise a broken Sale build.

Outbound references

Related GamineAI reads

Key takeaways

  1. Warm GREEN ≠ promote GREEN—Thursday T1–T10 decide content_update_promote_allowed.
  2. content_update_row_diff_receipt_v1.json is the promote artifact—not a vibe.
  3. T4 freshness kills last week's warm boolean theater.
  4. T5 couples hash bumps to PATCH-00N.
  5. Pair Monday jq—identity before promote.
  6. Fest Thursday cousin uses different gates/latch—do not copy-paste.
  7. T4–T8 RED block CDN/Sale promote even if warm path ran.
  8. Reset content_update_promote_allowed false between green Thursdays.
  9. Orphan recovery is what skipped Thursdays buy.
  10. Ten-minute card keeps solo studios honest.
  11. CI verify fail-closes latch vs hash mismatch.
  12. Freeze weeks may leave promote false—document T6.
  13. Forward #12 highlight reel comes after promote honesty.
  14. Sale week inherits whatever Thursday allowed—gate it.

FAQ

Is this the same as the fest Thursday row review?
No—different proof day (warm vs demo smoke), gates (T vs R), schemas, and latches.

Do we still need Monday jq?
Yes—Monday = identity; Thursday = promote permission.

What if warm was GREEN but iso_week is last week?
T4 RED—re-warm or refuse promote.

Can we promote without PATCH when hash unchanged?
Yes—T5 N/A; still run T4/T7/T8.

How does PATCH opinion relate?
PATCH authorizes the ship; Thursday proves receipt rows match before CDN promote.

What if we are not touching CDN this Thursday?
Leave content_update_promote_allowed: false and note "no promote week."

Does Course 289 replace this?
Course milestone can rehearse the ritual; this URL owns the public strategy/checklist.

Can promotion_allowed from fest Thursday substitute?
No—different schema and semantics; dual-latch confusion is how Sale deploys wrong CDN labels.

What if Wednesday warm failed?
No Thursday promote review needed for GREEN latch—fix warm first; leave content_update_promote_allowed: false.

How often reset the latch?
Every ISO week after a promote decision—or immediately after any new catalog publish before next Thursday.

Closing

Warm evenings without Thursday row review are how Sale weeks inherit lies—diff catalog hashes, insist on same-week warm, couple PATCH when hashes move, and latch content_update_promote_allowed only after T1–T10. Pair warm catalog, jq weekly, and PATCH opinion; keep the fest Thursday cousin for demo promote weeks. Ten minutes of receipt honesty beats two days of orphan archaeology.