> For the complete documentation index, see [llms.txt](https://ai-os-and-trend-finder.gitbook.io/ai-os-and-trend-finder-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ai-os-and-trend-finder.gitbook.io/ai-os-and-trend-finder-docs/docs/extensions/ai-rogue/visual-assets.md).

# AI Rogue Visual Assets

This file is the planning surface for AI Rogue's first visual asset batch. The extension plan locks the direction: bespoke pixel art generated with `imagegen` and refined locally before assets are committed.

## Current Inputs

| Source            | Locked Detail                                                                                                                                                                                                                                           |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Product           | `AI Rogue`, extension ID `ai-rogue`, currency `Insight Shards`.                                                                                                                                                                                         |
| Style             | Readable top-down pixel art with compact sprites, clear silhouettes, limited animation frames, and no baked-in gameplay text.                                                                                                                           |
| Asset flow        | Generate concept sheets and sprite sheets, remove chroma-key backgrounds when transparency is needed, then crop, validate alpha, reduce palette, pack atlases, compare WebP/PNG, and check sizes.                                                       |
| Repository limits | Non-logo image and non-music assets in `src/assets/` must stay under 200 KB; AI Rogue music tracks use the reviewed 900 KB cap in [`docs/media-policy.md`](/ai-os-and-trend-finder-docs/docs/media-policy.md). Run `bash scripts/check-asset-sizes.sh`. |

## Session 01 Ratification

Session 01 ratified the first-batch runtime asset baseline on 2026-06-22. The implementation handoff lives in [`implementation-baseline.md`](/ai-os-and-trend-finder-docs/docs/extensions/ai-rogue/implementation-baseline.md).

Verified runtime files:

This table is the historical Session 01 baseline. The current runtime atlas inventory is recorded in [Runtime Visual Finishing Pass - 2026-06-28](#runtime-visual-finishing-pass---2026-06-28).

| File                                      | Size         | Verification Note                           |
| ----------------------------------------- | ------------ | ------------------------------------------- |
| `src/assets/ai-rogue/gameplay-atlas.png`  | 8,483 bytes  | Runtime gameplay image atlas; under 200 KB. |
| `src/assets/ai-rogue/gameplay-atlas.json` | 37,874 bytes | Parsed successfully; 93 gameplay frames.    |
| `src/assets/ai-rogue/ui-atlas.png`        | 5,041 bytes  | Runtime UI image atlas; under 200 KB.       |
| `src/assets/ai-rogue/ui-atlas.json`       | 32,797 bytes | Parsed successfully; 82 UI frames.          |

Frame inventory recorded for implementation:

* Gameplay atlas: 12 player frames, 10 standard enemy frames, 8 boss frames, 22 FX frames, 8 telegraph frames, 22 tile frames, 4 pickup frames, 2 hazard frames, 4 fog frames, and 1 projectile frame.
* UI atlas: 45 bitmap font glyphs, 10 icons, 4 pips, 18 frame or panel pieces, 2 result glyphs, and 3 result grid tiles.

The locked tile scale, palette semantics, provenance stance, and acceptance checklist below remain the source for later asset expansion. Future runtime asset changes must update this file and rerun the media-policy check.

## Session 09 Content Polish Scope

Session 09 did not add or replace AI Rogue media files. Runtime readability, mobile framing, seed sharing, compact controls, and reward/status presentation reuse the committed gameplay and UI atlases listed above.

Validation scope for Session 09:

* Confirm no new AI Rogue media files are introduced.
* Confirm descriptor and icon changes reference existing UI atlas frames.
* Run `bash scripts/check-asset-sizes.sh` before closeout.
* Session 09 introduced no audio assets, Web Audio API use, or audio wrapper dependency. That statement is historical. Current audio assets and runtime behavior are tracked in [Game Feel And Audio Baseline](/ai-os-and-trend-finder-docs/docs/extensions/ai-rogue/game-feel.md), and AI Rogue music size policy is tracked in [`docs/media-policy.md`](/ai-os-and-trend-finder-docs/docs/media-policy.md).

The Session 09 evidence note lives in [`content-polish-mobile-notes.md`](/ai-os-and-trend-finder-docs/docs/extensions/ai-rogue/content-polish-mobile-notes.md).

## Runtime Visual Finishing Pass - 2026-06-28

The 2026-06-28 finishing pass expanded the runtime atlases from the generated G1/G2/G4 source sheets. The 2026-06-29 G8 runtime-FX batch added combat, status, fog, reveal, high-contrast, and reduced-motion visuals while keeping the existing two-atlas runtime model. Remaining G3, G4, G5, G6, and G7 visual planning was folded into `.spec_system/PRD/phase_37/`; later 2026-06-29 sessions completed the G4 status/equipment, G5 boss/final-defense, G3 sector, G6 UI/cinematics, and G7 player-animation review passes documented below.

Current runtime files:

| File                                      | Size         | Verification Note                           |
| ----------------------------------------- | ------------ | ------------------------------------------- |
| `src/assets/ai-rogue/gameplay-atlas.png`  | 58,196 bytes | Runtime gameplay image atlas; under 200 KB. |
| `src/assets/ai-rogue/gameplay-atlas.json` | 80,431 bytes | Parsed successfully; 197 gameplay frames.   |
| `src/assets/ai-rogue/ui-atlas.png`        | 15,332 bytes | Runtime UI image atlas; under 200 KB.       |
| `src/assets/ai-rogue/ui-atlas.json`       | 36,790 bytes | Parsed successfully; 92 UI frames.          |

New gameplay frame groups:

* G1 enemy ecology: 45 frames for Cache Wraith, Packet Thief, Signal Gnat, Ping Mosquito, Index Skink, Corrupt Newt, Venom Daemon, Burst Toad, and Insight Beetle.
* G2 protocols: five protocol pickup sprites and seven protocol effect sprites for Patch Kit, Trace Map, Signal Jammer, Trace Lance, and Phase Step.
* G4 system replacements: vault, terminal, cache chest, context cache, key fragment, crash dump, crash-dump purge, objective lock, and objective unlock frames.
* G8 runtime FX: 36 gameplay frames for Strike, Surge, Trace Lance, Phase Step, shield block/break, repair, cleanse, crash/corrupt bursts, status overlays, fog corners, explored memory, reveal shimmer/scanlines, high-contrast markers, and reduced-motion static impacts.
* G8 UI pips: 10 status pips for burning, leaking, corrupted, jammed, rooted, lagged, traced, shielded, overclocked, and forked.

Crop and pack process:

* Crop decisions live in `docs/ongoing-projects/generated/ai-rogue-visual-audio-assets/crop-manifest.json` with 114 accepted crops and 8 rejected candidates. The G8 batch contributes 46 accepted crops and 5 rejected candidates.
* Rejected G8 candidates are `rejected_g8_skull_target`, `rejected_g8_skull_diamond`, `rejected_g8_exclamation_burst`, `rejected_g8_red_scanline`, and `rejected_g8_cube_icon`. The skull and exclamation-like candidates are not runtime-safe under the no-baked-text rule; the red scanline overreads as damage; the merged cube group is outside the G8 runtime-FX scope.
* Runtime atlases were regenerated with `python3 scripts/extensions/ai-rogue/pack-visual-assets.py`.
* The packer preserves all existing atlas frames, crops accepted manifest entries from the chroma-key alpha derivatives, resizes with nearest-neighbor, removes chroma fringe, hardens sprite alpha, and writes TexturePacker-style metadata.
* Updated preview: `docs/extensions/ai-rogue/generated/ai-rogue-production-atlas-preview.png` (93,231 bytes).

Runtime wiring:

* Enemy templates now use bespoke ecology idle frames.
* Protocol pickups use protocol-specific floor sprites.
* Vaults, terminals, cache chests, context caches, key fragments, crash dumps, and selected protocol/objective feedback use the new packed frames.
* Player/enemy status effects now project G8 overlay sprites; player HUD status pips use the G8 UI pip frames.
* Combat, protocol, shield, repair, cleanse, crash, objective, fog, reveal, high-contrast, and reduced-motion presentation paths use G8 frames derived only from existing snapshots, statuses, preferences, and events.
* G3 theme decals, G4 remaining status/equipment icons, G5 boss refresh, G6 broader UI/cinematic icons, and G7 player animation were handled by later Phase 37 sessions.

Validation evidence from the G8 implementation pass:

* `python3 scripts/extensions/ai-rogue/pack-visual-assets.py` passed and regenerated the two runtime atlases plus the docs preview.
* `bun run typecheck` passed after runtime wiring.
* `bunx vitest run src/extensions/ai-rogue/runtime/__tests__/assets.test.ts` passed with explicit G8 frame coverage.
* `bunx vitest run src/extensions/ai-rogue/runtime/__tests__/render-model.test.ts src/extensions/ai-rogue/runtime/__tests__/status-expanded.test.ts` passed with G8 overlay, HUD pip, combat feedback, fog/reveal, high-contrast, reduced-motion, and status visual mapping coverage.
* `bash scripts/check-asset-sizes.sh` remains required in the final validation gate for this session.

## G4 Status And Equipment Pass - 2026-06-29

The 2026-06-29 G4 status/equipment pass added presentation-only UI icons for equipment slots, material tiers, supplemental status descriptors, Loadout, Ledger, and Settings surfaces. It did not add gameplay mechanics, save-schema fields, remote loading, analytics, hosted writes, or public-demo bridge calls.

Current runtime files after the G4 pass:

| File                                      | Size         | Verification Note                           |
| ----------------------------------------- | ------------ | ------------------------------------------- |
| `src/assets/ai-rogue/gameplay-atlas.png`  | 58,196 bytes | Runtime gameplay image atlas; under 200 KB. |
| `src/assets/ai-rogue/gameplay-atlas.json` | 80,431 bytes | Parsed successfully; 197 gameplay frames.   |
| `src/assets/ai-rogue/ui-atlas.png`        | 24,672 bytes | Runtime UI image atlas; under 200 KB.       |
| `src/assets/ai-rogue/ui-atlas.json`       | 46,159 bytes | Parsed successfully; 115 UI frames.         |

Accepted G4 UI frame groups:

* Supplemental status descriptor icons: burning, leaking, corrupted, jammed, rooted, lagged, traced, shielded, overclocked, and forked. These are descriptor/support icons only; G8 overlay and HUD pip art remains the active runtime status path.
* Equipment slot icons: kernel, guard, and payload.
* Material tier icons: patched, compiled, vectorized, and kernel-grade. These use distinct silhouettes so tier recognition does not rely on hue alone.
* Surface icons: equipment reward, loadout readiness, Ledger source available, Ledger source capped, Ledger source unavailable, and Settings storage.

Rejected G4 candidates added in this pass:

* `rejected_g4_status_cross_red` - rejected for status use because the red cross motif overreads as health, warning, or punctuation.
* `rejected_g4_lock_badge_settings` - rejected for Settings readiness because it implies disabled or secret state too strongly.
* `rejected_g4_open_portal_reward` - rejected for reward/loadout use because it reads as navigation rather than an equipment reward.
* `rejected_g4_terminal_tail_text` - rejected because the small trailing mark can read as baked text or a dangling diagnostic marker.
* `rejected_g4_abstract_cross_status` - rejected for supplemental status use; the cross shape is clearer as payload equipment.

Crop and pack process:

* Crop decisions live in `docs/ongoing-projects/generated/ai-rogue-visual-audio-assets/crop-manifest.json` with 137 accepted crops and 13 rejected candidates after this pass.
* Runtime atlases were regenerated with `python3 scripts/extensions/ai-rogue/pack-visual-assets.py`.
* Updated preview: `docs/extensions/ai-rogue/generated/ai-rogue-production-atlas-preview.png` (105,180 bytes).

Runtime wiring:

* Equipment helpers map all existing equipment slots, equipment IDs, equipped items, and material tiers to typed G4 UI frames without changing equipment math or reward mechanics.
* HUD descriptors render per-slot equipment and tier frames, plus G4 supplemental status and reward fallback frames. G8 status pips and overlays remain unchanged.
* `RewardIcon` accepts the new G4 frame names and separates meaningful labels from decorative repeated icons.
* Loadout, Ledger, and Settings use G4 icons where they improve product readability while preserving familiar controls, loading, empty, error, offline, and public-demo states.

Validation evidence from the G4 implementation pass:

* `python3 scripts/extensions/ai-rogue/pack-visual-assets.py` passed and regenerated the two runtime atlases plus the docs preview.
* `bun run typecheck` passed.
* `bash scripts/check-asset-sizes.sh` passed with all assets within configured size limits.
* `bunx vitest run src/extensions/ai-rogue/runtime/__tests__/assets.test.ts src/extensions/ai-rogue/runtime/__tests__/equipment.test.ts src/extensions/ai-rogue/runtime/__tests__/status-expanded.test.ts src/extensions/ai-rogue/runtime/__tests__/render-model.test.ts src/extensions/ai-rogue/__tests__/client.test.tsx` passed with 5 files and 70 tests.
* Desktop browser proof `PLAYWRIGHT_PORT=5191 PLAYWRIGHT_PUBLIC_DEMO_PORT=5192 bunx playwright test tests/e2e/ai-rogue-runtime.spec.ts` passed with 12 tests.
* Mobile browser proof `PLAYWRIGHT_PORT=5191 PLAYWRIGHT_PUBLIC_DEMO_PORT=5192 bunx playwright test tests/e2e/ai-rogue-mobile.spec.ts` passed with 5 tests.
* Ledger browser proof is recorded in the session implementation notes.

## G5 Boss And Final-Defense Pass - 2026-06-29

The 2026-06-29 G5 pass refreshed the Kernel Sentinel boss presentation and added final-defense marker/payload art. It stayed inside the existing gameplay/UI atlas split: all accepted G5 additions are gameplay-world presentation frames, and no G5 UI atlas entries were added.

Current runtime files after the G5 pass:

| File                                      | Size         | Verification Note                           |
| ----------------------------------------- | ------------ | ------------------------------------------- |
| `src/assets/ai-rogue/gameplay-atlas.png`  | 87,737 bytes | Runtime gameplay image atlas; under 200 KB. |
| `src/assets/ai-rogue/gameplay-atlas.json` | 87,537 bytes | Parsed successfully; 214 gameplay frames.   |
| `src/assets/ai-rogue/ui-atlas.png`        | 24,672 bytes | Runtime UI image atlas; under 200 KB.       |
| `src/assets/ai-rogue/ui-atlas.json`       | 46,159 bytes | Parsed successfully; 115 UI frames.         |

Accepted G5 gameplay frame groups:

* Kernel Sentinel boss states: idle 0/1, charge, telegraph, attack, shielded, hit, and shutdown.
* Kernel Sentinel line-fire FX: `fx_boss_kernel_sentinel_line_fire`.
* Final-defense markers: arena, target, objective lock, and objective progress 0/1/2/3.
* Final-defense payload and result frames: payload compile, payload active, payload core, survived, victory, and win unlock.

Rejected G5 candidates added in this pass:

* `rejected_g5_full_beam_entity` - too wide for the entity footprint and better represented as line-fire FX.
* `rejected_g5_detached_beam_sparks` - detached sparks did not read clearly at runtime scale.
* `rejected_g5_red_result_column` - overread as a failure column rather than a neutral final-defense marker.
* `rejected_g5_large_cyan_column` - too large and text-like for compact gameplay presentation.

Crop and pack process:

* Source art lives at `docs/ongoing-projects/generated/ai-rogue-visual-audio-assets/source/ai-rogue-boss-final-defense-source.png`.
* Alpha derivative lives at `docs/ongoing-projects/generated/ai-rogue-visual-audio-assets/alpha/ai-rogue-boss-final-defense-alpha.png`.
* Crop decisions live in `docs/ongoing-projects/generated/ai-rogue-visual-audio-assets/crop-manifest.json` with 159 accepted crops and 17 rejected candidates after this pass. The G5 batch contributes 22 accepted gameplay frames and 4 rejected candidates.
* Runtime atlases were regenerated with `python3 scripts/extensions/ai-rogue/pack-visual-assets.py`.
* Updated preview: `docs/extensions/ai-rogue/generated/ai-rogue-production-atlas-preview.png` (145,905 bytes).

Runtime wiring:

* Kernel Sentinel render projection selects G5 charge, telegraph, attack, shielded, hit, shutdown, and idle frames from existing snapshots, pending threats, combat-log events, status effects, and audio metadata.
* Final-defense projection adds arena, target, objective, payload activation, and win-unlock sprites from existing depth/status/objective/combat-log state.
* The HUD objective icon and descriptor switch to Final Defense presentation only when final-defense state is present; product copy remains rendered text, not baked into gameplay sprites.
* Transient boss and final-defense effects reuse existing combat/audio cues and cleanup paths.
* Desktop and mobile browser proofs assert no G5 frame names are route-visible and that final-defense sprites remain in bounds.

Validation evidence from the G5 implementation pass:

* `python3 scripts/extensions/ai-rogue/pack-visual-assets.py` passed and reported gameplay 214 frames, UI 115 frames, manifest 159 accepted / 17 rejected, and a 145,905-byte docs preview.
* `bun run typecheck` passed.
* `scripts/check-asset-sizes.sh` passed with all assets within configured size limits.
* `bunx vitest run src/extensions/ai-rogue/runtime/__tests__/assets.test.ts src/extensions/ai-rogue/runtime/__tests__/boss-presentation.test.ts src/extensions/ai-rogue/runtime/__tests__/render-model.test.ts src/extensions/ai-rogue/runtime/__tests__/combat.test.ts src/extensions/ai-rogue/runtime/__tests__/biome-final.test.ts` passed with 5 files and 49 tests.
* Desktop browser proof `PLAYWRIGHT_PORT=5289 PLAYWRIGHT_PUBLIC_DEMO_PORT=5290 bunx playwright test tests/e2e/ai-rogue-runtime.spec.ts --project=chromium` passed with 13 tests.
* Mobile browser proof `PLAYWRIGHT_PORT=5291 PLAYWRIGHT_PUBLIC_DEMO_PORT=5292 bunx playwright test tests/e2e/ai-rogue-mobile.spec.ts --project=chromium` passed with 6 tests.

## G3 Sector Theme Decal Pass - 2026-06-29

The 2026-06-29 G3 pass added sector-specific tile variants, sparse additive decals, and theme-aware atmosphere for Cold Cache, Corrupted Index, Kernel Core, Firewall, and Model Vault. It stayed presentation-only: no topology, room partitioning, enemy rules, pickup placement, objective rules, combat, persistence, audio routes, public-demo boundaries, hosted runtime behavior, or remote loading changed.

Current runtime files after the G3 pass:

| File                                      | Size         | Verification Note                           |
| ----------------------------------------- | ------------ | ------------------------------------------- |
| `src/assets/ai-rogue/gameplay-atlas.png`  | 98,753 bytes | Runtime gameplay image atlas; under 200 KB. |
| `src/assets/ai-rogue/gameplay-atlas.json` | 95,776 bytes | Parsed successfully; 234 gameplay frames.   |
| `src/assets/ai-rogue/ui-atlas.png`        | 24,672 bytes | Runtime UI image atlas; unchanged.          |
| `src/assets/ai-rogue/ui-atlas.json`       | 46,159 bytes | Parsed successfully; 115 UI frames.         |

Accepted G3 gameplay frame groups:

* Cold Cache: `tile_g3_cold_cache_floor`, `tile_g3_cold_cache_wall`, `tile_g3_cold_cache_coolant`, and `decal_g3_cold_cache_shards`.
* Corrupted Index: `tile_g3_corrupted_index_floor`, `tile_g3_corrupted_index_wall`, `tile_g3_corrupted_index_crack`, and `decal_g3_corrupted_index_fragments`.
* Firewall: `tile_g3_firewall_floor`, `tile_g3_firewall_wall`, `tile_g3_firewall_vent`, and `decal_g3_firewall_embers`.
* Model Vault: `tile_g3_model_vault_floor`, `tile_g3_model_vault_wall`, `tile_g3_model_vault_core`, and `decal_g3_model_vault_crystals`.
* Kernel Core: `tile_g3_kernel_core_floor`, `tile_g3_kernel_core_wall`, `tile_g3_kernel_core_rib`, and `decal_g3_kernel_core_sparks`.

Rejected G3 candidates added in this pass:

* `rejected_g3_cold_cache_stripes` - rejected because horizontal stripe bands can read as scanline diagnostics at tile scale.
* `rejected_g3_corrupted_index_stripes` - rejected because bright stripe fragments and small squares risk punctuation-like UI semantics.
* `rejected_g3_firewall_warning_stripes` - rejected because dense warning stripes read as control-state signage.
* `rejected_g3_model_vault_lock_panel` - rejected because the baked lock pictogram implies gameplay lock state.
* `rejected_g3_model_vault_barcode_columns` - rejected because vertical bar clusters can read as barcode or diagnostic text.
* `rejected_g3_kernel_core_target_marker` - rejected because the ring-and-line target motif implies objective targeting instead of ambient sector identity.

Crop and pack process:

* Source art lives at `docs/ongoing-projects/generated/ai-rogue-visual-audio-assets/source/ai-rogue-sector-themes-source.png`.
* Alpha derivative lives at `docs/ongoing-projects/generated/ai-rogue-visual-audio-assets/alpha/ai-rogue-sector-themes-alpha.png`.
* Crop decisions live in `docs/ongoing-projects/generated/ai-rogue-visual-audio-assets/crop-manifest.json` with 179 accepted crops and 23 rejected candidates after this pass. The G3 batch contributes 20 accepted gameplay frames and 6 rejected candidates.
* Runtime atlases were regenerated with `python3 scripts/extensions/ai-rogue/pack-visual-assets.py`.
* Updated preview: `docs/extensions/ai-rogue/generated/ai-rogue-production-atlas-preview.png` (160,796 bytes).

Runtime wiring:

* `theme-visuals.ts` maps every sector theme to typed G3 tile frames, one decal frame, atmosphere colors, deterministic tile-frame selection, sparse decal placement, high-contrast/reduced-motion presentation, and a stable malformed-theme fallback.
* Generated worlds route floor, wall, hazard, door, vault, and terminal frame selection through the theme visual helper while preserving tile kind, passability, sight blocking, hazard damage, start/exit positions, enemy spawns, pickup spawns, and objective behavior.
* Render projection adds deterministic `theme-decal:*` sprites above tiles and below fog/entities. Labels are product-facing sector marks and do not expose frame names, seeds, telemetry, or debug copy.
* Renderer background atmosphere now resolves from `snapshot.theme`; reduced motion still disables scanline drift through the existing layer presentation path.

Validation evidence from the G3 implementation pass:

* `python3 scripts/extensions/ai-rogue/pack-visual-assets.py` passed and reported gameplay 234 frames, UI 115 frames, manifest 179 accepted / 23 rejected, and a 160,796-byte docs preview.
* `bun run typecheck` passed.
* `bash scripts/check-asset-sizes.sh` passed with all assets within configured size limits.
* `bunx vitest run src/extensions/ai-rogue/runtime/__tests__/assets.test.ts src/extensions/ai-rogue/runtime/__tests__/theme-visuals.test.ts src/extensions/ai-rogue/runtime/__tests__/themes.test.ts src/extensions/ai-rogue/runtime/__tests__/world.test.ts src/extensions/ai-rogue/runtime/__tests__/render-model.test.ts src/extensions/ai-rogue/runtime/__tests__/biome-final.test.ts` passed with 6 files and 61 tests.
* Desktop browser proof `PLAYWRIGHT_REUSE_EXISTING_SERVER=true bunx playwright test tests/e2e/ai-rogue-runtime.spec.ts -g "AI Rogue desktop projects distinct G3 sector theme visuals in browser" --project=chromium` passed with 1 test.
* Mobile browser proof `PLAYWRIGHT_REUSE_EXISTING_SERVER=true bunx playwright test tests/e2e/ai-rogue-mobile.spec.ts -g "AI Rogue mobile keeps G3 theme decals readable with compact controls" --project=chromium` passed with 1 test.

## G6 UI And Cinematics Pass - 2026-06-29

The 2026-06-29 G6 pass added cinematic result panels, run-result badges, HUD state markers, save-slot/wallet/storage/loadout icons, and domain-specific settings markers. It stayed presentation-only: no simulation rules, persistence schema, input rules, public-demo behavior, hosted writes, remote loading, or audio routes changed.

Current runtime files after the G6 pass:

| File                                      | Size         | Verification Note                         |
| ----------------------------------------- | ------------ | ----------------------------------------- |
| `src/assets/ai-rogue/gameplay-atlas.png`  | 98,753 bytes | Runtime gameplay image atlas; unchanged.  |
| `src/assets/ai-rogue/gameplay-atlas.json` | 95,776 bytes | Parsed successfully; 234 gameplay frames. |
| `src/assets/ai-rogue/ui-atlas.png`        | 76,172 bytes | Runtime UI image atlas; under 200 KB.     |
| `src/assets/ai-rogue/ui-atlas.json`       | 58,849 bytes | Parsed successfully; 146 UI frames.       |

Accepted G6 UI frame groups:

* Cinematic/result panel pieces: result emblem, end panel, title bar, glitch bar, and result divider.
* Result badges: victory, defeat, shards, objective, turns, mastery, recovery, and streak.
* HUD run-stat markers: depth, turns, shards, and kills.
* Surface icons: class medallions, storage terminal, shard cluster, wallet credit, green/cyan resource caches, active/empty save slots, audio, muted audio, waveform, and contrast markers.

Rejected G6 candidates added in this pass:

* `rejected_g6_play_triangle_control` - rejected because it reads as a generic play button and should stay a familiar standard control.
* `rejected_g6_keyboard_control` - rejected because keyboard input should remain a platform-familiar control.
* `rejected_g6_gamepad_control` - rejected because gamepad input should remain a platform-familiar control.
* `rejected_g6_warning_meter` - rejected because the narrow orange marks overread as warnings or diagnostics.
* `rejected_g6_download_shield` - rejected because the down-arrow shield reads as a download/import control.
* `rejected_g6_skull_target_badge` - rejected because it over-warns normal result UI.
* `rejected_g6_layout_control` - rejected because it resembles a standard layout control.
* `rejected_g6_focus_target_control` - rejected because it resembles a focus or scan control replacement.

Crop and pack process:

* Source art lives at `docs/ongoing-projects/generated/ai-rogue-visual-audio-assets/source/ai-rogue-cinematic-ui-source.png`.
* Alpha derivative lives at `docs/ongoing-projects/generated/ai-rogue-visual-audio-assets/alpha/ai-rogue-cinematic-ui-alpha.png`.
* Crop decisions live in `docs/ongoing-projects/generated/ai-rogue-visual-audio-assets/crop-manifest.json` with 210 accepted crops and 31 rejected candidates after this pass. The G6 batch contributes 31 accepted UI frames and 8 rejected candidates.
* Runtime atlases were regenerated with `python3 scripts/extensions/ai-rogue/pack-visual-assets.py`.
* Updated preview: `docs/extensions/ai-rogue/generated/ai-rogue-production-atlas-preview.png` (228,335 bytes).

Runtime wiring:

* End-screen layout uses G6 panel art, title/glitch accents, result divider, and victory/defeat badges while keeping titles, stat values, and prompts as Pixi text.
* HUD descriptors and sprites use G6 frames for shards, run state, selected upgrade, class, relic, context cache, objective, visible rewards, and result status badges.
* `RewardIcon` accepts G6 React icon names with explicit labels, decorative handling, stable dimensions, and null-safe missing-frame fallback behavior.
* Play, Ledger, Loadout, and Settings use G6 state markers for save slots, wallet, storage, class/relic/loadout, claim, source, audio, display, and save-state contexts while preserving familiar keyboard, gamepad, reset, checkbox, slider, loading, warning, and button controls.
* Browser tests assert no G6 frame names are route-visible and that non-Play routes do not mount runtime bridges.

Validation evidence from the G6 implementation pass:

* `python3 scripts/extensions/ai-rogue/pack-visual-assets.py` passed and reported gameplay 234 frames, UI 146 frames, manifest 210 accepted / 31 rejected, and a 228,335-byte docs preview.
* `bun run typecheck` passed.
* `bash scripts/check-asset-sizes.sh` passed with all assets within configured size limits.
* `bunx vitest run src/extensions/ai-rogue/runtime/__tests__/assets.test.ts src/extensions/ai-rogue/runtime/__tests__/render-model.test.ts src/extensions/ai-rogue/__tests__/client.test.tsx` passed with 3 files and 67 tests.
* Desktop browser proof `PLAYWRIGHT_REUSE_EXISTING_SERVER=true bunx playwright test tests/e2e/ai-rogue-runtime.spec.ts` passed with 15 tests.
* Mobile browser proof `PLAYWRIGHT_REUSE_EXISTING_SERVER=true bunx playwright test tests/e2e/ai-rogue-mobile.spec.ts` passed with 7 tests.

## G7 Player Animation Review - 2026-06-29

The 2026-06-29 G7 pass reviewed the generated player-animation sheet at AI Rogue's 16x16 runtime footprint and rejected direct runtime use. The generated source is useful redraw reference, but the downscaled frames lose too much silhouette definition compared with the current packed player family. The rejected branch is deliberate: no G7 frames were packed, no G7 frame names were added to required runtime contracts, and no player animation state was added to simulation or renderer lifecycles.

Current runtime files after the G7 review:

| File                                      | Size         | Verification Note                         |
| ----------------------------------------- | ------------ | ----------------------------------------- |
| `src/assets/ai-rogue/gameplay-atlas.png`  | 98,753 bytes | Runtime gameplay image atlas; unchanged.  |
| `src/assets/ai-rogue/gameplay-atlas.json` | 95,776 bytes | Parsed successfully; 234 gameplay frames. |
| `src/assets/ai-rogue/ui-atlas.png`        | 76,172 bytes | Runtime UI image atlas; unchanged.        |
| `src/assets/ai-rogue/ui-atlas.json`       | 58,849 bytes | Parsed successfully; 146 UI frames.       |

G7 review outcome:

* Review evidence: `docs/extensions/ai-rogue/generated/ai-rogue-g7-player-downscale-review.png` (68,135 bytes).
* Source art: `docs/ongoing-projects/generated/ai-rogue-visual-audio-assets/source/ai-rogue-player-animation-source.png`.
* Alpha derivative: `docs/ongoing-projects/generated/ai-rogue-visual-audio-assets/alpha/ai-rogue-player-animation-alpha.png`.
* Crop decisions: `docs/ongoing-projects/generated/ai-rogue-visual-audio-assets/crop-manifest.json` now records 32 `rejected_g7_player_*` candidates.
* Runtime atlas changes: none. The packer was skipped because accepted G7 player frame count was zero.
* Runtime contract changes: the stable player frame contract is the four required facing frames: `player_down_0`, `player_left_0`, `player_right_0`, and `player_up_0`.

Rejected G7 candidate groups:

* Front, left, back, and right idle/walk candidates: rejected because subtle animation deltas become noise at 16x16 and the current player silhouette is clearer.
* Strike and Surge candidates: rejected because weapon beams, arcs, rings, and particles dominate the crop and conflict with existing G8 combat FX clarity.
* Hurt and low-HP candidates: rejected because damage/status fragments weaken recognition and would compete with existing overlays.

Runtime wiring:

* `types-assets.ts` now declares the stable player frame contract explicitly.
* `assets.ts` uses that contract in required gameplay-frame validation.
* `render-model.ts`, `renderer-sprites.ts`, `renderer.ts`, and `effects.ts` remain free of G7 player animation hooks.
* Browser specs assert rejected G7 frame names and raw frame names stay out of normal Play UI.

Validation evidence from the G7 review pass:

* `bun run typecheck` passed.
* `bash scripts/check-asset-sizes.sh` passed with all assets within configured size limits.
* `git diff --check` passed.
* `bunx vitest run src/extensions/ai-rogue/runtime/__tests__/assets.test.ts src/extensions/ai-rogue/runtime/__tests__/render-model.test.ts src/extensions/ai-rogue/runtime/__tests__/renderer-lifecycle.test.ts src/extensions/ai-rogue/runtime/__tests__/simulation.test.ts` passed with 4 files and 65 tests.
* Desktop browser proof `PLAYWRIGHT_PORT=5199 PLAYWRIGHT_PUBLIC_DEMO_PORT=5200 bunx playwright test tests/e2e/ai-rogue-runtime.spec.ts` passed with 16 tests.
* Mobile browser proof `PLAYWRIGHT_PORT=5201 PLAYWRIGHT_PUBLIC_DEMO_PORT=5202 bunx playwright test tests/e2e/ai-rogue-mobile.spec.ts` passed with 8 tests.

## Tile Readability Fixes - 2026-06-30

The 2026-06-30 pass corrected two gameplay-readability regressions from the G3 sector theme pass. The packed atlas was not changed; these are runtime tile-routing fixes only.

Floor fix: the themed floor sprites (`tile_g3_*_floor`) carry a hard tile border and high internal contrast, so painting them onto a share of walkable floor made open ground read as wall blocks.

* `themedTileFrameForKind` now returns the flat fallback frame for the `floor` kind instead of sometimes returning `visuals.tileFrames.floor`. Walls still route to the themed wall variant, so this supersedes the earlier G3 statement that floor frame selection routes through the themed helper.
* The themed `tile_g3_*_floor` frames remain packed and type-listed; they are simply no longer assigned to floor tiles. A future art pass may redraw them as flat, borderless, low-contrast floors before reintroducing them.

Hazard fix: routing hazards through the themed accent tiles (`tile_g3_*` coolant/crack/vent/core/rib) replaced the bright pre-G3 hazard pool with dim, busy panels (mean luminance \~45-52 versus \~92 for the pool) that read as decoration rather than danger.

* `themedTileFrameForKind` now returns the fallback frame for the `hazard` kind (the world generator passes `tile_hazard_pool`) instead of `visuals.tileFrames.accent`, restoring the brighter, clearer hazard graphic.
* The themed `tile_g3_*` accent frames remain packed and type-listed; they are no longer assigned to hazard tiles.

Sector identity is unchanged in practice for both fixes: it still comes through themed walls, the sparse `theme-decal:*` layer (which still applies to floor and hazard tiles), and the per-theme atmosphere tint.

Validation evidence from this pass:

* `bun run typecheck` passed.
* `bunx vitest run src/extensions/ai-rogue` passed with 50 files and 416 tests, including new floor-readability and hazard-routing coverage in `theme-visuals.test.ts` and `world.test.ts`.
* Targeted desktop and mobile G3 Playwright proofs (`tests/e2e/ai-rogue-runtime.spec.ts` and `tests/e2e/ai-rogue-mobile.spec.ts`) passed against the running dev server.
* Local browser check at `/extensions/ai-rogue/play` confirmed the visible play area now renders flat, continuous floor with distinct wall blocks, sparse theme decals, and bright readable hazard pools, with no console errors.

## Current Audio Asset Pointer

Generated audio is tracked separately from the visual prompt and atlas inventory below. Current music and SFX live under `src/assets/ai-rogue/audio/`, with runtime behavior documented in [Game Feel And Audio Baseline](/ai-os-and-trend-finder-docs/docs/extensions/ai-rogue/game-feel.md) and size policy documented in [`docs/media-policy.md`](/ai-os-and-trend-finder-docs/docs/media-policy.md). Do not treat AI Rogue music tracks as image-atlas assets under the image-only 200 KB cap; each music track uses the reviewed 900 KB cap enforced by `bash scripts/check-asset-sizes.sh`.

## First Batch Inventory

| Asset   | Minimum Needed                                            | Planning Status                                                                                                                                                                         |
| ------- | --------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Player  | Idle and move-facing sprite or compact 4-direction set.   | Generated and packed: 16x16 source, 4 directions, 3 frames each.                                                                                                                        |
| Enemies | Two enemy types with clear silhouette differences.        | Generated and packed: Errant Process and Firewall Sentry.                                                                                                                               |
| Tiles   | Floor, wall, door, water or hazard, fog/unknown overlay.  | Generated and packed: 16x16 tiles and warm machine-glow palette.                                                                                                                        |
| Items   | `Insight Shards`, health pickup, one upgrade/relic icon.  | Generated and packed: in-run shard, health, relic, hazards.                                                                                                                             |
| UI      | Small frame, claim/reward icon, run marker, status pips.  | Generated and packed: 16x16 icons, 8x8 pips, separate UI atlas.                                                                                                                         |
| Key art | Optional promotional image for extension listing or docs. | Generated docs title screen: [`generated/ai-rogue-title-screen.png`](https://github.com/moshehbenavraham/ai-os/blob/main/docs/extensions/ai-rogue/generated/ai-rogue-title-screen.png). |

## Decisions To Lock Before Generation

* Tile size: use 16x16 source pixels, scaled with nearest neighbor in PixiJS. Target 2x display scale, so one tile renders as 32x32 CSS pixels in the baseline play view. Treat 3x display scale as a roomy-desktop option, not the first-slice baseline.
* Sprite frame budget: recommended default is 1 idle frame plus 2 move frames per direction for the player, and 1 idle frame plus 1 attack/hit frame per enemy for the first slice.
* Sprite footprints: player and standard enemies use a 16x16 source footprint. Bosses and other deliberate large enemies may use a 32x32 source footprint.
* Enemy set: first-slice enemies are `Errant Process`, a 16x16 melee chaser with a blocky/asymmetric silhouette and hot core, and `Firewall Sentry`, a 16x16 ranged guard with a squarer shield-like silhouette and telegraphed line projectile. The first large enemy/boss direction is `Kernel Sentinel`, a 32x32 heavy square/diamond silhouette with a rotating core and telegraphed area attacks.
* Palette: use a dark neutral dungeon base with warm machine-glow accents. The palette should work on the existing dark AI OS shell without becoming a one-hue blue/slate UI.
* Atlas shape: use one gameplay atlas and one tiny UI atlas before adding loose files. Keep gameplay sprites, tiles, pickups, hazards, and fog in the gameplay atlas; keep HUD icons, pips, frames, run markers, and reward icons in the UI atlas.
* HUD scale: most HUD icons use 16x16 source art displayed at 32px. Tiny pips use 8x8 source art displayed at 16px. Small panel/frame pieces can be 8x8 or 16x16 depending on the edge detail needed.
* Shard representation: `Insight Shards` appear both inside dungeon runs and in claim/post-run rewards. In-run shards are tactile cyan pickups; post-run uses an `Insight Cache` reward icon as the authoritative banked reward.
* Provenance format: use the asset tracking template below for every generated or edited image before it is committed.

## Locked Palette

Use a dark neutral dungeon palette with warm machine-glow accents. Gameplay semantics should stay consistent: cyan is currency, green is health, orange/red is hostile, and magenta or acid yellow-green is hazard.

| Role                | Swatches                                   |
| ------------------- | ------------------------------------------ |
| Base dungeon        | `#0D0F12`, `#171A1F`, `#242931`            |
| Walls and edges     | `#343B45`, `#59636F`                       |
| Insight Shards      | `#36D6C7`, `#238C83`, `#7DEBE0`            |
| Hostile cores       | `#FFB454`, `#D96A3A`, `#A83A32`            |
| Health              | `#62C96B`, `#2E7D4F`                       |
| Hazards             | `#D84C8F`, `#C8D94A`                       |
| Player armor/accent | `#D7D2BF`, `#8F9AA6`, `#4D5662`, `#E58A4E` |

## Locked Item Treatment

`Insight Shards` should exist in two visual forms:

* In-run pickup: tiny bright cyan crystal readable inside one 16x16 tile, with an optional 2-frame cyan glint.
* Post-run reward: larger `Insight Cache` icon, 16x16 or 32x32, used for claim and reward banking screens.

The economy rule behind the art is that AI OS activity creates a claimable daily shard pool, dungeon play can collect shards and earn a run bonus, and the post-run screen banks the final `Insight Shards`. The Ledger explains sources and caps; in-run pickups are feedback, not the only currency source.

## Locked Atlas Grouping

Use two atlases for the first playable slice:

| Atlas            | Contents                                                                                        |
| ---------------- | ----------------------------------------------------------------------------------------------- |
| `gameplay-atlas` | Player frames, enemy frames, boss frames, tiles, in-run pickups, hazards, fog/unknown overlay.  |
| `ui-atlas`       | Health pip, status pips, shard HUD icon, `Insight Cache` reward icon, frame pieces, run marker. |

HUD source sizes:

* 16x16: shard HUD icon, run marker, standard status icons, most reward icons.
* 32x32: optional larger `Insight Cache` presentation icon.
* 8x8: health pips, small status pips, frame corners, and simple frame edges.

## Asset Tracking Template

Copy this block for each generated or edited image:

```
Asset:
Purpose:
Prompt summary:
Generated on:
Generated with:
Source file:
Cleanup steps:
Final file:
License/provenance note:
Size check:
```

Plain-language meaning:

* `Asset`: what the image is, like player sheet or shard pickup.
* `Purpose`: where it appears in the game.
* `Prompt summary`: short version of the generation prompt.
* `Generated on`: date the source image was created.
* `Generated with`: tool used, usually `imagegen`.
* `Source file`: original generated image before cleanup.
* `Cleanup steps`: background removal, cropping, palette reduction, atlas pack, or format conversion.
* `Final file`: committed asset path.
* `License/provenance note`: who/what created it and whether it is safe to use.
* `Size check`: result of `bash scripts/check-asset-sizes.sh`.

## Generated Preview Tracking

```
Asset: AI Rogue concept sheet preview
Purpose: Art-direction reference for player, enemies, boss, tiles, pickups, hazards, and UI pieces.
Prompt summary: Top-down pixel art concept sheet using the locked AI Rogue palette, enemies, shard treatment, and UI grouping.
Generated on: 2026-06-21
Generated with: built-in image_gen tool
Source file: Codex session JSONL line 409, $.payload.result
Cleanup steps: Recovered base64 PNG from session JSONL; no sprite cleanup or atlas packing yet.
Final file: docs/extensions/ai-rogue/generated/ai-rogue-concept-sheet-preview.png
License/provenance note: AI-generated project preview; use as reference, not final production sprite atlas.
Size check: Not applicable for src/assets policy; file is a docs reference, not a runtime asset.
```

## Generated Production Tracking

```
Asset: AI Rogue production source sprite sheet
Purpose: Source art for player frames, enemies, boss, pickups, projectile, hazards, and fog pieces.
Prompt summary: Top-down AI Rogue pixel-art sprite sheet on flat #00ff00 chroma-key background using the locked palette and first-batch inventory.
Generated on: 2026-06-21
Generated with: built-in image_gen tool
Source file: Codex session JSONL, image generation call ig_0f19f206ad97fc8d016a38504236e081918868345751eadcee
Cleanup steps: Recovered base64 PNG from session JSONL; cropped representative cells; removed chroma-key background; resized to 16x16, 32x16, or 32x32 footprints; hard-alpha cleaned; reduced to locked AI Rogue palette.
Final file: docs/extensions/ai-rogue/generated/ai-rogue-production-source-sprites.png
License/provenance note: AI-generated project source art; locally cropped and palette-normalized for runtime atlas use.
Size check: Docs reference only; optimized source reference is under 200 KB; runtime derivatives in src/assets/ai-rogue are under 200 KB each.
```

```
Asset: AI Rogue production source tile sheet
Purpose: Source art for dungeon floor, wall, door, coolant, hazard, void, and conduit tiles.
Prompt summary: Top-down AI Rogue cyber-dungeon pixel-art tile sheet with 16x16-readable tiles and no labels or baked text.
Generated on: 2026-06-21
Generated with: built-in image_gen tool
Source file: Codex session JSONL, image generation call ig_0f19f206ad97fc8d016a3851285ae081918cd8ddc18de2ffff
Cleanup steps: Recovered base64 PNG from session JSONL; cropped tile cells; resized to 16x16 source tiles; reduced to locked AI Rogue palette.
Final file: docs/extensions/ai-rogue/generated/ai-rogue-production-source-tiles.png
License/provenance note: AI-generated project source art; locally cropped and palette-normalized for runtime atlas use.
Size check: Docs reference only; optimized source reference is under 200 KB; runtime derivatives in src/assets/ai-rogue are under 200 KB each.
```

```
Asset: AI Rogue production source UI sheet
Purpose: Source art for HUD icons, reward icons, status pips, and frame pieces.
Prompt summary: Compact AI Rogue pixel-art UI icon sheet on flat #ff00ff chroma-key background using the locked HUD sizes and palette.
Generated on: 2026-06-21
Generated with: built-in image_gen tool
Source file: Codex session JSONL, image generation call ig_0f19f206ad97fc8d016a38517c90548191810e61634dd755a3
Cleanup steps: Recovered base64 PNG from session JSONL; cropped icon cells; removed chroma-key background; resized icons to 16x16 and frame/pip pieces to 8x8 or 16x8; hard-alpha cleaned; reduced to locked AI Rogue palette.
Final file: docs/extensions/ai-rogue/generated/ai-rogue-production-source-ui.png
License/provenance note: AI-generated project source art; locally cropped and palette-normalized for runtime atlas use.
Size check: Docs reference only; optimized source reference is under 200 KB; runtime derivatives in src/assets/ai-rogue are under 200 KB each.
```

```
Asset: AI Rogue gameplay atlas
Purpose: Runtime atlas for player, enemy, boss, tile, pickup, hazard, projectile, and fog sprites.
Prompt summary: Derived from the production source sprite and tile sheets generated with image_gen.
Generated on: 2026-06-21
Generated with: built-in image_gen tool plus local Pillow cleanup/packing.
Source file: docs/extensions/ai-rogue/generated/ai-rogue-production-source-sprites.png and docs/extensions/ai-rogue/generated/ai-rogue-production-source-tiles.png
Cleanup steps: Cropped, chroma-keyed where needed, resized to stable footprints, palette-reduced, alpha-validated, and packed with TexturePacker-style JSON frame metadata.
Final file: src/assets/ai-rogue/gameplay-atlas.png and src/assets/ai-rogue/gameplay-atlas.json
License/provenance note: AI-generated project art refined locally for AI Rogue runtime use.
Size check: gameplay-atlas.png is 8,483 bytes; gameplay-atlas.json is 37,874 bytes. New AI Rogue assets pass the 200 KB limit. Repository-wide check passes after Hermes/Claude asset optimization.
```

```
Asset: AI Rogue UI atlas
Purpose: Runtime atlas for shard HUD icon, Insight Cache reward icon, run marker, status pips, and frame pieces.
Prompt summary: Derived from the production source UI sheet generated with image_gen.
Generated on: 2026-06-21
Generated with: built-in image_gen tool plus local Pillow cleanup/packing.
Source file: docs/extensions/ai-rogue/generated/ai-rogue-production-source-ui.png
Cleanup steps: Cropped, chroma-keyed, resized to 16x16, 8x8, or 16x8 source pieces, palette-reduced, alpha-validated, and packed with TexturePacker-style JSON frame metadata.
Final file: src/assets/ai-rogue/ui-atlas.png and src/assets/ai-rogue/ui-atlas.json
License/provenance note: AI-generated project art refined locally for AI Rogue runtime use.
Size check: ui-atlas.png is 5,041 bytes; ui-atlas.json is 32,797 bytes. New AI Rogue assets pass the 200 KB limit. Repository-wide check passes after Hermes/Claude asset optimization.
```

```
Asset: AI Rogue production atlas preview
Purpose: Docs-only nearest-neighbor preview of the packed gameplay and UI atlases at 2x scale.
Prompt summary: Not generated directly; rendered locally from the final runtime atlas files.
Generated on: 2026-06-21
Generated with: local Pillow preview render.
Source file: src/assets/ai-rogue/gameplay-atlas.png and src/assets/ai-rogue/ui-atlas.png
Cleanup steps: Scaled packed atlases 2x with nearest-neighbor on a dark preview background.
Final file: docs/extensions/ai-rogue/generated/ai-rogue-production-atlas-preview.png
License/provenance note: Preview derivative of AI-generated project runtime art.
Size check: Not applicable for src/assets policy; file is a docs reference, not a runtime asset.
```

```
Asset: AI Rogue title screen
Purpose: Docs key art / title-screen reference for the AI Rogue extension.
Prompt summary: Wide pixel-art AI Rogue title screen with a cyber-dungeon chamber, cyan Insight Shards, warm hostile Kernel Sentinel core, and large exact "AI ROGUE" title text.
Generated on: 2026-06-23
Generated with: built-in image_gen tool
Source file: Codex generated_images output, image generation call ig_0f87617a74dd6114016a3ad95d6b4c8191bf3290205956e1fd
Cleanup steps: Copied into docs, stripped metadata, and reduced to 128 colors with ImageMagick.
Final file: docs/extensions/ai-rogue/generated/ai-rogue-title-screen.png
License/provenance note: AI-generated project docs key art; use as reference/title-screen artwork, not as a runtime atlas source without separate optimization.
Size check: Docs reference only; 483 KB indexed PNG; not subject to the src/assets 200 KB runtime image policy.
```

## Asset Checklist Source Pass - 2026-06-23

These source sheets support the current [Game Feel And Audio Baseline](/ai-os-and-trend-finder-docs/docs/extensions/ai-rogue/game-feel.md).

Shared cleanup: recovered base64 PNGs from the Codex session JSONL, stripped metadata, and reduced each source image to 128 colors with ImageMagick. Runtime cleanup: cropped representative cells, removed `#00ff00` or `#ff00ff` chroma-key backgrounds, hard-alpha cleaned sprite edges, reduced derivatives to the locked AI Rogue palette, and packed them into the existing gameplay/UI atlases. No separate `fx-atlas` was needed.

| Asset                             | Prompt summary                                                                                    | image\_gen call                                         | Final source file                                                                                                                                                                           | Size note            |
| --------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------- |
| Pixel font sheet                  | 16x16-style off-white glyph sheet for digits, A-Z, and HUD symbols on `#ff00ff`.                  | `ig_0c85e8266bf2bfb2016a3a2c324ed48191bbb0e3122f43eb24` | [`generated/ai-rogue-source-pixel-font-sheet.png`](https://github.com/moshehbenavraham/ai-os/blob/main/docs/extensions/ai-rogue/generated/ai-rogue-source-pixel-font-sheet.png)             | Docs source, 187 KB. |
| FX sheet                          | Hit sparks, slash arcs, shutdown poofs, shockwaves, pickup sparkles, and dust puffs on `#00ff00`. | `ig_0c85e8266bf2bfb2016a3a2c6e5f5c819182e97de1533f8dd5` | [`generated/ai-rogue-source-fx-sheet.png`](https://github.com/moshehbenavraham/ai-os/blob/main/docs/extensions/ai-rogue/generated/ai-rogue-source-fx-sheet.png)                             | Docs source, 170 KB. |
| Damage vignette                   | Red-edge danger overlay source with chroma-key center on `#ff00ff`.                               | `ig_0c85e8266bf2bfb2016a3a2cc480d4819183cead90f35ba597` | [`generated/ai-rogue-source-damage-vignette.png`](https://github.com/moshehbenavraham/ai-os/blob/main/docs/extensions/ai-rogue/generated/ai-rogue-source-damage-vignette.png)               | Docs source, 219 KB. |
| Enemy attack and telegraph frames | Errant Process melee flare and Firewall Sentry charge/attack frames on `#00ff00`.                 | `ig_0c85e8266bf2bfb2016a3a2cfdd19481918ff265d767e8e04e` | [`generated/ai-rogue-source-enemy-attack-telegraph.png`](https://github.com/moshehbenavraham/ai-os/blob/main/docs/extensions/ai-rogue/generated/ai-rogue-source-enemy-attack-telegraph.png) | Docs source, 442 KB. |
| Telegraph warning tile            | Warning marker and firing-line tile variants on `#00ff00`.                                        | `ig_0c85e8266bf2bfb2016a3a2d4e77488191925b1ed4c1395d12` | [`generated/ai-rogue-source-telegraph-warning-tile.png`](https://github.com/moshehbenavraham/ai-os/blob/main/docs/extensions/ai-rogue/generated/ai-rogue-source-telegraph-warning-tile.png) | Docs source, 237 KB. |
| Kernel Sentinel boss              | 32x32-style Kernel Sentinel boss idle, charge, attack, and hit-flash frames on `#00ff00`.         | `ig_0c85e8266bf2bfb2016a3a2d8e8c008191b36977e77b634614` | [`generated/ai-rogue-source-kernel-sentinel-boss.png`](https://github.com/moshehbenavraham/ai-os/blob/main/docs/extensions/ai-rogue/generated/ai-rogue-source-kernel-sentinel-boss.png)     | Docs source, 234 KB. |
| Relic icons                       | Overclock chip, hardened-chassis shield, and surge capacitor icon variants on `#ff00ff`.          | `ig_0c85e8266bf2bfb2016a3a2dcaf45081918cac61a623643527` | [`generated/ai-rogue-source-relic-icons.png`](https://github.com/moshehbenavraham/ai-os/blob/main/docs/extensions/ai-rogue/generated/ai-rogue-source-relic-icons.png)                       | Docs source, 147 KB. |
| Shrine tile                       | Choose-one relic shrine tile variants with three glowing slots on `#00ff00`.                      | `ig_0c85e8266bf2bfb2016a3a2e01c49481918a5bd20cb794fb04` | [`generated/ai-rogue-source-shrine-tile.png`](https://github.com/moshehbenavraham/ai-os/blob/main/docs/extensions/ai-rogue/generated/ai-rogue-source-shrine-tile.png)                       | Docs source, 313 KB. |
| Title/end frame pieces            | Modular sector title-card and victory/defeat screen frame pieces on `#ff00ff`.                    | `ig_0c85e8266bf2bfb2016a3a2e5b3e088191ae50758496513c83` | [`generated/ai-rogue-source-title-end-frame.png`](https://github.com/moshehbenavraham/ai-os/blob/main/docs/extensions/ai-rogue/generated/ai-rogue-source-title-end-frame.png)               | Docs source, 366 KB. |
| Win/lose glyphs and grid          | Victory glyph, defeat glyph, and subtle tiling grid variants on `#ff00ff`.                        | `ig_0c85e8266bf2bfb2016a3a2ec6d03c8191ba257a0a722ee7b0` | [`generated/ai-rogue-source-win-lose-glyphs-grid.png`](https://github.com/moshehbenavraham/ai-os/blob/main/docs/extensions/ai-rogue/generated/ai-rogue-source-win-lose-glyphs-grid.png)     | Docs source, 285 KB. |

License/provenance note: AI-generated project source art produced with the built-in `image_gen` tool and refined locally for AI Rogue runtime use.

Runtime derivative notes:

| Runtime target                                | Source sheets                                                                     | Packed result                                                                                                                                 | Size note                                                                |
| --------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------ |
| `src/assets/ai-rogue/gameplay-atlas.png/json` | FX, enemy attack/telegraph, telegraph warning, Kernel Sentinel boss, shrine tile. | Added `fx_*`, `enemy_*_attack`, `telegraph_warning_*`, `boss_kernel_sentinel_*`, and `tile_relic_shrine_*` frames.                            | PNG 8,483 bytes; JSON 37,874 bytes; 93 frames; under 200 KB image limit. |
| `src/assets/ai-rogue/ui-atlas.png/json`       | Pixel font, relic icons, title/end frame pieces, win/lose glyphs and grid.        | Added `glyph_*`, `icon_relic_*`, `frame_title_*`, `frame_end_*`, `glyph_victory_badge`, `glyph_defeat_core`, and `tile_result_grid_*` frames. | PNG 5,041 bytes; JSON 32,797 bytes; 82 frames; under 200 KB image limit. |
| Runtime Graphics                              | Damage vignette source.                                                           | Low-health red-edge vignette drawn in `src/extensions/ai-rogue/runtime/renderer.ts`.                                                          | No runtime bitmap; scales to canvas size and keeps atlas size low.       |

## E2E Space Baseline

Measured with Playwright against the current extension host on 2026-06-21, using `/extensions/trend-finder/trends` as the live shell proxy because `ai-rogue` is not registered yet.

AI Rogue's Play view should skip a promotional hero and reserve the first screen for the game. With the standard multi-view extension nav still present, the shell costs are:

* Top app bar: 56px.
* Desktop left navigation: about 256px.
* Desktop main padding: 24px per side.
* Mobile and below-`md` main padding: 16px per side.
* Extension view nav: about 99px vertical.

Above-the-fold playable space with no hero:

| Viewport  | Usable Slot | 32px Tile Fit | 48px Tile Fit |
| --------- | ----------- | ------------- | ------------- |
| 1440x1000 | 1136x797    | 35x24         | 23x16         |
| 1366x768  | 1062x565    | 33x17         | 22x11         |
| 1280x720  | 976x517     | 30x16         | 20x10         |
| 1024x768  | 720x565     | 22x17         | 15x11         |
| 768x1024  | 464x821     | 14x25         | 9x17          |
| 767x1024  | 735x837     | 22x26         | 15x17         |
| 390x844   | 358x657     | 11x20         | 7x13          |

Asset implication: generate and crop art around 16x16 source tiles and compact sprites that read clearly at 32px display size. The first playable slice should fit a useful room/combat composition in roughly 30x16 visible tiles at 1280x720, while allowing narrower portrait/mobile layouts to show fewer columns without changing source art.

## Acceptance Checklist

* Asset reads clearly at the intended in-game scale.
* Player, enemy, wall, floor, hazard, pickup, and fog silhouettes are distinct.
* Transparent sprites have clean alpha with no chroma-key fringe.
* No text is baked into gameplay sprites.
* Animation frames do not resize or shift the tile footprint.
* Atlases are compact and named for stable imports.
* Each committed asset is under the media policy limit.
* Prompts and provenance notes are saved beside the art plan or asset manifest.

## Proposed Workspace Paths

```
src/assets/ai-rogue/
|-- gameplay-atlas.png
|-- gameplay-atlas.json
|-- ui-atlas.png
`-- ui-atlas.json
```

Use PNG for pixel-art atlases when crisp indexed-color transparency matters. Use WebP only when it preserves the intended edge quality and remains smaller.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://ai-os-and-trend-finder.gitbook.io/ai-os-and-trend-finder-docs/docs/extensions/ai-rogue/visual-assets.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
