Lesson 248: Aseprite Sprite Bridge Hash Spot Receipt on BUILD_RECEIPT (2026)

Direct answer: Before July playtest scale on the CSP → Aseprite → engine lane, file sprite_bridge_hash_spot_receipt_v1.json proving cousin sprite_sheet_hash_receipt_v1 (Lesson 236) is GREEN or documented csp_cousin: n/a, bridge frame_index audit passes, Aseprite tag frame counts match csp_aseprite_bridge.json, spot sha256 on .aseprite + bridge + engine sheet re-saves identically, and engine spot play confirms one combat tag—then promote BUILD_RECEIPT sprite_bridge_hash_spot_ok. Distinct from 236 (CSP direct PNG+manifest) and Lesson 247 (UE menu minidumps).

Lesson hero for Aseprite sprite bridge hash spot receipt

Why this matters now (July 2027 CSP-green / Aseprite-wrong playtest frames)

July 2027 teams scale Steam playtest after Q3 capstone 244. Facilitators tag animation_wrong while sprite_sheet_hash stays GREEN—attack_light frame 3 duplicated from idle after Convert layers to frames without a bridge JSON bump. Lesson 236 owns CSP sheet hash; the Aseprite bridge spot preflight is the ninety-second checklist—248 is the BUILD_RECEIPT milestone for sprite_bridge_hash_spot.

Pair CSP import bridge for contract discipline and Lesson 239 tag animation_wrong (add alias if missing).

Beginner path (bridge spot + receipt)

Step Action Success check
1 Confirm Lesson 236 cousin GREEN K1 pass
2 Audit csp_aseprite_bridge.json frame indices K2 pass
3 Count Aseprite tags vs bridge K3 pass
4 sha256sum spot bundle + re-save K4 pass
5 Engine stub play("attack_light") K5 pass
6 File receipt + BUILD_RECEIPT bridge_hash_spot_ok: true

Time: ~55 minutes first bridge lane; ~15 minutes when bridge JSON and import script are pinned.

Developer path (gates K1–K6)

Gate Check Fail when
K1 Cousin CSP sprite_sheet_hash_receipt_v1 Promote bridge while CSP sheet drifts
K2 Bridge frame_index contiguous per tag Gaps or orphan file paths
K3 Aseprite tag inventory Tag rename without bridge update
K4 Spot sha256 bundle + re-save match Hash changes without pixel edits
K5 Engine spot play Idle bleed in attack clip
K6 Receipt + BUILD_RECEIPT bridge_hash_spot_ok: false

K1 — cousin receipt crosswalk

Field Cousin (236) This lesson (248)
Schema sprite_sheet_hash_receipt_v1 sprite_bridge_hash_spot_receipt_v1
Scope CSP PNG + manifest sha256 Aseprite tags after bridge import
Path release-evidence/art/SPRITE_SHEET_HASH_RECEIPT.json release-evidence/art/SPRITE_BRIDGE_HASH_SPOT_RECEIPT.json

Do not duplicate K1–K6 CSP proof inside bridge JSON—reference cousin path only.

sprite_bridge_hash_spot_receipt_v1.json

{
  "schema": "sprite_bridge_hash_spot_receipt_v1",
  "build_label": "playtest-july-2027-rc1",
  "character_id": "hero_combat",
  "aseprite_file": "art/characters/hero/hero_combat.aseprite",
  "bridge_path": "art/characters/hero/csp_aseprite_bridge.json",
  "engine_sheet_path": "art/characters/hero/hero_combat_engine_sheet.png",
  "cousin_receipts": {
    "sprite_sheet_hash": "release-evidence/art/SPRITE_SHEET_HASH_RECEIPT.json"
  },
  "spot_tags": ["idle", "attack_light"],
  "tag_frame_audit": {
    "idle": { "bridge": 4, "aseprite": 4, "match": true },
    "attack_light": { "bridge": 6, "aseprite": 6, "match": true }
  },
  "sha256_bundle": "sha256:REPLACE_AFTER_COMPUTE",
  "resave_match": true,
  "engine_spot": {
    "engine": "godot_4.5",
    "spot_tag": "attack_light",
    "frame_count_ok": true
  },
  "gates": {
    "K1_cousin_csp_hash": "pass",
    "K2_bridge_frame_audit": "pass",
    "K3_aseprite_tag_inventory": "pass",
    "K4_spot_sha256": "pass",
    "K5_engine_spot": "pass",
    "K6_build_receipt": "pass"
  },
  "bridge_hash_spot_ok": true,
  "playtest_promotion_allowed": true
}

Pin under release-evidence/art/SPRITE_BRIDGE_HASH_SPOT_RECEIPT.json.

BUILD_RECEIPT row (K6)

Column Pass when
sprite_bridge_hash_spot bridge_hash_spot_ok: true + receipt path
sprite_sheet_hash Cousin Lesson 236 independent column
palette_swap Aseprite palette handoff when tints wrong, frames OK
ALTER TABLE release_publish_gate ADD COLUMN IF NOT EXISTS
  sprite_bridge_hash_spot_blocked BOOLEAN NOT NULL DEFAULT false;

Thursday row reviewBridge spot line: tag audit Y/N.

Key takeaways

  1. 236 CSP hash248 bridge spot—both required when using the bridge lane.
  2. K3 tag counts catch renumbered frames CSP hash cannot see.
  3. Hash .aseprite + bridge + engine sheet together—not .aseprite alone.
  4. Import bridge defines frame_zero_policy.
  5. Tag animation_wrong via Lesson 239.
  6. Do not maintain direct CSP sheet and bridge sheet as dual primaries.
  7. Lesson 247 is crash triage—separate column.
  8. playtest_promotion_allowed here ≠ Q4 capstone 253—capstone wires 245–252.
  9. Aseprite-only characters: document csp_cousin: "n/a" in K1 with team sign-off.
  10. Forward: Lesson 249 Blender hero GLTF hash (when published).

Common mistakes

  • Filing 248 while 236 cousin still fails.
  • Convert layers to frames on global timeline—mixes tags.
  • 1-based frame_index in bridge JSON.
  • Merging schemas into sprite_sheet_hash_receipt_v1.
  • Skipping K5 because “tags look fine” in Aseprite preview.

Troubleshooting

Symptom Lane
Wrong frame, CSP hash GREEN This lesson K3–K5
Wrong frame, CSP hash RED Lesson 236
Palette wrong, frames OK Palette swap handoff
3D hero mesh drift Lesson 249 (queued)
Wrong depot Lesson 201

Mini exercise (50 minutes)

  1. Import bridge with duplicated attack_light frame 3—confirm K3 fail.
  2. Fix bridge + tags; pass K4 re-save match.
  3. Link cousin SPRITE_SHEET_HASH_RECEIPT.json.
  4. File receipt; BUILD_RECEIPT GREEN.

Continuity — Q4 2027 July playtest scale (245–253)

Lesson Receipt focus
247 Unreal menu minidump
248 (this) Aseprite bridge hash spot
249 Blender hero glTF export hash
253 Q4 capstone (queued)

Previous: Lesson 247 — Unreal playtest menu minidump build_label
Next: Lesson 249 — Blender hero GLTF export hash

FAQ

Same as Lesson 236?
236 = CSP PNG + manifest hash; 248 = Aseprite bridge spot after import.

Same as bridge spot guide?
Guide = K1–K6 checklist; 248 = BUILD_RECEIPT promotion.

Same as CSP bridge chapter?
Bridge chapter = contract; 248 = receipt + BUILD_RECEIPT column.

Aseprite-only hero?
Set csp_cousin: "n/a" in receipt with written lane decision—still run K2–K6.


CSP-green with wrong combat frames is a bridge spot failure—cousin 236, tag audit, spot sha256 bundle, engine play, then sprite_bridge_hash_spot_ok on BUILD_RECEIPT.