# Counterweight Choir — idea dossier

Source page: https://autechsolutions-game-factory.pages.dev/ideas/counterweight-choir/

## Overview

- **Title:** Counterweight Choir
- **Pitch:** Swap chunky weights across a hanging sculpture in the right physical order, opening the hooks you need until every beam clicks into its pictured target pose.
- **State:** prototype-live
- **Pipeline stage:** Gate 10
- **Advisory score:** 69 / 100
- **Score confidence:** 80 / 100
- **Evidence integrity:** 75 / 100
- **Run:** 2026-08-pipeline-flow-test-en-us
- **Current revision:** 7
- **Prototype:** /games/counterweight-choir/
- **Render mode:** 2.5d
- **Orientations:** portrait
- **Camera:** Fixed orthographic front elevation of a tall, credible hanging kinetic sculpture inside a bright architectural gallery. Shallow 2.5D modeled depth, tension wires, hard daylight, and cast shadows communicate mass and clearance; no pan, zoom, orbit, perspective change, or hidden off-screen hook.
- **Controls:** One finger presses a 64x64 or larger physical counterweight, drags it to a highlighted open hook, sees the exact settled ghost and future hook states, then releases to place or swap. Tap-select/tap-destination, mouse drag, and keyboard activation execute the same command. Standard levels keep seven to ten weights visible without shrinking interactive hit regions.
- **Tags:** physical-counterweight-swap-and-order-puzzle, 2D, portrait
- **Updated:** 2026-09-05T10:30:34.826Z

## Market evidence claims (7)

### 1. Sensor Tower reports Puzzle IAP revenue above $4B in Q2 2026, up 17 percent year over year, and Puzzle as the only major game genre with positive year-over-year download growth at 1 percent.

- **ID:** sensor-tower-q2-2026-puzzle
- **Truth label:** REPORTED
- **Kind:** market-report
- **Source URL:** https://sensortower.com/blog/q2-2026-digital-market-index-report
- **Retrieved:** 2026-08-20T22:45:44.7159022Z

### 2. Sensor Tower says multiple arrow puzzle titles scaled simultaneously and attributes appeal to simple rules, rapid retry loops, and short-form video creatives.

- **ID:** sensor-tower-june-2026-puzzle-creative
- **Truth label:** REPORTED
- **Kind:** acquisition-report
- **Source URL:** https://develop.sensortower.com/blog/top-10-worldwide-mobile-games-by-revenue-and-downloads-in-june-2026
- **Retrieved:** 2026-08-20T22:45:44.7159022Z

### 3. Current US page shows the closest hanging-mobile product, 90 curated solver-verified puzzles, daily and endless modes, but only one visible rating.

- **ID:** apple-poise-market
- **Truth label:** CONFIRMED
- **Kind:** competition-signal
- **Source URL:** https://apps.apple.com/us/app/poise-a-balance-puzzle/id6788523588
- **Retrieved:** 2026-08-20T22:45:44.7159022Z

### 4. Current US page sells moving weights to particular hooks and beam balance for $0.99 and lacks enough ratings for an overview.

- **ID:** apple-weighting-game-market
- **Truth label:** CONFIRMED
- **Kind:** competition-signal
- **Source URL:** https://apps.apple.com/us/app/weighting-game/id6745152557
- **Retrieved:** 2026-08-20T22:45:44.7159022Z

### 5. Current US page advertises 150 levels, fixed and free-physics placement, distractors, locks, multiple beams, daily challenge, endless mode, and one visible rating.

- **ID:** apple-fulcrum-market
- **Truth label:** CONFIRMED
- **Kind:** competition-signal
- **Source URL:** https://apps.apple.com/us/app/the-fulcrum/id6760799324
- **Retrieved:** 2026-08-20T22:45:44.7159022Z

### 6. Current US page shows a $4.99 premium authored order puzzle with 240-plus levels, 118 ratings, 4.8 stars, and Editors Choice.

- **ID:** apple-railbound-premium
- **Truth label:** CONFIRMED
- **Kind:** monetization-signal
- **Source URL:** https://apps.apple.com/us/app/railbound/id1636439801
- **Retrieved:** 2026-08-20T22:45:44.7159022Z

### 7. Current US page shows a $5.99 authored puzzle with no ads or in-app purchases, supporting model existence but not this concepts conversion.

- **ID:** apple-good-snowman-premium
- **Truth label:** CONFIRMED
- **Kind:** monetization-signal
- **Source URL:** https://apps.apple.com/us/app/a-good-snowman/id1040930654
- **Retrieved:** 2026-08-20T22:45:44.7159022Z

## Game design document

### Counterweight Choir — Game Design Document v0.4

#### Source and Truth Labels

This document is the owner-directed material revision of Counterweight Choir. It replaces the
player-facing resonance-token and torque-notation design in v0.2. The instruction is preserved in
`00-brief/revision-2026-08-21-hypercasual.md` and the realistic-continuity correction in `00-brief/revision-2026-08-21-realistic-continuity.md`. Rules and inventories below are design facts.
Fun, demand, retention, revenue, and store acceptance remain hypotheses for later evidence gates.

#### Player Promise and Audience

Counterweight Choir is a portrait tactile order puzzle with hyper-casual readability and
hybrid-casual content depth. In a 30-to-90-second level, the player drags realistic suspended counterweights between
visible hooks, swaps occupied weights, and watches a linked hanging sculpture settle. Each placement
may reveal or hide the hook needed next. The goal is to match the pictured sculpture within the move
budget. Players never read formulas, torque values, signed angles, pitch bands, or token strings.

The target audience is broad mobile puzzle players who understand sorting, swapping, and visual
matching immediately but enjoy discovering a short sequence. The store promise is: "Swap the right
weights in the right order and watch the whole hanging puzzle click into place."

#### Design Pillars and Non-Goals

- `P-TOUCH`: one weight drag is the only gameplay input.
- `P-VISIBLE`: size, distance, target pose, reachability, and result are shown physically.
- `P-ORDER`: a committed swap changes which later hooks are reachable, so sequence matters.
- `P-HIERARCHY`: later levels link beams; one lower change visibly reposes several ancestors.
- `P-FORGIVING`: unsafe previews bounce back, Undo restores the prior move, and Retry is instant.
- `P-SATISFY`: snap, settle, hook reveal, target lock, and final ring create a clear reward.
- `P-VARIETY`: six mechanic families and four tiers change the reasoning pattern, not only numbers.

Non-goals are visible mathematics, resonance phrases, generic single-scale equality, free-running
physics, timing, catching, accelerometer play, rhythm tapping, narrative branching, combat, gacha,
base building, multiplayer, forced social play, and any hint that automatically performs a move.

#### Player-Facing Fingerprint

- Input: drag one visible weight from a tray or hook to a currently open hook; release to place or swap.
- Decision: choose the replacement order that moves beams toward their targets and exposes later hooks.
- Objective: match every authored target beam angle and required target socket before moves reach zero.
- Failure: exhaust the move budget without completing the target; unsafe previews never commit.
- State change: a swap changes one or two weight locations, settles the hierarchy, changes hook
  reachability, consumes one move, and leaves a new visible arrangement.
- Progression: 60 levels, six mechanic families, four difficulty tiers, and increasingly linked orders.
- Content: authored weight sets, target poses, hooks, gates, blockers, move budgets, and recovery routes.
- Presentation: a bright architectural sculpture gallery with slender anodized beams, tension wires, realistic ceramic and metal counterweights, hard daylight, compact white/cobalt UI, and a dense seven-to-ten-weight hierarchy in standard levels.
- Metagame: completed sculptures fill a gallery shelf; no power upgrades or paid solution bypass.

#### Core Loop and Player Verbs

1. Read the target silhouette: each beam has a thick target arc and required hooks have matching outlines.
2. Inspect the available weights. Size is communicated by physical volume plus one, two, or three embossed dots.
3. `M-PICK`: press a weight in the tray or on an open hook. Legal destinations pulse.
4. `M-DRAG`: move the weight toward a legal hook. The source remains reserved.
5. `M-PREVIEW`: show the exact final sculpture as a translucent solid-color ghost, including target
   matches, newly open hooks, closed hooks, and the first clearance problem. No numbers appear.
6. `M-SWAP`: release. An empty destination receives the weight and leaves the source empty. An occupied
   destination exchanges the two weights. An unsafe or closed destination bounces the weight home.
7. `M-SETTLE`: animate affected beams from the edited beam upward in at most 500 ms.
8. `M-CHECK`: matched beams click into their target arcs. If all target conditions pass, complete the level.
9. Continue, `M-UNDO` the last committed move, or `M-RETRY` the authored setup.

There is no separate commit button after drag. Tap-selection plus tap-destination and keyboard
selection/activation execute the identical command for accessibility and desktop testing.

#### Deterministic Rules

##### Authored level data

A standard level contains one rooted acyclic tree of two to six beams, seven to ten movable weights, zero to four
tray slots, and six to sixteen hooks. FTUE and the first reading lesson may use four or five weights. A weight has stable ID, mass class 1, 2, or 3, shape, and color.
A beam has stable ID, parent hook, integer hook coordinates from -3 through -1 and 1 through 3,
allowed angle states, and an authored target angle. A hook may contain a weight, be empty, be a
required final socket, or carry one reachability rule. Weight classes remain hidden resolver data; no weight face prints a numeral. Every level declares a move budget, mechanic
family, difficulty tier, target state, and canonical solution.

##### Hidden settle resolver

The simulation uses integers but the UI never exposes the calculation. Leaves resolve before
parents, with stable IDs breaking ties. Local moment is the sum of hook coordinate multiplied by
weight mass plus each child's transmitted mass at its parent hook. Moment maps to five poses:
strong-left, left, centered, right, or strong-right. The preview, commit, solver, replay, Undo record,
and tests call the same pure resolver. Animation timing cannot affect a result.

The player-facing result is communicated only through weight size, lever distance, beam motion,
target arcs, hook halos, and ghost pose. An optional accessibility label may say "left side becomes
heavier" or "upper beam tilts right"; it may not require arithmetic.

##### Placement and swap

A source is legal when it holds a movable weight and is currently reachable. A destination is legal
when it is another currently open hook compatible with the weight. Dropping on an empty hook moves
the weight. Dropping on an occupied hook swaps the two weights atomically. The displaced weight goes
to the source; a tray source remains a tray destination. A drag back to source or outside a target
cancels without mutation.

##### Reachability and correct order

A hook has one of four readable states: open, target, closed by shutter, or blocked by another
element. An authored `openWhen` rule may reference the current pose of its own beam, its parent, or
one stable blocker. Reachability is evaluated before the move. A committed move settles the sculpture
and then recalculates reachability for the next move. Therefore a player may need to place a heavy
weight temporarily, open a higher hook, perform the important swap, then recover the temporary weight.
No hidden timer, randomness, or arbitrary sequence flag controls order.

One-way hooks accept a weight only from the tray or from the arrow direction shown on the beam.
Reveal shutters physically slide away when open. Fragile clearance zones reject a preview if a final
weight or beam overlaps the outlined glass zone. These rules always have visible geometry.

##### Target, move budget, Undo, and terminal states

After settling, a beam matches when its angle state equals its thick pictured target arc. A required
target socket matches when it contains the specified mass class or shape, according to a nonnumeric silhouette and dot/shape motif on the target card.
Success requires all declared beam and socket targets simultaneously. The final correct move consumes
one move and then completes the level.

Every safe committed move consumes exactly one move. Unsafe, closed, cancelled, or invalid drops do
not. Undo restores the exact prior weight positions, beam poses, hook states, remaining moves, and
terminal state; it is available once per committed step back to the initial state. Undo refunds that
move and records no grade advantage. At zero moves, an incomplete level enters failure and offers
Undo or Retry. Retry restores the authored setup. Reload starts FTUE and Level 1 fresh with no gameplay persistence.

##### Determinism and tie-breaking

If several rules fail, report closed destination before direction, clearance, boundary, then invalid
target data. Within a category use beam depth followed by stable entity ID. No floating-point physics,
random seed, frame time, tween completion, device speed, or pointer path affects state.

#### Failure, Consequence, and State Change

Closed hooks show a solid shutter and short "Open this first" label. Unsafe previews outline the
decisive collision or boundary and bounce back on release without spending a move. A safe but poor
swap commits, changes the sculpture, may close a later hook, and consumes one move. This is the core
consequence: the player can see why their order created or removed an opportunity.

At zero moves, the sculpture remains visible with unmatched target arcs and offers Undo and Retry.
There is no punishment animation, currency loss, energy loss, or forced ad. Success locks each beam
to its target in leaf-to-root order, rings the bells once, displays moves versus par, and advances.

#### Progression and Content Grammar

Launch content is 60 solver-verified levels. Adjacent levels may not share a canonical route
signature. No family may exceed 20 percent of the campaign.

- `F-SIMPLE-SWAP` (10): one beam, size/distance reading, empty placement, then occupied swaps.
- `F-LINKED-BALANCE` (10): two and three linked beams where one lower change reposes an ancestor.
- `F-REVEAL-HOOK` (10): target hooks open only in visibly authored beam poses.
- `F-ONE-WAY` (10): arrow hooks constrain which replacement may happen first.
- `F-CLEARANCE` (10): outlined glass zones reject specific heavy-weight routes.
- `F-RELAY-ORDER` (10): combine temporary placements, reveal, swap, and recovery in short sequences.

Four tiers control solution depth and branching:

- `T1-READ`: one to two moves, one beam, no dead-end after a safe move.
- `T2-SWAP`: two to four moves, occupied replacements and one linked consequence.
- `T3-ORDER`: three to six moves, one reveal or one-way dependency and recoverable wrong orders.
- `T4-MASTERY`: four to eight moves, two linked dependencies across at least two mechanic families.

The offline solver enumerates legal swaps, rejects unreachable targets, stores canonical shortest
routes, requires at least one solution within budget, records state count and branching, and proves
adjacent route signatures differ. The first 36 levels require unique shortest solutions. Later
levels may permit intentional alternatives but must keep different first-two-move signatures.

#### State and Content Inventory

Mechanics: `M-PICK`, `M-DRAG`, `M-PREVIEW`, `M-SWAP`, `M-SETTLE`, `M-CHECK`, `M-UNDO`, `M-RETRY`.
Entities: `E-BEAM`, `E-PIVOT`, `E-HOOK`, `E-WEIGHT-1`, `E-WEIGHT-2`, `E-WEIGHT-3`,
`E-TRAY`, `E-SHUTTER`, `E-ONEWAY`, `E-GLASS`, `E-TARGET-ARC`, `E-BELL`.
Runtime states: fresh, selected, dragging, preview-safe, preview-blocked, settling, hook-reveal,
target-match, active, success, failure, paused, loading, error, disabled, and interrupted.
Screens: onboarding, gallery home/level select, gameplay, pause, success, failure, settings,
accessibility, legal, and recoverable error.

#### First Session and FTUE

Every visit and reload opens FTUE from step one.

1. Goal: show a one-beam sculpture beside its thick target arc and say "Make the beam match the picture."
2. Input: highlight the large two-dot weight and an open hook. The player performs the real drag.
3. Result: while dragging, the whole target ghost moves and the destination shows "This opens the top hook."
4. Commit: release performs the real swap, settles the beam, opens the hook, and completes the first core action.
5. Order: a second guided swap uses the newly opened hook and completes Level 1.

FTUE can be skipped before interaction and replayed from the visible How to Play control. The game
shell is inert while the explanation is open. Skip enters Level 1. No FTUE or gameplay state persists.

#### Economy and Monetization Boundaries

The evaluation build has no ads, shop, currency, energy, consumable hint, paid solution, streak loss,
push notification, or purchase gate. Market analysis may recommend a later business-model test, but
monetization cannot alter the deterministic level result.

If retention is proven, the first test is either rewarded visual guidance after two voluntary retries
or a one-time ad-free/full-gallery purchase. Never sell automatic solutions. Interstitial frequency,
pricing, willingness to pay, and ad tolerance remain unknown until observed tests.

#### UX, Accessibility, Audio, and VFX

The complete sculpture, target card, move count, Undo, and Retry remain visible in portrait play.
Weights are at least 64 by 64 logical pixels; other controls are at least 48 by 48. Safe areas cannot
crop a beam or hook. Back cancels a drag, then opens Pause. Rotation pauses and asks for portrait.

Mass uses volume plus one, two, or three embossed dots. Hook state uses geometry, icon, outline, and
short label as well as color. Target arcs use thick silhouettes. Screen-reader summaries name the
selected weight size, source, destination, affected beams, newly opened/closed hooks, target matches,
and remaining moves. Text scales to 150 percent without covering the sculpture.

Pickup uses a porcelain/metal tick, preview uses a restrained cable hum, swap uses a double clack, settling uses
a descending mechanical sequence, hook reveal uses a latch, and success rings the sculpture once. Reduced
motion replaces rotations with a 100 ms before/after crossfade and stepped highlights. No flashes,
screen shake, continuous sway, or sound-only information are allowed.

#### Technical Constraints

Target mid-tier 2019 iOS and Android phones at 60 fps with 30 fps fallback, under 150 MB installed,
under 250 MB peak memory, and under 128 MB texture residency. Use authored integer JSON and a pure
resolver shared by preview, commit, solver, Undo, replay, and tests. A canonical state hash includes
level ID, sorted weight locations, beam poses, hook states, remaining moves, history depth, and
terminal state.

The game is offline-first with no backend or runtime generation. Settings, consent, and optional
entitlement may persist; FTUE completion, level progress, board state, moves, results, and gallery
completion do not persist in the factory prototype.

#### Risks, Falsifiers, and Acceptance Criteria

Primary risks are that the game collapses into generic equal-scale puzzles, target silhouettes reveal
answers, correct order feels arbitrary, linked movement becomes visually noisy, or 60 levels repeat
the same swap pattern.

Revise if fewer than 8 of 10 unfamiliar players can explain the goal without reading a paragraph,
fewer than 7 can predict which hook opens after FTUE, or fewer than 6 request another level. Reject
the concept if the order dependency requires hidden rules, if fewer than four mechanic families
produce distinct solver route signatures, or if live comparables already deliver the same
reachability-changing hierarchical swap loop as their dominant product.

Acceptance requires byte-identical preview and commit, visible reason for every hook state, no
formula/token UI, exact Undo, 60 reachable levels, six families, four tiers, maximum 20 percent per
family, different adjacent route signatures, 36 unique shortest routes, mobile no-scroll at 390x844,
desktop/touch/keyboard parity, 150 percent text, reduced motion, non-color cues, fresh FTUE on reload,
and no gameplay persistence. Prototype testing must complete representative recovery and all
solver-authored level routes before technical sign-off.

#### Fantasy, Promise, Audience, and Genre

Restore a realistic hanging kinetic sculpture by swapping visible dot-marked weights in the right physical order. The audience is broad portrait-mobile puzzle players; the genre is hypercasual-readable spatial/order puzzle with authored hybrid-casual depth.

#### Design Pillars

Touchability, exact consequence preview, order-changing hook access, whole-board readability, forgiving recovery, and solver-enforced variety are mandatory.

#### Camera, Dimension, and Controls

Portrait 2.5D fixed orthographic front elevation. One-finger drag or tap-select/tap-destination performs place or occupied swap; no pan, zoom, orbit, tilt, timing, or hidden off-screen action.

#### Difficulty, Progression, and Economy

Sixty authored solver-verified levels span six capped families and four tiers. Progress comes from new action-graph consequences, not larger numbers. There is no power economy.

#### Monetization Constraints

The evaluation build is ad-free and currency-free. Any later rewarded guidance, ad removal, or full-gallery purchase must be separately tested and cannot block owned play or sell solution power.

#### UX and Accessibility

The entire sculpture, compact pictured target, moves, tray, Undo, and Retry stay on one screen. Size plus dots, hook geometry plus labels, scalable text, reduced motion, haptics, screen-reader summaries, and tap parity repeat critical state.

#### Audio and VFX

Porcelain taps, metal clicks, shutter slides, restrained settle motion, full-pose ghost, hook-change pulse, target stamps, and one completion bell reinforce visible causality without musical token notation or casino spectacle.

#### Analytics and Technical Constraints

Offline-first JSON levels use one deterministic integer resolver shared by preview, commit, Undo, solver, replay, and tests. Optional consented analytics never gates play. Target 2019 mid-tier phones, 60 fps with 30 fps fallback.

#### Risks and Falsifiers

Reject or revise if occupied swaps rarely change future hook reachability, unfamiliar players describe only generic balancing, route families collapse into coordinate variants, the target reveals the entire move order, or the first two real moves fail to teach reveal causality.

#### Acceptance Criteria

The FTUE shows an occupied swap opening the next hook; at least four families alter the legal-action graph; every level is solver-verified with Undo; ten-player testing reaches the defined comprehension gates; no visible equation, torque label, resonance token, phrase rail, or generic balance-only objective remains.

#### Realistic Visual Continuity Contract

Standard gameplay frames show a credible gallery-scale mobile with two to six slender beams and seven to ten visible counterweights. Materials read as anodized aluminum, tension cable, porcelain, brushed steel, clear acrylic, plaster, and concrete under directional architectural daylight. The compact interface uses warm white panels, graphite text, and restrained cobalt action color. The earlier soft candy-toy treatment is explicitly rejected. Visual continuity with the prior Counterweight Choir generation is owner-requested; only its mathematical and resonance presentation is removed.

## UX flow

### Counterweight Choir v0.3 — UX Flow

#### Experience rule

Every screen reinforces the same promise: swap a visible weight, watch the sculpture move, reveal the
next hook, and match the picture. Mathematics and resonance notation never appear.

#### First visit

A three-job FTUE opens from step one on every visit and reload. It states the pictured-pose goal,
requires a real drag or tap swap, and shows the resulting hook reveal plus success/failure recovery.
The shell remains inert while explanation panels are open. Skip enters the same Level 1 and How to
Play replays the flow during the current visit.

#### Home and level path

Home is a compact gallery archive, not a large marketing hero. Continue is the dominant
thumb-reachable action. Six chapter tabs expose ten levels each. Available, current, completed, and
locked levels use icon, silhouette, label, and color. There is no login, approval, backend status,
currency, shop, daily reward, or false progress persistence in the factory prototype.

#### Gameplay layout

- Top safe band: Back/Pause, level number, moves, and one compact target silhouette card.
- Center: the complete front-elevation sculpture with every hook and target arc visible.
- Bottom reach band: compact staging tray, Undo, Retry, and How to Play; most weights remain suspended in the sculpture.
- Transient feedback sits beside the affected hook, never in a detached log or formula panel.

A selected weight enlarges slightly. Open destinations pulse; occupied destinations show a swap
badge; closed shutters stay physically solid. The exact settled ghost appears while dragging.
Release is the commit. No second confirmation button duplicates the gesture.

#### Settle and order feedback

After a swap, affected beams settle leaf-to-root, then shutters visibly open or close. The newly
changed hook receives one short label: Open now or Closed. Target arcs click independently so the
player can read progress without a score calculation. Reduced motion shows the same states as stepped
before/after frames.

#### Undo, failure, and recovery

Undo restores the previous atomic state and refunds its move. Unsafe destinations bounce back and
cost nothing. At zero moves the current arrangement remains visible with unmatched arcs highlighted.
Failure offers Undo, Retry, and Home. Retry is immediate and restores authored data. No energy, ad,
currency, or punishment interrupts recovery.

#### Success

All matched target arcs lock leaf-to-root, the bell rings once, and a small result sheet shows moves
versus par and shelf progress. Next is primary; Replay and Home are secondary. No invented chest,
currency, star shower, or power upgrade appears.

#### Pause, settings, accessibility, and legal

Pause freezes the stable state and offers Resume, Restart, How to Play, Settings, and Home. Settings
contains audio, haptics, text size, reduced motion, tap alternative, consent, restore purchase if
later applicable, support, legal, and reset. Accessibility previews every change against a sample
weight/hook. Legal content is cached and always has a local Back route.

#### Back, interruption, orientation, and errors

Back cancels a drag, otherwise opens Pause; submenu Back returns one level. An OS interruption
cancels an uncommitted drag or restores the last atomic settle, then pauses. Landscape rotation
pauses and asks for portrait without reflowing an active decision. Corrupt local level data names the
problem and returns Home; optional network or analytics failure never blocks play.

#### Safe areas, reachability, and focus

The target card and tray respect top/bottom insets. The sculpture receives the remaining height and
may scale uniformly but never crop. Gameplay targets are 64x64 minimum and navigation 48x48. Focus
follows target, moves, sculpture, tray, actions, and navigation. Overlays trap and restore focus.
Drag, tap, mouse, Enter/Space, screen reader, reduced motion, 150 percent text, and non-color cues all
reach the same deterministic result.

#### Screen Inventory

Nine portrait screens are locked: onboarding, home/level path, gameplay, pause, success, failure, settings, accessibility, and legal. IDs and purposes are authoritative in screen-inventory.json.

#### State Inventory

Fresh, selected, dragging, safe preview, blocked preview, settling, hook reveal, target match, paused, success, failure, error, loading, disabled, and interrupted states are explicit and recoverable.

#### Transitions and Back Behavior

Onboarding leads to Home; Home chooses Gameplay; gameplay moves through selection, preview, settle, reveal, and target check. Platform back cancels an uncommitted drag, closes the top overlay, or opens Pause; it never silently loses progress.

#### Overlays, Loading, and Errors

Pause and outcome sheets retain visible context and trap focus. Loading shows noninteractive sculpture silhouettes. Errors state what remains safe and offer Retry or local Home without login or backend controls.

#### Orientation and Safe Areas

Portrait only, 360x800 through 430x932. Safe-area insets move the target and tray inward without cropping beams, hooks, weights, Undo, or Retry.

#### Touch and Reachability

Weights and hooks are at least 64x64 logical pixels; navigation is at least 48x48. Drag and tap-select/tap-destination are equivalent and all gameplay remains within the portrait thumb plan.

#### Accessibility Matrix

Mass uses volume plus dots; hook state uses geometry, icon, outline, label, and speech; motion can step; type reflows to 150 percent; haptics are optional; screen-reader summaries and Previous/Next Effect controls expose causal changes.

#### Realistic Density Rule

FTUE may use four or five weights for instruction. Standard gameplay screens show seven to ten visible counterweights across two to six slender beams, matching the previous generation's rich mobile silhouette while preserving 64x64 interactive hit regions through spacing, invisible hit extensions, and focus navigation. No numeric mass labels, M/H bands, token strip, or calculation panel occupies the screen.

## Visual brief

### Counterweight Choir Visual Brief v0.4

Run: 2026-08-pipeline-flow-test-en-us
Concept: counterweight-choir

#### Decision Status

Selected after owner revision: realistic visual continuity with the previous Counterweight Choir generation. Preserve the bright architectural gallery, tall metal mobile, fine suspension wires, real counterweight materials, and compact white/cobalt UI. Remove only the old mathematical and resonance abstraction. The soft candy-toy v0.3 package is rejected.

#### Visual Pillars

1. Real physical sculpture: credible aluminum, cable, porcelain, stone, steel, acrylic, plaster, and concrete.
2. Dense readable hierarchy: standard levels visibly carry seven to ten counterweights across two to six slender beams.
3. Physical consequence, not calculation: pose ghost, swap path, shutter state, and target arcs explain the result.
4. Architectural clarity: hard daylight, crisp shadows, neutral gallery surfaces, and compact panels frame the mobile.
5. Prior-generation continuity: match its premium realism while deleting numeric mass labels, M/H bands, phrase tokens, and calibration UI.

#### Camera and Topology

Fixed portrait orthographic front elevation at 360x800 logical size. The tall complete mobile occupies the center with shallow modeled depth, credible tension wires, ring hooks, and cast shadows. No pan, zoom, orbit, perspective change, or hidden off-screen hook. FTUE may use four or five weights; standard gameplay uses seven to ten.

#### Palette and Contrast

Warm gallery white #F4F1E8, plaster #E4E1D8, anodized silver #A8ADB3, graphite #292D31, cobalt #1557FF for action, and small lime #B7D62E match accents. Counterweights use believable muted porcelain, stone, steel, and one restrained cobalt selection object. State repeats through outline, geometry, icon, label, and speech.

#### Shape, Material, and Type

Slender straight metal beams, fine cables, ring hooks, compact cylinders, teardrops, discs, and stone spheres replace oversized blobs. Weight class is visible through scale, silhouette, surface, and one/two/three separate embossed dots, never printed numerals. Type is a neutral modern grotesk with narrow uppercase headings, clean body copy, and tabular move/level counts.

#### UI and Motion

Compact warm-white acrylic panels, thin graphite rules, cobalt primary actions, small target-pose card, moves, Undo, Retry, and a staging rail surround the central sculpture. Safe preview shows the exact settled whole-mobile ghost, displaced swap, target changes, and future shutter state. Settle finishes within 500 ms; reduced motion uses stepped before/after states.

#### References and Anti-References

Primary reference is the committed v0.2 Counterweight Choir visual generation: realistic bright gallery, tall hierarchy, slender metal, cable, hard daylight, and white/cobalt panels. Anti-reference within it: numbers printed on weights, torque diagrams, signed angles, M/H/L bands, resonance token strip, phrase progress, calibration ticks, and technical diagnostics. Also reject the soft candy-toy v0.3 package, bubbly landscape footers, rubber blobs, dark navy/cyan factory defaults, papercraft, and magical bloom.

#### Accessibility

Physical size plus embossed dots repeats mass; open/closed hooks use different geometry plus labels; target arcs use outline plus stamps. Support high contrast, reduced motion, 100/125/150 percent type, optional haptics, screen-reader consequence summaries, and tap-select/tap-destination parity. Gameplay targets remain at least 64x64 through invisible hit extensions.

#### Prompt Plan

Use one realistic gameplay master derived from the previous generation, then generate state matrix, onboarding, home, pause, success, failure, settings, accessibility, and legal/error companions. Every standard gameplay frame contains seven to ten physical weights. The deterministic boards supply exact explanatory copy after image generation.

#### Traceability Registry

- SCR-ONBOARDING
- SCR-HOME
- SCR-GAMEPLAY
- SCR-PAUSE
- SCR-SUCCESS
- SCR-FAILURE
- SCR-SETTINGS
- SCR-ACCESSIBILITY
- SCR-LEGAL
- ST-FRESH
- ST-SELECTED
- ST-DRAGGING
- ST-PREVIEW-SAFE
- ST-PREVIEW-BLOCKED
- ST-SETTLING
- ST-HOOK-REVEAL
- ST-TARGET-MATCH
- ST-PAUSED
- ST-SUCCESS
- ST-FAILURE
- ST-ERROR
- ST-LOADING
- ST-DISABLED
- ST-INTERRUPTED
- M-PICK
- M-DRAG
- M-PREVIEW
- M-SWAP
- M-SETTLE
- M-CHECK
- M-UNDO
- M-RETRY
- E-BEAM
- E-PIVOT
- E-HOOK
- E-WEIGHT-1
- E-WEIGHT-2
- E-WEIGHT-3
- E-SHUTTER
- E-ONEWAY
- E-GLASS
- E-TARGET-ARC
- E-BELL
- E-TRAY
- ENV-SCULPTURE-GALLERY
- ENV-GALLERY-ARCHIVE
- ENV-ARCHITECTURAL-BACKDROP
- UI-TARGET-CARD
- UI-MOVE-COUNT
- UI-WEIGHT-TRAY
- UI-HOOK-BADGE
- UI-PRIMARY
- UI-FROST-SHEET
- UI-LEVEL-PATH
- UI-HOW-TO
- UI-SETTING-ROW
- UI-ERROR-SHEET
- UI-LEGAL-LIST
- A-COLOR
- A-MOTION
- A-TEXT
- A-HAPTIC
- A-READER
- A-TAP
- V-GHOST
- V-HOOK-CHANGE
- V-BOUNCE
- V-TARGET-LOCK
- V-SETTLE
- V-SUCCESS

## Art Bible

### Counterweight Choir Art Bible v0.4

Run: 2026-08-pipeline-flow-test-en-us
Concept: counterweight-choir
Status: machine candidate awaiting independent owner review.

#### Gameplay Frames

The authoritative master presents a four-beam gallery mobile with nine visible physical counterweights, compact target pose, six moves, pause, Undo, Retry, open ring hooks, one shuttered hook, selected weight, exact settled ghost, swap path, and staging rail. The state matrix shows selected, safe swap, and blocked states while retaining the same dense realistic hierarchy. No calculation or resonance UI appears.

#### Entities

E-BEAM is slender anodized aluminum; E-PIVOT is an oversized bearing without degree ticks; E-HOOK is a metal ring/open hook; E-WEIGHT-1, E-WEIGHT-2, and E-WEIGHT-3 use believable physical size/material plus separate embossed dots without numerals; E-SHUTTER is a real louvered cover; E-ONEWAY uses asymmetric geometry; E-GLASS has clear edge reflections; E-TARGET-ARC is a thick non-calibrated pose outline; E-BELL rings once only on success; E-TRAY is a compact acrylic/metal staging rail.

#### Environments and Objects

ENV-SCULPTURE-GALLERY is a tall white display bay inside a credible contemporary gallery. ENV-GALLERY-ARCHIVE contains sixty sculpture positions across six rows plus solved thumbnails. ENV-ARCHITECTURAL-BACKDROP supplies high windows, plaster, pale concrete, distant abstract wall art, and directional daylight without distracting from interaction.

#### UI, HUD, and Icons

UI-TARGET-CARD is a compact pose thumbnail, never an answer sequence. UI-MOVE-COUNT remains large and tabular. UI-WEIGHT-TRAY is a low staging rail. UI-HOOK-BADGE uses OPEN, CLOSED, SWAP, or OPENS. UI-PRIMARY is restrained cobalt. UI-FROST-SHEET preserves context. UI-LEVEL-PATH shows six galleries and ten levels each without New Idea. UI-HOW-TO teaches Drag, Swap, Watch What Opens. UI-SETTING-ROW, UI-ERROR-SHEET, and UI-LEGAL-LIST use realistic acrylic panels and large touch targets.

#### Typography

Neutral modern grotesk, narrow uppercase display headings, sentence-case body copy, and tabular move/level numbers. No numeral or letter appears on a weight face. Minimum 17 logical pixels for body, 35 percent localization expansion, and 150 percent accessibility reflow.

#### VFX and Motion

V-GHOST is a translucent exact whole-sculpture preview. V-HOOK-CHANGE outlines the physical shutter/ring that changes. V-BOUNCE returns blocked weights with no move cost. V-TARGET-LOCK stamps matched arcs. V-SETTLE moves affected beams leaf to root within 500 ms. V-SUCCESS is one restrained bell ripple and dust-light glints. No camera shake, casino burst, glowing formulas, or causal step numbers.

#### Accessibility

A-COLOR repeats state with material, dots, geometry, labels, and contrast. A-MOTION replaces rotation and shutter travel with stepped frames. A-TEXT supports 100/125/150 percent. A-HAPTIC is optional. A-READER announces selected weight traits, destination, displaced weight, affected beams, hook changes, targets, and moves. A-TAP duplicates drag.

#### Export Rules

Rebuild UI natively. Preserve full-resolution source renders and exact 360x800 sRGB references. Use baked gallery lighting, layered sculpture pieces, whole-pixel icons, nine-slice acrylic panels, and atlases under 128 MB texture residency. The same hidden resolver powers preview, commit, Undo, solver, replay, and tests.

#### Do and Don't

Do show seven to ten weights in standard gameplay, believable suspension hardware, occupied swaps, exact settled ghosts, future hook state, target mismatch, Undo, and Retry. Do preserve the previous generation's realistic sophistication. Don't show printed weight values, equations, torque, signed angles, degree ticks, M/H/L bands, resonance tokens, phrase rails, diagnostic tables, soft candy blobs, cartoon faces, owner login, backend controls, currency, or excessive empty space.

#### Provenance

The package is hash-bound to the v0.4 GDD, current audit, market analysis, owner-selected realistic 2.5D product direction, and revised UX. The committed v0.2 images were inspected as explicit within-concept references. Artwork was generated with OpenAI gpt-image-2 through the built-in image workflow; structural boards are composed deterministically by repository code.

#### QA

All ten realistic source renders were inspected individually. Selected finals exclude the rejected candy-toy package and the first accessibility variant whose reduced-motion icon resembled a numeral. Exports are center-cropped to exact 360x800. Machine QA checks PNG structure, dimensions, distinctness, inventory coverage, source references, board roles, snapshots, and package hash. Independent owner acceptance remains pending.

#### Traceability Registry

- SCR-ONBOARDING
- SCR-HOME
- SCR-GAMEPLAY
- SCR-PAUSE
- SCR-SUCCESS
- SCR-FAILURE
- SCR-SETTINGS
- SCR-ACCESSIBILITY
- SCR-LEGAL
- ST-FRESH
- ST-SELECTED
- ST-DRAGGING
- ST-PREVIEW-SAFE
- ST-PREVIEW-BLOCKED
- ST-SETTLING
- ST-HOOK-REVEAL
- ST-TARGET-MATCH
- ST-PAUSED
- ST-SUCCESS
- ST-FAILURE
- ST-ERROR
- ST-LOADING
- ST-DISABLED
- ST-INTERRUPTED
- M-PICK
- M-DRAG
- M-PREVIEW
- M-SWAP
- M-SETTLE
- M-CHECK
- M-UNDO
- M-RETRY
- E-BEAM
- E-PIVOT
- E-HOOK
- E-WEIGHT-1
- E-WEIGHT-2
- E-WEIGHT-3
- E-SHUTTER
- E-ONEWAY
- E-GLASS
- E-TARGET-ARC
- E-BELL
- E-TRAY
- ENV-SCULPTURE-GALLERY
- ENV-GALLERY-ARCHIVE
- ENV-ARCHITECTURAL-BACKDROP
- UI-TARGET-CARD
- UI-MOVE-COUNT
- UI-WEIGHT-TRAY
- UI-HOOK-BADGE
- UI-PRIMARY
- UI-FROST-SHEET
- UI-LEVEL-PATH
- UI-HOW-TO
- UI-SETTING-ROW
- UI-ERROR-SHEET
- UI-LEGAL-LIST
- A-COLOR
- A-MOTION
- A-TEXT
- A-HAPTIC
- A-READER
- A-TAP
- V-GHOST
- V-HOOK-CHANGE
- V-BOUNCE
- V-TARGET-LOCK
- V-SETTLE
- V-SUCCESS

## Gallery (12 images)

### implementation-board

![Counterweight Choir implementation board visual reference](https://autechsolutions-game-factory.pages.dev/ideas/counterweight-choir/files/images/art-bible/implementation-board.webp)

Size: 2048x1152

### visual-blueprint

![Counterweight Choir visual blueprint visual reference](https://autechsolutions-game-factory.pages.dev/ideas/counterweight-choir/files/images/art-bible/visual-blueprint.webp)

Size: 2048x1152

### accessibility

![Counterweight Choir accessibility visual reference](https://autechsolutions-game-factory.pages.dev/ideas/counterweight-choir/files/images/art-bible/accessibility.webp)

Size: 360x800

Generation prompt: Counterweight Choir v0.4 realistic image contract

Real material/dot/hook preview and accessibility controls.

Match the previous Counterweight Choir generation: bright contemporary gallery, tall slender aluminum mobile, fine tension wires, real porcelain/stone/metal counterweights, hard architectural daylight, warm-white acrylic panels, graphite type, restrained cobalt actions. Standard gameplay contains seven to ten weights; FTUE may use five. Explain swap, exact settle, target pose, and future hook physically. No printed numeric mass labels, equations, torque, signed angles, degree ticks, M/H/L, resonance tokens, phrase rail, calibration diagnostics, candy colors, soft toy blobs, cartoon faces, owner UI, or currency.

Source refs: SCR-ACCESSIBILITY A-COLOR A-MOTION A-TEXT A-HAPTIC A-READER A-TAP

### failure

![Counterweight Choir failure visual reference](https://autechsolutions-game-factory.pages.dev/ideas/counterweight-choir/files/images/art-bible/failure.webp)

Size: 360x800

Generation prompt: Counterweight Choir v0.4 realistic image contract

Out-of-moves sculpture preserving two visible target mismatches.

Match the previous Counterweight Choir generation: bright contemporary gallery, tall slender aluminum mobile, fine tension wires, real porcelain/stone/metal counterweights, hard architectural daylight, warm-white acrylic panels, graphite type, restrained cobalt actions. Standard gameplay contains seven to ten weights; FTUE may use five. Explain swap, exact settle, target pose, and future hook physically. No printed numeric mass labels, equations, torque, signed angles, degree ticks, M/H/L, resonance tokens, phrase rail, calibration diagnostics, candy colors, soft toy blobs, cartoon faces, owner UI, or currency.

Source refs: SCR-FAILURE ST-FAILURE

### gameplay-active

![Counterweight Choir gameplay active visual reference](https://autechsolutions-game-factory.pages.dev/ideas/counterweight-choir/files/images/art-bible/gameplay-active.webp)

Size: 360x800

Generation prompt: Counterweight Choir v0.4 realistic image contract

Authoritative realistic nine-weight gameplay master.

Match the previous Counterweight Choir generation: bright contemporary gallery, tall slender aluminum mobile, fine tension wires, real porcelain/stone/metal counterweights, hard architectural daylight, warm-white acrylic panels, graphite type, restrained cobalt actions. Standard gameplay contains seven to ten weights; FTUE may use five. Explain swap, exact settle, target pose, and future hook physically. No printed numeric mass labels, equations, torque, signed angles, degree ticks, M/H/L, resonance tokens, phrase rail, calibration diagnostics, candy colors, soft toy blobs, cartoon faces, owner UI, or currency.

Source refs: SCR-GAMEPLAY ST-PREVIEW-SAFE M-PICK M-DRAG M-PREVIEW M-SWAP M-SETTLE M-CHECK M-UNDO M-RETRY E-BEAM E-PIVOT E-HOOK E-WEIGHT-1 E-WEIGHT-2 E-WEIGHT-3 E-SHUTTER E-ONEWAY E-GLASS E-TARGET-ARC E-BELL E-TRAY ENV-SCULPTURE-GALLERY UI-TARGET-CARD UI-MOVE-COUNT UI-WEIGHT-TRAY UI-HOOK-BADGE UI-PRIMARY A-COLOR A-MOTION A-HAPTIC A-READER A-TAP V-GHOST V-HOOK-CHANGE V-BOUNCE V-TARGET-LOCK V-SETTLE V-SUCCESS

### gameplay-state-matrix

![Counterweight Choir gameplay state matrix visual reference](https://autechsolutions-game-factory.pages.dev/ideas/counterweight-choir/files/images/art-bible/gameplay-state-matrix.webp)

Size: 360x800

Generation prompt: Counterweight Choir v0.4 realistic image contract

Realistic selected, safe swap, blocked, loading, disabled, and interruption language.

Match the previous Counterweight Choir generation: bright contemporary gallery, tall slender aluminum mobile, fine tension wires, real porcelain/stone/metal counterweights, hard architectural daylight, warm-white acrylic panels, graphite type, restrained cobalt actions. Standard gameplay contains seven to ten weights; FTUE may use five. Explain swap, exact settle, target pose, and future hook physically. No printed numeric mass labels, equations, torque, signed angles, degree ticks, M/H/L, resonance tokens, phrase rail, calibration diagnostics, candy colors, soft toy blobs, cartoon faces, owner UI, or currency.

Source refs: ST-SELECTED ST-DRAGGING ST-PREVIEW-BLOCKED ST-SETTLING ST-HOOK-REVEAL ST-TARGET-MATCH ST-LOADING ST-DISABLED ST-INTERRUPTED

### home

![Counterweight Choir home visual reference](https://autechsolutions-game-factory.pages.dev/ideas/counterweight-choir/files/images/art-bible/home.webp)

Size: 360x800

Generation prompt: Counterweight Choir v0.4 realistic image contract

Dense gallery archive, sixty-level path, and solved sculptures.

Match the previous Counterweight Choir generation: bright contemporary gallery, tall slender aluminum mobile, fine tension wires, real porcelain/stone/metal counterweights, hard architectural daylight, warm-white acrylic panels, graphite type, restrained cobalt actions. Standard gameplay contains seven to ten weights; FTUE may use five. Explain swap, exact settle, target pose, and future hook physically. No printed numeric mass labels, equations, torque, signed angles, degree ticks, M/H/L, resonance tokens, phrase rail, calibration diagnostics, candy colors, soft toy blobs, cartoon faces, owner UI, or currency.

Source refs: SCR-HOME ENV-GALLERY-ARCHIVE ENV-ARCHITECTURAL-BACKDROP UI-LEVEL-PATH

### legal-error

![Counterweight Choir legal error visual reference](https://autechsolutions-game-factory.pages.dev/ideas/counterweight-choir/files/images/art-bible/legal-error.webp)

Size: 360x800

Generation prompt: Counterweight Choir v0.4 realistic image contract

Realistic legal list and recoverable error sheet.

Match the previous Counterweight Choir generation: bright contemporary gallery, tall slender aluminum mobile, fine tension wires, real porcelain/stone/metal counterweights, hard architectural daylight, warm-white acrylic panels, graphite type, restrained cobalt actions. Standard gameplay contains seven to ten weights; FTUE may use five. Explain swap, exact settle, target pose, and future hook physically. No printed numeric mass labels, equations, torque, signed angles, degree ticks, M/H/L, resonance tokens, phrase rail, calibration diagnostics, candy colors, soft toy blobs, cartoon faces, owner UI, or currency.

Source refs: SCR-LEGAL ST-ERROR UI-ERROR-SHEET UI-LEGAL-LIST

### onboarding

![Counterweight Choir onboarding visual reference](https://autechsolutions-game-factory.pages.dev/ideas/counterweight-choir/files/images/art-bible/onboarding.webp)

Size: 360x800

Generation prompt: Counterweight Choir v0.4 realistic image contract

Five-weight real FTUE showing drag, occupied swap, and future shutter opening.

Match the previous Counterweight Choir generation: bright contemporary gallery, tall slender aluminum mobile, fine tension wires, real porcelain/stone/metal counterweights, hard architectural daylight, warm-white acrylic panels, graphite type, restrained cobalt actions. Standard gameplay contains seven to ten weights; FTUE may use five. Explain swap, exact settle, target pose, and future hook physically. No printed numeric mass labels, equations, torque, signed angles, degree ticks, M/H/L, resonance tokens, phrase rail, calibration diagnostics, candy colors, soft toy blobs, cartoon faces, owner UI, or currency.

Source refs: SCR-ONBOARDING ST-FRESH UI-HOW-TO

### pause

![Counterweight Choir pause visual reference](https://autechsolutions-game-factory.pages.dev/ideas/counterweight-choir/files/images/art-bible/pause.webp)

Size: 360x800

Generation prompt: Counterweight Choir v0.4 realistic image contract

Frosted pause sheet over the frozen dense sculpture.

Match the previous Counterweight Choir generation: bright contemporary gallery, tall slender aluminum mobile, fine tension wires, real porcelain/stone/metal counterweights, hard architectural daylight, warm-white acrylic panels, graphite type, restrained cobalt actions. Standard gameplay contains seven to ten weights; FTUE may use five. Explain swap, exact settle, target pose, and future hook physically. No printed numeric mass labels, equations, torque, signed angles, degree ticks, M/H/L, resonance tokens, phrase rail, calibration diagnostics, candy colors, soft toy blobs, cartoon faces, owner UI, or currency.

Source refs: SCR-PAUSE ST-PAUSED UI-FROST-SHEET

### settings

![Counterweight Choir settings visual reference](https://autechsolutions-game-factory.pages.dev/ideas/counterweight-choir/files/images/art-bible/settings.webp)

Size: 360x800

Generation prompt: Counterweight Choir v0.4 realistic image contract

Realistic acrylic settings panel.

Match the previous Counterweight Choir generation: bright contemporary gallery, tall slender aluminum mobile, fine tension wires, real porcelain/stone/metal counterweights, hard architectural daylight, warm-white acrylic panels, graphite type, restrained cobalt actions. Standard gameplay contains seven to ten weights; FTUE may use five. Explain swap, exact settle, target pose, and future hook physically. No printed numeric mass labels, equations, torque, signed angles, degree ticks, M/H/L, resonance tokens, phrase rail, calibration diagnostics, candy colors, soft toy blobs, cartoon faces, owner UI, or currency.

Source refs: SCR-SETTINGS UI-SETTING-ROW A-TEXT

### success

![Counterweight Choir success visual reference](https://autechsolutions-game-factory.pages.dev/ideas/counterweight-choir/files/images/art-bible/success.webp)

Size: 360x800

Generation prompt: Counterweight Choir v0.4 realistic image contract

Realistic restored sculpture with restrained result panel.

Match the previous Counterweight Choir generation: bright contemporary gallery, tall slender aluminum mobile, fine tension wires, real porcelain/stone/metal counterweights, hard architectural daylight, warm-white acrylic panels, graphite type, restrained cobalt actions. Standard gameplay contains seven to ten weights; FTUE may use five. Explain swap, exact settle, target pose, and future hook physically. No printed numeric mass labels, equations, torque, signed angles, degree ticks, M/H/L, resonance tokens, phrase rail, calibration diagnostics, candy colors, soft toy blobs, cartoon faces, owner UI, or currency.

Source refs: SCR-SUCCESS ST-SUCCESS

## Validation results

### Gate summary

- **Schema:** Schema v3
- **Package hash:** 2e2eb1c414c818c59aee88fb71dd127909bcfcf6f3fccbeff59f09b64d91087a
- **Machine structure:** Passed
- **Visual boards:** 2 / 2 attached
- **GDD audit:** BUILD AS DESIGNED
- **GDD audit confidence:** 86 / 100
- **Apple 4.3 risk:** medium
- **Market gate:** INVEST
- **Product direction:** 2.5d
- **Manual Art Bible review:** accepted
- **Prototype gate:** Approved and locked

### Design coverage

- **Orientations:** portrait
- **Logical layouts:** portrait: 360x800 (9:20)
- **Output dimensions:** 360x800
- **Screens:** SCR-ONBOARDING, SCR-HOME, SCR-GAMEPLAY, SCR-PAUSE, SCR-SUCCESS, SCR-FAILURE, SCR-SETTINGS, SCR-ACCESSIBILITY, SCR-LEGAL
- **Important states:** ST-FRESH, ST-SELECTED, ST-DRAGGING, ST-PREVIEW-SAFE, ST-PREVIEW-BLOCKED, ST-SETTLING, ST-HOOK-REVEAL, ST-TARGET-MATCH, ST-PAUSED, ST-SUCCESS, ST-FAILURE, ST-ERROR, ST-LOADING, ST-DISABLED, ST-INTERRUPTED
- **Mechanics:** M-PICK, M-DRAG, M-PREVIEW, M-SWAP, M-SETTLE, M-CHECK, M-UNDO, M-RETRY
- **Accessibility:** A-COLOR, A-MOTION, A-TEXT, A-HAPTIC, A-READER, A-TAP

### Machine validation: passed (2026-08-21T00:30:09.086Z, validator v3)

No individual checks recorded.

### Independent visual QA: pending

No individual checks recorded.

## History

### Status history

- 2026-08-20T21:56:06.672Z: prototype-live (catalog sync)
- 2026-08-20T21:48:27.198Z: prototyped (catalog sync)
- 2026-08-20T18:17:00.317Z: candidate-design (catalog sync)

### Immutable revisions (7)

#### Revision 7

- **Hash:** 1e6fbd641b466b818efa8981de42a55f6850f6afc6381ab1cdd229c0e27a147d
- **Created:** 2026-09-05T10:30:34.826Z
- **Release:** 2.5.3
- **Build:** a56a182 2026-09-05 12:33Z
- **Change summary:** Replaced the superseded one-sandbox mathematics prototype with a sixty-level physical counterweight campaign that uses occupied swaps, exact whole-mobile previews, visible access changes, Undo, Retry, and the accepted realistic gallery direction.
- **Title:** Counterweight Choir
- **Pitch:** Swap chunky weights across a hanging sculpture in the right physical order, opening the hooks you need until every beam clicks into its pictured target pose.
- **State:** prototype-live
- **Stage:** 10
- **Score:** 69
- **GDD excerpt:** This document is the owner-directed material revision of Counterweight Choir. It replaces the player-facing resonance-token and torque-notation design in v0.2. The instruction is preserved in 00-brief/revision-2026-08-21-hypercasual.md and the realistic-continuity correction in 00-brief/revision-2026-08-21-realistic-continuity.md. Rules and inventories below are design facts. Fun, demand, retention, revenue, and s...
- **Art excerpt:** Run: 2026-08-pipeline-flow-test-en-us Concept: counterweight-choir Status: machine candidate awaiting independent owner review.

Source files:

- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/00-brief/creative-brief.md (source-brief, sha256 41832b9bb6b3a36f9503500221c1d48d5971cc2d85263e91d25eaa17345417f2)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/00-brief/request.json (frozen-request, sha256 34b6206631cbcda6dd495653652ea3dd8fb1183269c8b453e6dbf3ae5892e31d)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/01-idea/idea.json (idea-contract, sha256 30e6c10ac38d0a88e974a7295ae90eb0fb366f240a438d6e60beb6dcdb336d87)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/03-gdd-audit/audit.json (gdd-audit, sha256 0d8d112ead3cad15d5db95e0ec65781e20920a06d2e284e4d9d2b49401a924c7)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/04-market-analysis/advisory-score.json (advisory-score, sha256 a571501e393933aef865ae48f63196dcb95371249f294806f7ed963a73be62bb)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/04-market-analysis/evidence-index.json (evidence-index, sha256 f11f0d3584a2e2274a724b6ada05908d96bceace086bfeccf1e40fd25c47d2f6)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/04-market-analysis/market-analysis.json (market-analysis, sha256 73c6365d8bbd18f0ac286bf7f87b5e8d106b31244a343e220e40d98e8ced4014)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/05-product-direction/product-direction.json (product-direction, sha256 4c93983134728202cf088806344a6e056aab1c7dfb9f923164c532a373639c40)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/06-ux/screen-inventory.json (screen-inventory, sha256 a0d86bcb95da02f15e57c6890f75dee6eeec54f26e10de1d0695bb582250c573)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/08-art-audit/art-audit.json (art-audit, sha256 25d58ec8985ab480bb187b7f1f807b1c147f960dc08358a0ab6ca3249d1fc799)
- pipeline/counterweight-choir/design/art-bible.md (art-bible, sha256 f395f2778526f0f848c2f674d81a1ccdee55b08426f07c847d0eb1dabd1cef8c)
- pipeline/counterweight-choir/design/art-bible/accessibility.png (visual-output, sha256 b96dbaa4caa08503fdacb89641259c2f1e8fe3c76574f01ea28983fdbd876b42)
- pipeline/counterweight-choir/design/art-bible/failure.png (visual-output, sha256 91f2ad8a909cf41ccbe40a9e47d08d96adcfbf98b1f8a784031e17b9b22f2c1c)
- pipeline/counterweight-choir/design/art-bible/gameplay-active.png (reference, sha256 e262c4b8ee2208755fff7fba77c90cc183f8a4fc8625458b3d6334572f8871ae)
- pipeline/counterweight-choir/design/art-bible/gameplay-state-matrix.png (visual-output, sha256 25c48bd6beb45232c5a6e6f22766b281f85152f5d8490564a3027d509e721313)
- pipeline/counterweight-choir/design/art-bible/home.png (visual-output, sha256 085f518f7cd9ce95c0636a9d6ca7ba1b74fc9a94b2049a085c4160b42c745370)
- pipeline/counterweight-choir/design/art-bible/implementation-board.png (visual-board, sha256 a3a261c8541660f0222bc54ccf351d8ce454a4de1d270e2be4c641e269d92368)
- pipeline/counterweight-choir/design/art-bible/legal-error.png (visual-output, sha256 3277d39766852ad0b6534470adcb17ae6751d259029a42f006c2b1a90fe5607c)
- pipeline/counterweight-choir/design/art-bible/onboarding.png (visual-output, sha256 0bc58181e041af2daefc97d76efda07add8a13a162d270f5e7b19d116dccfbc0)
- pipeline/counterweight-choir/design/art-bible/pause.png (visual-output, sha256 e2d134b88f1eaeeee78591627ee63e2614639805d9d8ef819926d38cf50e0018)
- pipeline/counterweight-choir/design/art-bible/settings.png (visual-output, sha256 05404cd6aba2674493fc02c35310baefcc9864a5d41a3dc2a589010417179550)
- pipeline/counterweight-choir/design/art-bible/success.png (visual-output, sha256 a9da8148b3383c5c925298d82085b2810cfc3f0f55fe4ef18d5ac64bf7ca0795)
- pipeline/counterweight-choir/design/art-bible/visual-blueprint.png (visual-board, sha256 212f504b3e741c074b213a4e37a7e82d757542ef155589b44994673084c4f8a6)
- pipeline/counterweight-choir/design/asset-manifest.json (asset-manifest, sha256 26a65a6e6e127341ddcc9ff0472e36dba49151940239b0cd1814f392a0f61000)
- pipeline/counterweight-choir/design/board-spec.json (board-spec, sha256 bf2be0b59bf7547e5321e8d73ca9503f4b71f80bd3f64d3cc8053cefca98168c)
- pipeline/counterweight-choir/design/gdd.md (gdd, sha256 9fae203d233394552ce875648d404921879b5879d3e475a65538fca33f239f59)
- pipeline/counterweight-choir/design/image-prompts/accessibility.txt (prompt, sha256 fc78cd2316379d68fe56dfec9c750344fe038c8df782baa711a60dde4d0db448)
- pipeline/counterweight-choir/design/image-prompts/failure.txt (prompt, sha256 ecd1935499f0ab8af3da9a746a626fc416de270124e460c0c4ce570bc37c0dd8)
- pipeline/counterweight-choir/design/image-prompts/gameplay-active.txt (prompt, sha256 70b714ef4085caff2c1c99d336bdcddb75c8d683a9725edf833af6bf03c072ec)
- pipeline/counterweight-choir/design/image-prompts/gameplay-state-matrix.txt (prompt, sha256 1a9663019a7813305cd393dfeb0fd8ddfb4c28aae6a488c0aaeb2734fca6db53)
- pipeline/counterweight-choir/design/image-prompts/home.txt (prompt, sha256 c5b71e3fc3ff02c5478d0c004f1d2da32c1e591e0fd245c7dd9b69376a60059f)
- pipeline/counterweight-choir/design/image-prompts/legal-error.txt (prompt, sha256 d9c683c5c751151332db54cfa18dbcca1de37aea027846bae163653e74e0aeeb)
- pipeline/counterweight-choir/design/image-prompts/onboarding.txt (prompt, sha256 e4546b8601e02aa0a16f13e3a5d1579da3e79d4ac2faa4c2052b1f02c10dffe2)
- pipeline/counterweight-choir/design/image-prompts/pause.txt (prompt, sha256 db0c2e22481429f2f34b4a532294c9e4ad2ed7b80e81e7d3c60c17693699cc8b)
- pipeline/counterweight-choir/design/image-prompts/settings.txt (prompt, sha256 666ea04fa49674358cc1157b6c885aa7e8b34562bcc4c73ef600b4e88b3cc79b)
- pipeline/counterweight-choir/design/image-prompts/success.txt (prompt, sha256 2851845a9dd67b2b7b28efb1274bdf67e916a096d31e194f191328c291035ec1)
- pipeline/counterweight-choir/design/machine-validation.json (machine-validation, sha256 b28897310548578bdee78272cfb4f8ebf9fa180ef031365979a04100286e88e0)
- pipeline/counterweight-choir/design/ux-flow.md (ux-flow, sha256 0dea84c3a9e956b8ac97cee2a4d60c1a071884e2702613285e9299a210f6d02f)
- pipeline/counterweight-choir/design/visual-brief.md (visual-brief, sha256 22b8fbcca594f7a870de296bde2d1807400be814edeb2efb71463c38027216f9)
- pipeline/counterweight-choir/design/visual-qa.json (visual-qa, sha256 79036262102084cb0e59b0d3ed717cbde5ec86c4b365ccf442deb20771c4884d)

#### Revision 6

- **Hash:** 2813372e60e14306116f8862e7bb4d2fe13a1f9e254906abce03540ddc9eabd6
- **Created:** 2026-08-21T01:45:12.179Z
- **Release:** 2.2.3
- **Build:** 77bafbc 2026-08-21 01:49Z
- **Change summary:** Replaced the superseded one-sandbox mathematics prototype with a sixty-level physical counterweight campaign that uses occupied swaps, exact whole-mobile previews, visible access changes, Undo, Retry, and the accepted realistic gallery direction.
- **Title:** Counterweight Choir
- **Pitch:** Swap chunky weights across a hanging sculpture in the right physical order, opening the hooks you need until every beam clicks into its pictured target pose.
- **State:** prototype-live
- **Stage:** 10
- **Score:** 69
- **GDD excerpt:** This document is the owner-directed material revision of Counterweight Choir. It replaces the player-facing resonance-token and torque-notation design in v0.2. The instruction is preserved in 00-brief/revision-2026-08-21-hypercasual.md and the realistic-continuity correction in 00-brief/revision-2026-08-21-realistic-continuity.md. Rules and inventories below are design facts. Fun, demand, retention, revenue, and s...
- **Art excerpt:** Run: 2026-08-pipeline-flow-test-en-us Concept: counterweight-choir Status: machine candidate awaiting independent owner review.

Source files:

- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/00-brief/creative-brief.md (source-brief, sha256 41832b9bb6b3a36f9503500221c1d48d5971cc2d85263e91d25eaa17345417f2)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/00-brief/request.json (frozen-request, sha256 34b6206631cbcda6dd495653652ea3dd8fb1183269c8b453e6dbf3ae5892e31d)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/01-idea/idea.json (idea-contract, sha256 398aa938fcc9438b228fdcbe070a09383299b5a665de381e34810c7d1fbcecb7)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/03-gdd-audit/audit.json (gdd-audit, sha256 0d8d112ead3cad15d5db95e0ec65781e20920a06d2e284e4d9d2b49401a924c7)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/04-market-analysis/advisory-score.json (advisory-score, sha256 a571501e393933aef865ae48f63196dcb95371249f294806f7ed963a73be62bb)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/04-market-analysis/evidence-index.json (evidence-index, sha256 b136a14238e322207a559f7ca0c1784593b269a556a4f72b1c10dc0422233de0)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/04-market-analysis/market-analysis.json (market-analysis, sha256 73c6365d8bbd18f0ac286bf7f87b5e8d106b31244a343e220e40d98e8ced4014)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/05-product-direction/product-direction.json (product-direction, sha256 4c93983134728202cf088806344a6e056aab1c7dfb9f923164c532a373639c40)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/06-ux/screen-inventory.json (screen-inventory, sha256 a0d86bcb95da02f15e57c6890f75dee6eeec54f26e10de1d0695bb582250c573)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/08-art-audit/art-audit.json (art-audit, sha256 25d58ec8985ab480bb187b7f1f807b1c147f960dc08358a0ab6ca3249d1fc799)
- pipeline/counterweight-choir/design/art-bible.md (art-bible, sha256 f395f2778526f0f848c2f674d81a1ccdee55b08426f07c847d0eb1dabd1cef8c)
- pipeline/counterweight-choir/design/art-bible/accessibility.png (visual-output, sha256 b96dbaa4caa08503fdacb89641259c2f1e8fe3c76574f01ea28983fdbd876b42)
- pipeline/counterweight-choir/design/art-bible/failure.png (visual-output, sha256 91f2ad8a909cf41ccbe40a9e47d08d96adcfbf98b1f8a784031e17b9b22f2c1c)
- pipeline/counterweight-choir/design/art-bible/gameplay-active.png (reference, sha256 e262c4b8ee2208755fff7fba77c90cc183f8a4fc8625458b3d6334572f8871ae)
- pipeline/counterweight-choir/design/art-bible/gameplay-state-matrix.png (visual-output, sha256 25c48bd6beb45232c5a6e6f22766b281f85152f5d8490564a3027d509e721313)
- pipeline/counterweight-choir/design/art-bible/home.png (visual-output, sha256 085f518f7cd9ce95c0636a9d6ca7ba1b74fc9a94b2049a085c4160b42c745370)
- pipeline/counterweight-choir/design/art-bible/implementation-board.png (visual-board, sha256 a3a261c8541660f0222bc54ccf351d8ce454a4de1d270e2be4c641e269d92368)
- pipeline/counterweight-choir/design/art-bible/legal-error.png (visual-output, sha256 3277d39766852ad0b6534470adcb17ae6751d259029a42f006c2b1a90fe5607c)
- pipeline/counterweight-choir/design/art-bible/onboarding.png (visual-output, sha256 0bc58181e041af2daefc97d76efda07add8a13a162d270f5e7b19d116dccfbc0)
- pipeline/counterweight-choir/design/art-bible/pause.png (visual-output, sha256 e2d134b88f1eaeeee78591627ee63e2614639805d9d8ef819926d38cf50e0018)
- pipeline/counterweight-choir/design/art-bible/settings.png (visual-output, sha256 05404cd6aba2674493fc02c35310baefcc9864a5d41a3dc2a589010417179550)
- pipeline/counterweight-choir/design/art-bible/success.png (visual-output, sha256 a9da8148b3383c5c925298d82085b2810cfc3f0f55fe4ef18d5ac64bf7ca0795)
- pipeline/counterweight-choir/design/art-bible/visual-blueprint.png (visual-board, sha256 212f504b3e741c074b213a4e37a7e82d757542ef155589b44994673084c4f8a6)
- pipeline/counterweight-choir/design/asset-manifest.json (asset-manifest, sha256 26a65a6e6e127341ddcc9ff0472e36dba49151940239b0cd1814f392a0f61000)
- pipeline/counterweight-choir/design/board-spec.json (board-spec, sha256 bf2be0b59bf7547e5321e8d73ca9503f4b71f80bd3f64d3cc8053cefca98168c)
- pipeline/counterweight-choir/design/gdd.md (gdd, sha256 9fae203d233394552ce875648d404921879b5879d3e475a65538fca33f239f59)
- pipeline/counterweight-choir/design/image-prompts/accessibility.txt (prompt, sha256 fc78cd2316379d68fe56dfec9c750344fe038c8df782baa711a60dde4d0db448)
- pipeline/counterweight-choir/design/image-prompts/failure.txt (prompt, sha256 ecd1935499f0ab8af3da9a746a626fc416de270124e460c0c4ce570bc37c0dd8)
- pipeline/counterweight-choir/design/image-prompts/gameplay-active.txt (prompt, sha256 70b714ef4085caff2c1c99d336bdcddb75c8d683a9725edf833af6bf03c072ec)
- pipeline/counterweight-choir/design/image-prompts/gameplay-state-matrix.txt (prompt, sha256 1a9663019a7813305cd393dfeb0fd8ddfb4c28aae6a488c0aaeb2734fca6db53)
- pipeline/counterweight-choir/design/image-prompts/home.txt (prompt, sha256 c5b71e3fc3ff02c5478d0c004f1d2da32c1e591e0fd245c7dd9b69376a60059f)
- pipeline/counterweight-choir/design/image-prompts/legal-error.txt (prompt, sha256 d9c683c5c751151332db54cfa18dbcca1de37aea027846bae163653e74e0aeeb)
- pipeline/counterweight-choir/design/image-prompts/onboarding.txt (prompt, sha256 e4546b8601e02aa0a16f13e3a5d1579da3e79d4ac2faa4c2052b1f02c10dffe2)
- pipeline/counterweight-choir/design/image-prompts/pause.txt (prompt, sha256 db0c2e22481429f2f34b4a532294c9e4ad2ed7b80e81e7d3c60c17693699cc8b)
- pipeline/counterweight-choir/design/image-prompts/settings.txt (prompt, sha256 666ea04fa49674358cc1157b6c885aa7e8b34562bcc4c73ef600b4e88b3cc79b)
- pipeline/counterweight-choir/design/image-prompts/success.txt (prompt, sha256 2851845a9dd67b2b7b28efb1274bdf67e916a096d31e194f191328c291035ec1)
- pipeline/counterweight-choir/design/machine-validation.json (machine-validation, sha256 b28897310548578bdee78272cfb4f8ebf9fa180ef031365979a04100286e88e0)
- pipeline/counterweight-choir/design/ux-flow.md (ux-flow, sha256 0dea84c3a9e956b8ac97cee2a4d60c1a071884e2702613285e9299a210f6d02f)
- pipeline/counterweight-choir/design/visual-brief.md (visual-brief, sha256 22b8fbcca594f7a870de296bde2d1807400be814edeb2efb71463c38027216f9)
- pipeline/counterweight-choir/design/visual-qa.json (visual-qa, sha256 79036262102084cb0e59b0d3ed717cbde5ec86c4b365ccf442deb20771c4884d)

#### Revision 5

- **Hash:** 5e3fe53b7ab808bb1b71d15fd101c9e531b98f7585db8be5200fc56da0494df8
- **Created:** 2026-08-21T01:11:45.037Z
- **Release:** 2.2.0
- **Build:** b610acd 2026-08-21 01:25Z
- **Change summary:** Replaced the superseded one-sandbox mathematics prototype with a sixty-level physical counterweight campaign that uses occupied swaps, exact whole-mobile previews, visible access changes, Undo, Retry, and the accepted realistic gallery direction.
- **Title:** Counterweight Choir
- **Pitch:** Swap chunky weights across a hanging sculpture in the right physical order, opening the hooks you need until every beam clicks into its pictured target pose.
- **State:** prototyped
- **Stage:** 10
- **Score:** 69
- **GDD excerpt:** This document is the owner-directed material revision of Counterweight Choir. It replaces the player-facing resonance-token and torque-notation design in v0.2. The instruction is preserved in 00-brief/revision-2026-08-21-hypercasual.md and the realistic-continuity correction in 00-brief/revision-2026-08-21-realistic-continuity.md. Rules and inventories below are design facts. Fun, demand, retention, revenue, and s...
- **Art excerpt:** Run: 2026-08-pipeline-flow-test-en-us Concept: counterweight-choir Status: machine candidate awaiting independent owner review.

Source files:

- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/00-brief/creative-brief.md (source-brief, sha256 41832b9bb6b3a36f9503500221c1d48d5971cc2d85263e91d25eaa17345417f2)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/00-brief/request.json (frozen-request, sha256 34b6206631cbcda6dd495653652ea3dd8fb1183269c8b453e6dbf3ae5892e31d)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/01-idea/idea.json (idea-contract, sha256 398aa938fcc9438b228fdcbe070a09383299b5a665de381e34810c7d1fbcecb7)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/03-gdd-audit/audit.json (gdd-audit, sha256 0d8d112ead3cad15d5db95e0ec65781e20920a06d2e284e4d9d2b49401a924c7)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/04-market-analysis/advisory-score.json (advisory-score, sha256 a571501e393933aef865ae48f63196dcb95371249f294806f7ed963a73be62bb)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/04-market-analysis/evidence-index.json (evidence-index, sha256 b136a14238e322207a559f7ca0c1784593b269a556a4f72b1c10dc0422233de0)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/04-market-analysis/market-analysis.json (market-analysis, sha256 73c6365d8bbd18f0ac286bf7f87b5e8d106b31244a343e220e40d98e8ced4014)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/05-product-direction/product-direction.json (product-direction, sha256 4c93983134728202cf088806344a6e056aab1c7dfb9f923164c532a373639c40)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/06-ux/screen-inventory.json (screen-inventory, sha256 a0d86bcb95da02f15e57c6890f75dee6eeec54f26e10de1d0695bb582250c573)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/08-art-audit/art-audit.json (art-audit, sha256 25d58ec8985ab480bb187b7f1f807b1c147f960dc08358a0ab6ca3249d1fc799)
- pipeline/counterweight-choir/design/art-bible.md (art-bible, sha256 f395f2778526f0f848c2f674d81a1ccdee55b08426f07c847d0eb1dabd1cef8c)
- pipeline/counterweight-choir/design/art-bible/accessibility.png (visual-output, sha256 b96dbaa4caa08503fdacb89641259c2f1e8fe3c76574f01ea28983fdbd876b42)
- pipeline/counterweight-choir/design/art-bible/failure.png (visual-output, sha256 91f2ad8a909cf41ccbe40a9e47d08d96adcfbf98b1f8a784031e17b9b22f2c1c)
- pipeline/counterweight-choir/design/art-bible/gameplay-active.png (reference, sha256 e262c4b8ee2208755fff7fba77c90cc183f8a4fc8625458b3d6334572f8871ae)
- pipeline/counterweight-choir/design/art-bible/gameplay-state-matrix.png (visual-output, sha256 25c48bd6beb45232c5a6e6f22766b281f85152f5d8490564a3027d509e721313)
- pipeline/counterweight-choir/design/art-bible/home.png (visual-output, sha256 085f518f7cd9ce95c0636a9d6ca7ba1b74fc9a94b2049a085c4160b42c745370)
- pipeline/counterweight-choir/design/art-bible/implementation-board.png (visual-board, sha256 a3a261c8541660f0222bc54ccf351d8ce454a4de1d270e2be4c641e269d92368)
- pipeline/counterweight-choir/design/art-bible/legal-error.png (visual-output, sha256 3277d39766852ad0b6534470adcb17ae6751d259029a42f006c2b1a90fe5607c)
- pipeline/counterweight-choir/design/art-bible/onboarding.png (visual-output, sha256 0bc58181e041af2daefc97d76efda07add8a13a162d270f5e7b19d116dccfbc0)
- pipeline/counterweight-choir/design/art-bible/pause.png (visual-output, sha256 e2d134b88f1eaeeee78591627ee63e2614639805d9d8ef819926d38cf50e0018)
- pipeline/counterweight-choir/design/art-bible/settings.png (visual-output, sha256 05404cd6aba2674493fc02c35310baefcc9864a5d41a3dc2a589010417179550)
- pipeline/counterweight-choir/design/art-bible/success.png (visual-output, sha256 a9da8148b3383c5c925298d82085b2810cfc3f0f55fe4ef18d5ac64bf7ca0795)
- pipeline/counterweight-choir/design/art-bible/visual-blueprint.png (visual-board, sha256 212f504b3e741c074b213a4e37a7e82d757542ef155589b44994673084c4f8a6)
- pipeline/counterweight-choir/design/asset-manifest.json (asset-manifest, sha256 26a65a6e6e127341ddcc9ff0472e36dba49151940239b0cd1814f392a0f61000)
- pipeline/counterweight-choir/design/board-spec.json (board-spec, sha256 bf2be0b59bf7547e5321e8d73ca9503f4b71f80bd3f64d3cc8053cefca98168c)
- pipeline/counterweight-choir/design/gdd.md (gdd, sha256 9fae203d233394552ce875648d404921879b5879d3e475a65538fca33f239f59)
- pipeline/counterweight-choir/design/image-prompts/accessibility.txt (prompt, sha256 fc78cd2316379d68fe56dfec9c750344fe038c8df782baa711a60dde4d0db448)
- pipeline/counterweight-choir/design/image-prompts/failure.txt (prompt, sha256 ecd1935499f0ab8af3da9a746a626fc416de270124e460c0c4ce570bc37c0dd8)
- pipeline/counterweight-choir/design/image-prompts/gameplay-active.txt (prompt, sha256 70b714ef4085caff2c1c99d336bdcddb75c8d683a9725edf833af6bf03c072ec)
- pipeline/counterweight-choir/design/image-prompts/gameplay-state-matrix.txt (prompt, sha256 1a9663019a7813305cd393dfeb0fd8ddfb4c28aae6a488c0aaeb2734fca6db53)
- pipeline/counterweight-choir/design/image-prompts/home.txt (prompt, sha256 c5b71e3fc3ff02c5478d0c004f1d2da32c1e591e0fd245c7dd9b69376a60059f)
- pipeline/counterweight-choir/design/image-prompts/legal-error.txt (prompt, sha256 d9c683c5c751151332db54cfa18dbcca1de37aea027846bae163653e74e0aeeb)
- pipeline/counterweight-choir/design/image-prompts/onboarding.txt (prompt, sha256 e4546b8601e02aa0a16f13e3a5d1579da3e79d4ac2faa4c2052b1f02c10dffe2)
- pipeline/counterweight-choir/design/image-prompts/pause.txt (prompt, sha256 db0c2e22481429f2f34b4a532294c9e4ad2ed7b80e81e7d3c60c17693699cc8b)
- pipeline/counterweight-choir/design/image-prompts/settings.txt (prompt, sha256 666ea04fa49674358cc1157b6c885aa7e8b34562bcc4c73ef600b4e88b3cc79b)
- pipeline/counterweight-choir/design/image-prompts/success.txt (prompt, sha256 2851845a9dd67b2b7b28efb1274bdf67e916a096d31e194f191328c291035ec1)
- pipeline/counterweight-choir/design/machine-validation.json (machine-validation, sha256 b28897310548578bdee78272cfb4f8ebf9fa180ef031365979a04100286e88e0)
- pipeline/counterweight-choir/design/ux-flow.md (ux-flow, sha256 0dea84c3a9e956b8ac97cee2a4d60c1a071884e2702613285e9299a210f6d02f)
- pipeline/counterweight-choir/design/visual-brief.md (visual-brief, sha256 22b8fbcca594f7a870de296bde2d1807400be814edeb2efb71463c38027216f9)
- pipeline/counterweight-choir/design/visual-qa.json (visual-qa, sha256 79036262102084cb0e59b0d3ed717cbde5ec86c4b365ccf442deb20771c4884d)

#### Revision 4

- **Hash:** 1e7fdccd739f5a3f6a173f080e815af67352843307d10a4d110634af25ce99f5
- **Created:** 2026-08-20T21:56:06.672Z
- **Release:** 2.1.1
- **Build:** 8a17bab 2026-08-20 21:58Z
- **Change summary:** Built one deterministic Counterweight Choir mechanics sandbox with exact bottom-up preview, one-weight relocation, ordered token history, safe phrase break without rollback, fatal previews, fresh FTUE, and touch/mouse/keyboard controls.
- **Title:** Counterweight Choir
- **Pitch:** Move one counterweight across a hanging hierarchy of balance beams, then watch torque propagate upward until every bell settles into the target chord.
- **State:** prototype-live
- **Stage:** 10
- **Score:** 68
- **GDD excerpt:** This document is the authored design contract for counterweight-choir. Mathematical rules and inventories are design facts. Audience response, fun, retention, willingness to pay, store demand, and Apple approval remain hypotheses until separately observed. Later research may reject or return this exact design for revision but may not silently change its dominant loop.
- **Art excerpt:** Run 2026-08-pipeline-flow-test-en-us; concept counterweight-choir. This is an implementation contract for the bound product, not a moodboard.

Source files:

- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/00-brief/creative-brief.md (source-brief, sha256 41832b9bb6b3a36f9503500221c1d48d5971cc2d85263e91d25eaa17345417f2)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/00-brief/request.json (frozen-request, sha256 34b6206631cbcda6dd495653652ea3dd8fb1183269c8b453e6dbf3ae5892e31d)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/01-idea/idea.json (idea-contract, sha256 8b0ddc6aa2bd62c5088541d84b88b39181802ea5b67e6d73f352eddbbe60f48d)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/03-gdd-audit/audit.json (gdd-audit, sha256 cca5f908b5faac5436e874d487771485eeeb0faa869d58dae926fc738f023023)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/04-market-analysis/advisory-score.json (advisory-score, sha256 c745c14715201680e6088f1011cfc92d25e16c08d0572f6f47103c32dd1cf9fa)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/04-market-analysis/evidence-index.json (evidence-index, sha256 ded89ce344db1e78625581ee8905fb921630d83d7b34d7cb79f42002b2808476)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/04-market-analysis/market-analysis.json (market-analysis, sha256 4d25dc82f27b0fca738c597b8edf1299ee4fc4a09b13ac99ea0e92ee2ad48f9c)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/05-product-direction/product-direction.json (product-direction, sha256 c88c8d46a4cf119f42a9f0349893edd4cfebbba96cf7c4efeb111c567a1ea8a1)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/06-ux/screen-inventory.json (screen-inventory, sha256 9455e916c70bc4d1f6a2d0f30bb6ad9a059a57ad1b7c121eb8269bdce051ae73)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/08-art-audit/art-audit.json (art-audit, sha256 830fac21bc2a817a633d9d164abfbc3f9fb2ad39395178cdc5b68dcf5d2fc951)
- pipeline/counterweight-choir/design/art-bible.md (art-bible, sha256 749c2e3e38dc8cd4e993560edab46423acb35c2ee78c7388f2e734385f5e270b)
- pipeline/counterweight-choir/design/art-bible/accessibility.png (visual-output, sha256 be9d3c81ecfe3579d4d24634df5e3ba0a8bd1f29416749813130f814f3cadcf9)
- pipeline/counterweight-choir/design/art-bible/failure.png (visual-output, sha256 b67a2139129edb7ba3380f56c4623cdabcb69ca2688545ad4174ba3540d59576)
- pipeline/counterweight-choir/design/art-bible/gameplay-active.png (reference, sha256 7bf3903f06ca362b8d7c26d9238811185e523f59b0aa5b2986d42de7275d6083)
- pipeline/counterweight-choir/design/art-bible/gameplay-state-matrix.png (visual-output, sha256 dd92026c083177c94ed488ce012fd0700e91413177ae9b9aa3249b217d5f051a)
- pipeline/counterweight-choir/design/art-bible/home.png (visual-output, sha256 5919cebb7aeec326d82f8cb707eb120b2376b180474ba801f57ffc264020480e)
- pipeline/counterweight-choir/design/art-bible/implementation-board.png (visual-board, sha256 c034c5080de8c000ea25d85783f9279292974e30bea74751a40f6b66fcfd0e7d)
- pipeline/counterweight-choir/design/art-bible/legal-error.png (visual-output, sha256 cafb440df356a85e8b135dbfc5982b79685dd16d7fd3302b105e6f76baaeb00c)
- pipeline/counterweight-choir/design/art-bible/onboarding.png (visual-output, sha256 dab6a7eb87631d4fa4018ae86a4fa3ebaae0b971547f89720bd0a9431694ac9b)
- pipeline/counterweight-choir/design/art-bible/pause.png (visual-output, sha256 b9d6bc1cf026493ebf49e201bf181c3d1af86d2bd816816704ec8e3319139a2e)
- pipeline/counterweight-choir/design/art-bible/settings.png (visual-output, sha256 2ac60530eeb381af6a8801e969e0f2d7bb573a68292b68702d6014e88ad3cbab)
- pipeline/counterweight-choir/design/art-bible/success.png (visual-output, sha256 9f6240e0fca905d0edb742fcde4438ee543e0ff8a6604b5b73fdf9c2c3fca7c1)
- pipeline/counterweight-choir/design/art-bible/visual-blueprint.png (visual-board, sha256 efa779db0561a86573c65743ca444a89392e9985b7c3e36d2197b53b499d3d8d)
- pipeline/counterweight-choir/design/asset-manifest.json (asset-manifest, sha256 7583adeb218bc72b3a485ced4de68c1780eb3c6d1cbc59e476e1ad3200b87421)
- pipeline/counterweight-choir/design/board-spec.json (board-spec, sha256 f879d88728a393b398e9e246706ffc9163e52fceb851093ccbd87d7cda1a5f10)
- pipeline/counterweight-choir/design/gdd.md (gdd, sha256 4e59c490a432ab15ba2ed65e2886fceb7e8780f8c39d9669ddead20a5d8db2d5)
- pipeline/counterweight-choir/design/image-prompts/accessibility.txt (prompt, sha256 b0f36e9eb2071888309b3c835ee62e1ed76daf5d70e92c1465abe35a70c0ffbd)
- pipeline/counterweight-choir/design/image-prompts/failure.txt (prompt, sha256 41520229b1ed5b3bc069c5e74a0a390d260a12f31df711935831bbe36f07c0b8)
- pipeline/counterweight-choir/design/image-prompts/gameplay-active.txt (prompt, sha256 c61842a8da73ff3680602a20fe99613b98298514a2989a55bf14f749ba39b5bd)
- pipeline/counterweight-choir/design/image-prompts/gameplay-states.txt (prompt, sha256 c4775321d8a12417bdf7ef9d0d1274a53427941d004aebda8b20fbedfceeb0f4)
- pipeline/counterweight-choir/design/image-prompts/home.txt (prompt, sha256 1584f135468dfe5366deaac7a8dd118ce6502566f4287b7c32e4e0431c875f44)
- pipeline/counterweight-choir/design/image-prompts/legal-error.txt (prompt, sha256 025dc8cc9f904d41aa1016aace7fcd5e91affb0fd0805fb0eb30ddbb8208631e)
- pipeline/counterweight-choir/design/image-prompts/onboarding.txt (prompt, sha256 34b6829e305049950557fbd99978486643e1de88bc4a839f8fbdfc9e48847003)
- pipeline/counterweight-choir/design/image-prompts/pause.txt (prompt, sha256 263add6f52b179e08b01b5a9f001372128b999a1f028769c812be025ad72ad4b)
- pipeline/counterweight-choir/design/image-prompts/settings.txt (prompt, sha256 e27b91e5698a78493d2b3276e0be1d158d7b7abbaa4ba3305f4c5cca9014abdd)
- pipeline/counterweight-choir/design/image-prompts/success.txt (prompt, sha256 217b9d943f267bcc746433cdf18a1a15cdb7189337f3d942971424513bd7d2b7)
- pipeline/counterweight-choir/design/machine-validation.json (machine-validation, sha256 3e53d59f65b7e7dc899ffe38f706d886f8f6d8c5c29b51fb59f486b7d1fb2bf8)
- pipeline/counterweight-choir/design/ux-flow.md (ux-flow, sha256 f573c13d1c378bfb5374b475334803c0b4730f6baad57222c731eacd0242d389)
- pipeline/counterweight-choir/design/visual-brief.md (visual-brief, sha256 eed84975304fdb8792b070c152f41ab9927f91e2ea4c9ef5e8e00ef1df663605)
- pipeline/counterweight-choir/design/visual-qa.json (visual-qa, sha256 79036262102084cb0e59b0d3ed717cbde5ec86c4b365ccf442deb20771c4884d)

#### Revision 3

- **Hash:** 81672cdca79d8688c834f149e33aa6410f8eb7ad3e510c0f9bcd1779e7fb3644
- **Created:** 2026-08-20T21:48:27.198Z
- **Release:** 2.1.0
- **Build:** b126eca 2026-08-20 21:53Z
- **Change summary:** Built one deterministic Counterweight Choir mechanics sandbox with exact bottom-up preview, one-weight relocation, ordered token history, safe phrase break without rollback, fatal previews, fresh FTUE, and touch/mouse/keyboard controls.
- **Title:** Counterweight Choir
- **Pitch:** Move one counterweight across a hanging hierarchy of balance beams, then watch torque propagate upward until every bell settles into the target chord.
- **State:** prototyped
- **Stage:** 10
- **Score:** 68
- **GDD excerpt:** This document is the authored design contract for counterweight-choir. Mathematical rules and inventories are design facts. Audience response, fun, retention, willingness to pay, store demand, and Apple approval remain hypotheses until separately observed. Later research may reject or return this exact design for revision but may not silently change its dominant loop.
- **Art excerpt:** Run 2026-08-pipeline-flow-test-en-us; concept counterweight-choir. This is an implementation contract for the bound product, not a moodboard.

Source files:

- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/00-brief/creative-brief.md (source-brief, sha256 41832b9bb6b3a36f9503500221c1d48d5971cc2d85263e91d25eaa17345417f2)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/00-brief/request.json (frozen-request, sha256 34b6206631cbcda6dd495653652ea3dd8fb1183269c8b453e6dbf3ae5892e31d)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/01-idea/idea.json (idea-contract, sha256 8b0ddc6aa2bd62c5088541d84b88b39181802ea5b67e6d73f352eddbbe60f48d)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/03-gdd-audit/audit.json (gdd-audit, sha256 cca5f908b5faac5436e874d487771485eeeb0faa869d58dae926fc738f023023)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/04-market-analysis/advisory-score.json (advisory-score, sha256 c745c14715201680e6088f1011cfc92d25e16c08d0572f6f47103c32dd1cf9fa)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/04-market-analysis/evidence-index.json (evidence-index, sha256 ded89ce344db1e78625581ee8905fb921630d83d7b34d7cb79f42002b2808476)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/04-market-analysis/market-analysis.json (market-analysis, sha256 4d25dc82f27b0fca738c597b8edf1299ee4fc4a09b13ac99ea0e92ee2ad48f9c)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/05-product-direction/product-direction.json (product-direction, sha256 c88c8d46a4cf119f42a9f0349893edd4cfebbba96cf7c4efeb111c567a1ea8a1)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/06-ux/screen-inventory.json (screen-inventory, sha256 9455e916c70bc4d1f6a2d0f30bb6ad9a059a57ad1b7c121eb8269bdce051ae73)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/08-art-audit/art-audit.json (art-audit, sha256 830fac21bc2a817a633d9d164abfbc3f9fb2ad39395178cdc5b68dcf5d2fc951)
- pipeline/counterweight-choir/design/art-bible.md (art-bible, sha256 749c2e3e38dc8cd4e993560edab46423acb35c2ee78c7388f2e734385f5e270b)
- pipeline/counterweight-choir/design/art-bible/accessibility.png (visual-output, sha256 be9d3c81ecfe3579d4d24634df5e3ba0a8bd1f29416749813130f814f3cadcf9)
- pipeline/counterweight-choir/design/art-bible/failure.png (visual-output, sha256 b67a2139129edb7ba3380f56c4623cdabcb69ca2688545ad4174ba3540d59576)
- pipeline/counterweight-choir/design/art-bible/gameplay-active.png (reference, sha256 7bf3903f06ca362b8d7c26d9238811185e523f59b0aa5b2986d42de7275d6083)
- pipeline/counterweight-choir/design/art-bible/gameplay-state-matrix.png (visual-output, sha256 dd92026c083177c94ed488ce012fd0700e91413177ae9b9aa3249b217d5f051a)
- pipeline/counterweight-choir/design/art-bible/home.png (visual-output, sha256 5919cebb7aeec326d82f8cb707eb120b2376b180474ba801f57ffc264020480e)
- pipeline/counterweight-choir/design/art-bible/implementation-board.png (visual-board, sha256 c034c5080de8c000ea25d85783f9279292974e30bea74751a40f6b66fcfd0e7d)
- pipeline/counterweight-choir/design/art-bible/legal-error.png (visual-output, sha256 cafb440df356a85e8b135dbfc5982b79685dd16d7fd3302b105e6f76baaeb00c)
- pipeline/counterweight-choir/design/art-bible/onboarding.png (visual-output, sha256 dab6a7eb87631d4fa4018ae86a4fa3ebaae0b971547f89720bd0a9431694ac9b)
- pipeline/counterweight-choir/design/art-bible/pause.png (visual-output, sha256 b9d6bc1cf026493ebf49e201bf181c3d1af86d2bd816816704ec8e3319139a2e)
- pipeline/counterweight-choir/design/art-bible/settings.png (visual-output, sha256 2ac60530eeb381af6a8801e969e0f2d7bb573a68292b68702d6014e88ad3cbab)
- pipeline/counterweight-choir/design/art-bible/success.png (visual-output, sha256 9f6240e0fca905d0edb742fcde4438ee543e0ff8a6604b5b73fdf9c2c3fca7c1)
- pipeline/counterweight-choir/design/art-bible/visual-blueprint.png (visual-board, sha256 efa779db0561a86573c65743ca444a89392e9985b7c3e36d2197b53b499d3d8d)
- pipeline/counterweight-choir/design/asset-manifest.json (asset-manifest, sha256 7583adeb218bc72b3a485ced4de68c1780eb3c6d1cbc59e476e1ad3200b87421)
- pipeline/counterweight-choir/design/board-spec.json (board-spec, sha256 f879d88728a393b398e9e246706ffc9163e52fceb851093ccbd87d7cda1a5f10)
- pipeline/counterweight-choir/design/gdd.md (gdd, sha256 4e59c490a432ab15ba2ed65e2886fceb7e8780f8c39d9669ddead20a5d8db2d5)
- pipeline/counterweight-choir/design/image-prompts/accessibility.txt (prompt, sha256 b0f36e9eb2071888309b3c835ee62e1ed76daf5d70e92c1465abe35a70c0ffbd)
- pipeline/counterweight-choir/design/image-prompts/failure.txt (prompt, sha256 41520229b1ed5b3bc069c5e74a0a390d260a12f31df711935831bbe36f07c0b8)
- pipeline/counterweight-choir/design/image-prompts/gameplay-active.txt (prompt, sha256 c61842a8da73ff3680602a20fe99613b98298514a2989a55bf14f749ba39b5bd)
- pipeline/counterweight-choir/design/image-prompts/gameplay-states.txt (prompt, sha256 c4775321d8a12417bdf7ef9d0d1274a53427941d004aebda8b20fbedfceeb0f4)
- pipeline/counterweight-choir/design/image-prompts/home.txt (prompt, sha256 1584f135468dfe5366deaac7a8dd118ce6502566f4287b7c32e4e0431c875f44)
- pipeline/counterweight-choir/design/image-prompts/legal-error.txt (prompt, sha256 025dc8cc9f904d41aa1016aace7fcd5e91affb0fd0805fb0eb30ddbb8208631e)
- pipeline/counterweight-choir/design/image-prompts/onboarding.txt (prompt, sha256 34b6829e305049950557fbd99978486643e1de88bc4a839f8fbdfc9e48847003)
- pipeline/counterweight-choir/design/image-prompts/pause.txt (prompt, sha256 263add6f52b179e08b01b5a9f001372128b999a1f028769c812be025ad72ad4b)
- pipeline/counterweight-choir/design/image-prompts/settings.txt (prompt, sha256 e27b91e5698a78493d2b3276e0be1d158d7b7abbaa4ba3305f4c5cca9014abdd)
- pipeline/counterweight-choir/design/image-prompts/success.txt (prompt, sha256 217b9d943f267bcc746433cdf18a1a15cdb7189337f3d942971424513bd7d2b7)
- pipeline/counterweight-choir/design/machine-validation.json (machine-validation, sha256 3e53d59f65b7e7dc899ffe38f706d886f8f6d8c5c29b51fb59f486b7d1fb2bf8)
- pipeline/counterweight-choir/design/ux-flow.md (ux-flow, sha256 f573c13d1c378bfb5374b475334803c0b4730f6baad57222c731eacd0242d389)
- pipeline/counterweight-choir/design/visual-brief.md (visual-brief, sha256 eed84975304fdb8792b070c152f41ab9927f91e2ea4c9ef5e8e00ef1df663605)
- pipeline/counterweight-choir/design/visual-qa.json (visual-qa, sha256 79036262102084cb0e59b0d3ed717cbde5ec86c4b365ccf442deb20771c4884d)

#### Revision 2

- **Hash:** ed3ac969f41e7094620e451638b976853add1447216e409961713ee8001b165c
- **Created:** 2026-08-20T18:17:00.317Z
- **Release:** 2.0.12
- **Build:** efa7032 2026-08-20 21:04Z
- **Change summary:** catalog sync
- **Title:** Counterweight Choir
- **Pitch:** Move one counterweight across a hanging hierarchy of balance beams, then watch torque propagate upward until every bell settles into the target chord.
- **State:** candidate-design
- **Stage:** 7
- **Score:** 68
- **GDD excerpt:** This document is the authored design contract for counterweight-choir. Mathematical rules and inventories are design facts. Audience response, fun, retention, willingness to pay, store demand, and Apple approval remain hypotheses until separately observed. Later research may reject or return this exact design for revision but may not silently change its dominant loop.
- **Art excerpt:** Run 2026-08-pipeline-flow-test-en-us; concept counterweight-choir. This is an implementation contract for the bound product, not a moodboard.

Source files:

- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/00-brief/creative-brief.md (source-brief, sha256 41832b9bb6b3a36f9503500221c1d48d5971cc2d85263e91d25eaa17345417f2)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/00-brief/request.json (frozen-request, sha256 34b6206631cbcda6dd495653652ea3dd8fb1183269c8b453e6dbf3ae5892e31d)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/01-idea/idea.json (idea-contract, sha256 8b0ddc6aa2bd62c5088541d84b88b39181802ea5b67e6d73f352eddbbe60f48d)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/03-gdd-audit/audit.json (gdd-audit, sha256 cca5f908b5faac5436e874d487771485eeeb0faa869d58dae926fc738f023023)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/04-market-analysis/advisory-score.json (advisory-score, sha256 c745c14715201680e6088f1011cfc92d25e16c08d0572f6f47103c32dd1cf9fa)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/04-market-analysis/evidence-index.json (evidence-index, sha256 ded89ce344db1e78625581ee8905fb921630d83d7b34d7cb79f42002b2808476)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/04-market-analysis/market-analysis.json (market-analysis, sha256 4d25dc82f27b0fca738c597b8edf1299ee4fc4a09b13ac99ea0e92ee2ad48f9c)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/05-product-direction/product-direction.json (product-direction, sha256 c88c8d46a4cf119f42a9f0349893edd4cfebbba96cf7c4efeb111c567a1ea8a1)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/06-ux/screen-inventory.json (screen-inventory, sha256 9455e916c70bc4d1f6a2d0f30bb6ad9a059a57ad1b7c121eb8269bdce051ae73)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/art-bible.md (art-bible, sha256 749c2e3e38dc8cd4e993560edab46423acb35c2ee78c7388f2e734385f5e270b)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/art-bible/accessibility.png (visual-output, sha256 be9d3c81ecfe3579d4d24634df5e3ba0a8bd1f29416749813130f814f3cadcf9)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/art-bible/failure.png (visual-output, sha256 b67a2139129edb7ba3380f56c4623cdabcb69ca2688545ad4174ba3540d59576)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/art-bible/gameplay-active.png (reference, sha256 7bf3903f06ca362b8d7c26d9238811185e523f59b0aa5b2986d42de7275d6083)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/art-bible/gameplay-state-matrix.png (visual-output, sha256 dd92026c083177c94ed488ce012fd0700e91413177ae9b9aa3249b217d5f051a)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/art-bible/home.png (visual-output, sha256 5919cebb7aeec326d82f8cb707eb120b2376b180474ba801f57ffc264020480e)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/art-bible/implementation-board.png (visual-board, sha256 c034c5080de8c000ea25d85783f9279292974e30bea74751a40f6b66fcfd0e7d)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/art-bible/legal-error.png (visual-output, sha256 cafb440df356a85e8b135dbfc5982b79685dd16d7fd3302b105e6f76baaeb00c)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/art-bible/onboarding.png (visual-output, sha256 dab6a7eb87631d4fa4018ae86a4fa3ebaae0b971547f89720bd0a9431694ac9b)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/art-bible/pause.png (visual-output, sha256 b9d6bc1cf026493ebf49e201bf181c3d1af86d2bd816816704ec8e3319139a2e)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/art-bible/settings.png (visual-output, sha256 2ac60530eeb381af6a8801e969e0f2d7bb573a68292b68702d6014e88ad3cbab)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/art-bible/success.png (visual-output, sha256 9f6240e0fca905d0edb742fcde4438ee543e0ff8a6604b5b73fdf9c2c3fca7c1)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/art-bible/visual-blueprint.png (visual-board, sha256 efa779db0561a86573c65743ca444a89392e9985b7c3e36d2197b53b499d3d8d)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/asset-manifest.json (asset-manifest, sha256 7583adeb218bc72b3a485ced4de68c1780eb3c6d1cbc59e476e1ad3200b87421)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/board-spec.json (board-spec, sha256 f879d88728a393b398e9e246706ffc9163e52fceb851093ccbd87d7cda1a5f10)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/gdd.md (gdd, sha256 4e59c490a432ab15ba2ed65e2886fceb7e8780f8c39d9669ddead20a5d8db2d5)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/image-prompts/accessibility.txt (prompt, sha256 b0f36e9eb2071888309b3c835ee62e1ed76daf5d70e92c1465abe35a70c0ffbd)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/image-prompts/failure.txt (prompt, sha256 41520229b1ed5b3bc069c5e74a0a390d260a12f31df711935831bbe36f07c0b8)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/image-prompts/gameplay-active.txt (prompt, sha256 c61842a8da73ff3680602a20fe99613b98298514a2989a55bf14f749ba39b5bd)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/image-prompts/gameplay-states.txt (prompt, sha256 c4775321d8a12417bdf7ef9d0d1274a53427941d004aebda8b20fbedfceeb0f4)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/image-prompts/home.txt (prompt, sha256 1584f135468dfe5366deaac7a8dd118ce6502566f4287b7c32e4e0431c875f44)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/image-prompts/legal-error.txt (prompt, sha256 025dc8cc9f904d41aa1016aace7fcd5e91affb0fd0805fb0eb30ddbb8208631e)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/image-prompts/onboarding.txt (prompt, sha256 34b6829e305049950557fbd99978486643e1de88bc4a839f8fbdfc9e48847003)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/image-prompts/pause.txt (prompt, sha256 263add6f52b179e08b01b5a9f001372128b999a1f028769c812be025ad72ad4b)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/image-prompts/settings.txt (prompt, sha256 e27b91e5698a78493d2b3276e0be1d158d7b7abbaa4ba3305f4c5cca9014abdd)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/image-prompts/success.txt (prompt, sha256 217b9d943f267bcc746433cdf18a1a15cdb7189337f3d942971424513bd7d2b7)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/machine-validation.json (machine-validation, sha256 3e53d59f65b7e7dc899ffe38f706d886f8f6d8c5c29b51fb59f486b7d1fb2bf8)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/ux-flow.md (ux-flow, sha256 f573c13d1c378bfb5374b475334803c0b4730f6baad57222c731eacd0242d389)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/visual-brief.md (visual-brief, sha256 eed84975304fdb8792b070c152f41ab9927f91e2ea4c9ef5e8e00ef1df663605)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/visual-qa.json (visual-qa, sha256 79036262102084cb0e59b0d3ed717cbde5ec86c4b365ccf442deb20771c4884d)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/08-art-audit/art-audit.json (art-audit, sha256 91a37b5d3aa71bcb3571137aa186886ce772eab39f58c83383c557d8d3e3d6bf)

#### Revision 1

- **Hash:** c4ca55820a7638fb51c49f94aaafad119a0c3a6af9adfd48e66f1af0cc419f2f
- **Created:** 2026-08-20T18:17:00.317Z
- **Release:** 2.0.10
- **Build:** bb6125f 2026-08-20 18:21Z
- **Change summary:** catalog sync
- **Title:** Counterweight Choir
- **Pitch:** Move one counterweight across a hanging hierarchy of balance beams, then watch torque propagate upward until every bell settles into the target chord.
- **State:** candidate-design
- **Stage:** 7
- **GDD excerpt:** This document is the authored design contract for counterweight-choir. Mathematical rules and inventories are design facts. Audience response, fun, retention, willingness to pay, store demand, and Apple approval remain hypotheses until separately observed. Later research may reject or return this exact design for revision but may not silently change its dominant loop.
- **Art excerpt:** Run 2026-08-pipeline-flow-test-en-us; concept counterweight-choir. This is an implementation contract for the bound product, not a moodboard.

Source files:

- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/00-brief/creative-brief.md (source-brief, sha256 41832b9bb6b3a36f9503500221c1d48d5971cc2d85263e91d25eaa17345417f2)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/00-brief/request.json (frozen-request, sha256 34b6206631cbcda6dd495653652ea3dd8fb1183269c8b453e6dbf3ae5892e31d)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/01-idea/idea.json (idea-contract, sha256 8b0ddc6aa2bd62c5088541d84b88b39181802ea5b67e6d73f352eddbbe60f48d)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/03-gdd-audit/audit.json (gdd-audit, sha256 cca5f908b5faac5436e874d487771485eeeb0faa869d58dae926fc738f023023)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/04-market-analysis/evidence-index.json (evidence-index, sha256 ded89ce344db1e78625581ee8905fb921630d83d7b34d7cb79f42002b2808476)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/04-market-analysis/market-analysis.json (market-analysis, sha256 4d25dc82f27b0fca738c597b8edf1299ee4fc4a09b13ac99ea0e92ee2ad48f9c)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/05-product-direction/product-direction.json (product-direction, sha256 c88c8d46a4cf119f42a9f0349893edd4cfebbba96cf7c4efeb111c567a1ea8a1)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/06-ux/screen-inventory.json (screen-inventory, sha256 9455e916c70bc4d1f6a2d0f30bb6ad9a059a57ad1b7c121eb8269bdce051ae73)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/art-bible.md (art-bible, sha256 749c2e3e38dc8cd4e993560edab46423acb35c2ee78c7388f2e734385f5e270b)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/art-bible/accessibility.png (visual-output, sha256 be9d3c81ecfe3579d4d24634df5e3ba0a8bd1f29416749813130f814f3cadcf9)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/art-bible/failure.png (visual-output, sha256 b67a2139129edb7ba3380f56c4623cdabcb69ca2688545ad4174ba3540d59576)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/art-bible/gameplay-active.png (reference, sha256 7bf3903f06ca362b8d7c26d9238811185e523f59b0aa5b2986d42de7275d6083)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/art-bible/gameplay-state-matrix.png (visual-output, sha256 dd92026c083177c94ed488ce012fd0700e91413177ae9b9aa3249b217d5f051a)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/art-bible/home.png (visual-output, sha256 5919cebb7aeec326d82f8cb707eb120b2376b180474ba801f57ffc264020480e)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/art-bible/implementation-board.png (visual-board, sha256 c034c5080de8c000ea25d85783f9279292974e30bea74751a40f6b66fcfd0e7d)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/art-bible/legal-error.png (visual-output, sha256 cafb440df356a85e8b135dbfc5982b79685dd16d7fd3302b105e6f76baaeb00c)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/art-bible/onboarding.png (visual-output, sha256 dab6a7eb87631d4fa4018ae86a4fa3ebaae0b971547f89720bd0a9431694ac9b)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/art-bible/pause.png (visual-output, sha256 b9d6bc1cf026493ebf49e201bf181c3d1af86d2bd816816704ec8e3319139a2e)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/art-bible/settings.png (visual-output, sha256 2ac60530eeb381af6a8801e969e0f2d7bb573a68292b68702d6014e88ad3cbab)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/art-bible/success.png (visual-output, sha256 9f6240e0fca905d0edb742fcde4438ee543e0ff8a6604b5b73fdf9c2c3fca7c1)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/art-bible/visual-blueprint.png (visual-board, sha256 efa779db0561a86573c65743ca444a89392e9985b7c3e36d2197b53b499d3d8d)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/asset-manifest.json (asset-manifest, sha256 7583adeb218bc72b3a485ced4de68c1780eb3c6d1cbc59e476e1ad3200b87421)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/board-spec.json (board-spec, sha256 f879d88728a393b398e9e246706ffc9163e52fceb851093ccbd87d7cda1a5f10)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/gdd.md (gdd, sha256 4e59c490a432ab15ba2ed65e2886fceb7e8780f8c39d9669ddead20a5d8db2d5)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/image-prompts/accessibility.txt (prompt, sha256 b0f36e9eb2071888309b3c835ee62e1ed76daf5d70e92c1465abe35a70c0ffbd)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/image-prompts/failure.txt (prompt, sha256 41520229b1ed5b3bc069c5e74a0a390d260a12f31df711935831bbe36f07c0b8)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/image-prompts/gameplay-active.txt (prompt, sha256 c61842a8da73ff3680602a20fe99613b98298514a2989a55bf14f749ba39b5bd)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/image-prompts/gameplay-states.txt (prompt, sha256 c4775321d8a12417bdf7ef9d0d1274a53427941d004aebda8b20fbedfceeb0f4)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/image-prompts/home.txt (prompt, sha256 1584f135468dfe5366deaac7a8dd118ce6502566f4287b7c32e4e0431c875f44)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/image-prompts/legal-error.txt (prompt, sha256 025dc8cc9f904d41aa1016aace7fcd5e91affb0fd0805fb0eb30ddbb8208631e)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/image-prompts/onboarding.txt (prompt, sha256 34b6829e305049950557fbd99978486643e1de88bc4a839f8fbdfc9e48847003)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/image-prompts/pause.txt (prompt, sha256 263add6f52b179e08b01b5a9f001372128b999a1f028769c812be025ad72ad4b)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/image-prompts/settings.txt (prompt, sha256 e27b91e5698a78493d2b3276e0be1d158d7b7abbaa4ba3305f4c5cca9014abdd)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/image-prompts/success.txt (prompt, sha256 217b9d943f267bcc746433cdf18a1a15cdb7189337f3d942971424513bd7d2b7)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/machine-validation.json (machine-validation, sha256 3e53d59f65b7e7dc899ffe38f706d886f8f6d8c5c29b51fb59f486b7d1fb2bf8)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/ux-flow.md (ux-flow, sha256 f573c13d1c378bfb5374b475334803c0b4730f6baad57222c731eacd0242d389)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/visual-brief.md (visual-brief, sha256 eed84975304fdb8792b070c152f41ab9927f91e2ea4c9ef5e8e00ef1df663605)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/07-art-bible/design-package/visual-qa.json (visual-qa, sha256 79036262102084cb0e59b0d3ed717cbde5ec86c4b365ccf442deb20771c4884d)
- idea-lab/outputs/2026-08-pipeline-flow-test-en-us/08-art-audit/art-audit.json (art-audit, sha256 91a37b5d3aa71bcb3571137aa186886ce772eab39f58c83383c557d8d3e3d6bf)

## Source package files (19)

Images are listed with direct URLs in the Gallery section.

### artifacts/board-spec.json

URL: https://autechsolutions-game-factory.pages.dev/ideas/counterweight-choir/files/artifacts/board-spec.json
Type: application/json, 10377 bytes

```json
{
  "version": 1,
  "title": "Counterweight Choir",
  "subtitle": "Realistic weight-swap mobile puzzle — structural Art Bible and implementation guide",
  "theme": {
    "background": "#f4f1e8",
    "surface": "#292d31",
    "paper": "#f4f1e8",
    "ink": "#292d31",
    "muted": "#a8adb3",
    "accent": "#1557ff",
    "danger": "#dd5b45",
    "gold": "#b7d62e"
  },
  "overview": [
    {
      "label": "Fantasy",
      "text": "Restore a credible gallery-scale kinetic sculpture by swapping physical counterweights in the right order.",
      "sourceRefs": [
        "ENV-SCULPTURE-GALLERY",
        "M-SWAP"
      ]
    },
    {
      "label": "Genre",
      "text": "Portrait tactile order puzzle with immediate drag readability and authored causal depth.",
      "sourceRefs": [
        "SCR-GAMEPLAY",
        "M-PREVIEW"
      ]
    },
    {
      "label": "Core loop",
      "text": "Read target pose, pick weight, preview settle, place or swap, watch shutter, match sculpture.",
      "sourceRefs": [
        "UI-TARGET-CARD",
        "M-PICK",
        "M-SWAP",
        "M-CHECK"
      ]
    },
    {
      "label": "Consequence",
      "text": "Each committed swap changes the mobile and future legal hooks, making visible order matter.",
      "sourceRefs": [
        "P-ORDER",
        "M-SETTLE",
        "V-HOOK-CHANGE"
      ]
    },
    {
      "label": "Visual identity",
      "text": "Architectural daylight, anodized metal, fine cable, porcelain, stone, acrylic, white panels, cobalt action.",
      "sourceRefs": [
        "ENV-ARCHITECTURAL-BACKDROP",
        "E-BEAM",
        "E-WEIGHT-1"
      ]
    },
    {
      "label": "Hard exclusions",
      "text": "No weight numbers, equations, torque, M/H/L, resonance tokens, phrase rail, calibration UI, or soft toy blobs.",
      "sourceRefs": [
        "SCR-GAMEPLAY",
        "UI-PRIMARY"
      ]
    }
  ],
  "gameplayFlow": [
    {
      "step": 1,
      "title": "Read the pose",
      "description": "Compare the dense complete mobile with the compact target thumbnail and move budget.",
      "assetId": "ART-GAMEPLAY",
      "sourceRefs": [
        "UI-TARGET-CARD",
        "UI-MOVE-COUNT"
      ]
    },
    {
      "step": 2,
      "title": "Pick a weight",
      "description": "Select one physical counterweight; legal open rings halo and occupied hooks say Swap.",
      "assetId": "ART-ONBOARDING",
      "sourceRefs": [
        "M-PICK",
        "E-WEIGHT-2",
        "E-HOOK"
      ]
    },
    {
      "step": 3,
      "title": "Preview the settle",
      "description": "Ghost the exact final hierarchy, displaced weight, target changes, and future shutter state.",
      "assetId": "ART-GAMEPLAY-STATES",
      "sourceRefs": [
        "M-PREVIEW",
        "V-GHOST",
        "V-HOOK-CHANGE"
      ]
    },
    {
      "step": 4,
      "title": "Place or swap",
      "description": "Release on an open ring; an occupied destination exchanges both weights atomically.",
      "assetId": "ART-GAMEPLAY",
      "sourceRefs": [
        "M-SWAP",
        "M-SETTLE"
      ]
    },
    {
      "step": 5,
      "title": "Watch what opens",
      "description": "Affected beams settle leaf to root and reveal or close the next physical hook.",
      "assetId": "ART-GAMEPLAY-STATES",
      "sourceRefs": [
        "ST-HOOK-REVEAL",
        "E-SHUTTER",
        "P-ORDER"
      ]
    },
    {
      "step": 6,
      "title": "Match or recover",
      "description": "Complete the pose, or inspect mismatches and use Undo or Retry without penalty.",
      "assetId": "ART-SUCCESS",
      "sourceRefs": [
        "M-CHECK",
        "M-UNDO",
        "M-RETRY"
      ]
    }
  ],
  "tutorial": [
    {
      "title": "Target",
      "instruction": "Match the pictured mobile before moves reach zero.",
      "sourceRefs": [
        "UI-TARGET-CARD",
        "UI-MOVE-COUNT"
      ]
    },
    {
      "title": "Physical cues",
      "instruction": "Size, silhouette, material, and separate dots distinguish weights without printed values.",
      "sourceRefs": [
        "E-WEIGHT-1",
        "E-WEIGHT-2",
        "E-WEIGHT-3"
      ]
    },
    {
      "title": "Select",
      "instruction": "Open rings halo; closed destinations remain physically shuttered.",
      "sourceRefs": [
        "M-PICK",
        "E-HOOK",
        "E-SHUTTER"
      ]
    },
    {
      "title": "Preview",
      "instruction": "The translucent mobile is the exact post-release state, including the displaced weight.",
      "sourceRefs": [
        "M-PREVIEW",
        "V-GHOST"
      ]
    },
    {
      "title": "Swap",
      "instruction": "Dropping on an occupied open hook exchanges both visible counterweights for one move.",
      "sourceRefs": [
        "M-SWAP",
        "UI-HOOK-BADGE"
      ]
    },
    {
      "title": "Reveal",
      "instruction": "After settle, the affected shutter explicitly shows Opens or Closed.",
      "sourceRefs": [
        "ST-HOOK-REVEAL",
        "V-HOOK-CHANGE"
      ]
    },
    {
      "title": "Blocked",
      "instruction": "Physical obstruction is outlined; the weight returns and no move is used.",
      "sourceRefs": [
        "ST-PREVIEW-BLOCKED",
        "V-BOUNCE"
      ]
    },
    {
      "title": "Recover",
      "instruction": "Undo restores the exact prior sculpture; Retry restores the authored start.",
      "sourceRefs": [
        "M-UNDO",
        "M-RETRY"
      ]
    }
  ],
  "entityCards": [
    {
      "title": "Counterweights",
      "description": "Seven to ten credible porcelain, stone, and metal forms use scale, silhouette, and dots without numbers.",
      "sourceRefs": [
        "E-WEIGHT-1",
        "E-WEIGHT-2",
        "E-WEIGHT-3",
        "E-TRAY"
      ]
    },
    {
      "title": "Beam and bearing",
      "description": "Slender anodized beam and oversized bearing communicate pose without degree ticks.",
      "sourceRefs": [
        "E-BEAM",
        "E-PIVOT",
        "E-TARGET-ARC"
      ]
    },
    {
      "title": "Hooks and shutter",
      "description": "Open, occupied, one-way, and covered destinations differ physically and textually.",
      "sourceRefs": [
        "E-HOOK",
        "E-SHUTTER",
        "E-ONEWAY"
      ]
    },
    {
      "title": "Glass and bell",
      "description": "Clear blockers have strong edges; one real bell confirms only completed restoration.",
      "sourceRefs": [
        "E-GLASS",
        "E-BELL"
      ]
    }
  ],
  "systemCards": [
    {
      "title": "Exact ghost",
      "description": "Preview and commit share one deterministic resolver, so visible settled state is trustworthy.",
      "sourceRefs": [
        "M-PREVIEW",
        "M-SETTLE",
        "V-GHOST"
      ]
    },
    {
      "title": "Occupied swap",
      "description": "A drop on an occupied open ring exchanges both physical counterweights for one move.",
      "sourceRefs": [
        "M-SWAP",
        "UI-HOOK-BADGE"
      ]
    },
    {
      "title": "Order changes access",
      "description": "Settled linked beams open or close physical shutters, changing the next legal hook.",
      "sourceRefs": [
        "P-ORDER",
        "E-SHUTTER",
        "V-HOOK-CHANGE"
      ]
    },
    {
      "title": "Forgiving recovery",
      "description": "Blocked previews cost nothing; Undo and Retry support immediate experimentation.",
      "sourceRefs": [
        "V-BOUNCE",
        "M-UNDO",
        "M-RETRY"
      ]
    }
  ],
  "screenAssetIds": [
    "ART-ONBOARDING",
    "ART-HOME",
    "ART-GAMEPLAY",
    "ART-GAMEPLAY-STATES",
    "ART-PAUSE",
    "ART-SUCCESS",
    "ART-FAILURE",
    "ART-SETTINGS",
    "ART-ACCESSIBILITY",
    "ART-LEGAL"
  ],
  "implementationNotes": [
    {
      "label": "Layout",
      "text": "Keep target, seven-to-ten-weight mobile, staging rail, moves, Undo, and Retry visible at 360x800.",
      "sourceRefs": [
        "SCR-GAMEPLAY",
        "UI-WEIGHT-TRAY"
      ]
    },
    {
      "label": "Touch",
      "text": "Visible forms can stay slender while invisible weight/hook hit regions remain at least 64x64.",
      "sourceRefs": [
        "E-HOOK",
        "A-TAP"
      ]
    },
    {
      "label": "Type",
      "text": "Modern grotesk, 17 px body minimum, tabular UI counts, 35 percent expansion, 150 percent reflow.",
      "sourceRefs": [
        "A-TEXT",
        "UI-MOVE-COUNT"
      ]
    },
    {
      "label": "Motion",
      "text": "Settle within 500 ms; reduced motion uses stepped before/after frames and no camera movement.",
      "sourceRefs": [
        "M-SETTLE",
        "A-MOTION"
      ]
    },
    {
      "label": "Access",
      "text": "Scale, material, dots, geometry, labels, speech, and optional haptics repeat critical state.",
      "sourceRefs": [
        "A-COLOR",
        "A-READER",
        "A-HAPTIC"
      ]
    },
    {
      "label": "Export",
      "text": "Rebuild UI natively; preserve sRGB sources, layered sculpture pieces, baked light, and shared resolver.",
      "sourceRefs": [
        "ENV-SCULPTURE-GALLERY",
        "UI-SETTING-ROW"
      ]
    }
  ],
  "sourceRefs": [
    "SCR-ONBOARDING",
    "SCR-HOME",
    "SCR-GAMEPLAY",
    "SCR-PAUSE",
    "SCR-SUCCESS",
    "SCR-FAILURE",
    "SCR-SETTINGS",
    "SCR-ACCESSIBILITY",
    "SCR-LEGAL",
    "ST-FRESH",
    "ST-SELECTED",
    "ST-DRAGGING",
    "ST-PREVIEW-SAFE",
    "ST-PREVIEW-BLOCKED",
    "ST-SETTLING",
    "ST-HOOK-REVEAL",
    "ST-TARGET-MATCH",
    "ST-PAUSED",
    "ST-SUCCESS",
    "ST-FAILURE",
    "ST-ERROR",
    "ST-LOADING",
    "ST-DISABLED",
    "ST-INTERRUPTED",
    "M-PICK",
    "M-DRAG",
    "M-PREVIEW",
    "M-SWAP",
    "M-SETTLE",
    "M-CHECK",
    "M-UNDO",
    "M-RETRY",
    "E-BEAM",
    "E-PIVOT",
    "E-HOOK",
    "E-WEIGHT-1",
    "E-WEIGHT-2",
    "E-WEIGHT-3",
    "E-SHUTTER",
    "E-ONEWAY",
    "E-GLASS",
    "E-TARGET-ARC",
    "E-BELL",
    "E-TRAY",
    "ENV-SCULPTURE-GALLERY",
    "ENV-GALLERY-ARCHIVE",
    "ENV-ARCHITECTURAL-BACKDROP",
    "UI-TARGET-CARD",
    "UI-MOVE-COUNT",
    "UI-WEIGHT-TRAY",
    "UI-HOOK-BADGE",
    "UI-PRIMARY",
    "UI-FROST-SHEET",
    "UI-LEVEL-PATH",
    "UI-HOW-TO",
    "UI-SETTING-ROW",
    "UI-ERROR-SHEET",
    "UI-LEGAL-LIST",
    "A-COLOR",
    "A-MOTION",
    "A-TEXT",
    "A-HAPTIC",
    "A-READER",
    "A-TAP",
    "V-GHOST",
    "V-HOOK-CHANGE",
    "V-BOUNCE",
    "V-TARGET-LOCK",
    "V-SETTLE",
    "V-SUCCESS"
  ]
}
```

### artifacts/image-prompts/accessibility.txt

URL: https://autechsolutions-game-factory.pages.dev/ideas/counterweight-choir/files/artifacts/image-prompts/accessibility.txt
Type: text/plain; charset=utf-8, 810 bytes

```text
Counterweight Choir v0.4 realistic image contract

Real material/dot/hook preview and accessibility controls.

Match the previous Counterweight Choir generation: bright contemporary gallery, tall slender aluminum mobile, fine tension wires, real porcelain/stone/metal counterweights, hard architectural daylight, warm-white acrylic panels, graphite type, restrained cobalt actions. Standard gameplay contains seven to ten weights; FTUE may use five. Explain swap, exact settle, target pose, and future hook physically. No printed numeric mass labels, equations, torque, signed angles, degree ticks, M/H/L, resonance tokens, phrase rail, calibration diagnostics, candy colors, soft toy blobs, cartoon faces, owner UI, or currency.

Source refs: SCR-ACCESSIBILITY A-COLOR A-MOTION A-TEXT A-HAPTIC A-READER A-TAP
```

### artifacts/image-prompts/failure.txt

URL: https://autechsolutions-game-factory.pages.dev/ideas/counterweight-choir/files/artifacts/image-prompts/failure.txt
Type: text/plain; charset=utf-8, 773 bytes

```text
Counterweight Choir v0.4 realistic image contract

Out-of-moves sculpture preserving two visible target mismatches.

Match the previous Counterweight Choir generation: bright contemporary gallery, tall slender aluminum mobile, fine tension wires, real porcelain/stone/metal counterweights, hard architectural daylight, warm-white acrylic panels, graphite type, restrained cobalt actions. Standard gameplay contains seven to ten weights; FTUE may use five. Explain swap, exact settle, target pose, and future hook physically. No printed numeric mass labels, equations, torque, signed angles, degree ticks, M/H/L, resonance tokens, phrase rail, calibration diagnostics, candy colors, soft toy blobs, cartoon faces, owner UI, or currency.

Source refs: SCR-FAILURE ST-FAILURE
```

### artifacts/image-prompts/gameplay-active.txt

URL: https://autechsolutions-game-factory.pages.dev/ideas/counterweight-choir/files/artifacts/image-prompts/gameplay-active.txt
Type: text/plain; charset=utf-8, 1135 bytes

```text
Counterweight Choir v0.4 realistic image contract

Authoritative realistic nine-weight gameplay master.

Match the previous Counterweight Choir generation: bright contemporary gallery, tall slender aluminum mobile, fine tension wires, real porcelain/stone/metal counterweights, hard architectural daylight, warm-white acrylic panels, graphite type, restrained cobalt actions. Standard gameplay contains seven to ten weights; FTUE may use five. Explain swap, exact settle, target pose, and future hook physically. No printed numeric mass labels, equations, torque, signed angles, degree ticks, M/H/L, resonance tokens, phrase rail, calibration diagnostics, candy colors, soft toy blobs, cartoon faces, owner UI, or currency.

Source refs: SCR-GAMEPLAY ST-PREVIEW-SAFE M-PICK M-DRAG M-PREVIEW M-SWAP M-SETTLE M-CHECK M-UNDO M-RETRY E-BEAM E-PIVOT E-HOOK E-WEIGHT-1 E-WEIGHT-2 E-WEIGHT-3 E-SHUTTER E-ONEWAY E-GLASS E-TARGET-ARC E-BELL E-TRAY ENV-SCULPTURE-GALLERY UI-TARGET-CARD UI-MOVE-COUNT UI-WEIGHT-TRAY UI-HOOK-BADGE UI-PRIMARY A-COLOR A-MOTION A-HAPTIC A-READER A-TAP V-GHOST V-HOOK-CHANGE V-BOUNCE V-TARGET-LOCK V-SETTLE V-SUCCESS
```

### artifacts/image-prompts/gameplay-state-matrix.txt

URL: https://autechsolutions-game-factory.pages.dev/ideas/counterweight-choir/files/artifacts/image-prompts/gameplay-state-matrix.txt
Type: text/plain; charset=utf-8, 895 bytes

```text
Counterweight Choir v0.4 realistic image contract

Realistic selected, safe swap, blocked, loading, disabled, and interruption language.

Match the previous Counterweight Choir generation: bright contemporary gallery, tall slender aluminum mobile, fine tension wires, real porcelain/stone/metal counterweights, hard architectural daylight, warm-white acrylic panels, graphite type, restrained cobalt actions. Standard gameplay contains seven to ten weights; FTUE may use five. Explain swap, exact settle, target pose, and future hook physically. No printed numeric mass labels, equations, torque, signed angles, degree ticks, M/H/L, resonance tokens, phrase rail, calibration diagnostics, candy colors, soft toy blobs, cartoon faces, owner UI, or currency.

Source refs: ST-SELECTED ST-DRAGGING ST-PREVIEW-BLOCKED ST-SETTLING ST-HOOK-REVEAL ST-TARGET-MATCH ST-LOADING ST-DISABLED ST-INTERRUPTED
```

### artifacts/image-prompts/home.txt

URL: https://autechsolutions-game-factory.pages.dev/ideas/counterweight-choir/files/artifacts/image-prompts/home.txt
Type: text/plain; charset=utf-8, 819 bytes

```text
Counterweight Choir v0.4 realistic image contract

Dense gallery archive, sixty-level path, and solved sculptures.

Match the previous Counterweight Choir generation: bright contemporary gallery, tall slender aluminum mobile, fine tension wires, real porcelain/stone/metal counterweights, hard architectural daylight, warm-white acrylic panels, graphite type, restrained cobalt actions. Standard gameplay contains seven to ten weights; FTUE may use five. Explain swap, exact settle, target pose, and future hook physically. No printed numeric mass labels, equations, torque, signed angles, degree ticks, M/H/L, resonance tokens, phrase rail, calibration diagnostics, candy colors, soft toy blobs, cartoon faces, owner UI, or currency.

Source refs: SCR-HOME ENV-GALLERY-ARCHIVE ENV-ARCHITECTURAL-BACKDROP UI-LEVEL-PATH
```

### artifacts/image-prompts/legal-error.txt

URL: https://autechsolutions-game-factory.pages.dev/ideas/counterweight-choir/files/artifacts/image-prompts/legal-error.txt
Type: text/plain; charset=utf-8, 783 bytes

```text
Counterweight Choir v0.4 realistic image contract

Realistic legal list and recoverable error sheet.

Match the previous Counterweight Choir generation: bright contemporary gallery, tall slender aluminum mobile, fine tension wires, real porcelain/stone/metal counterweights, hard architectural daylight, warm-white acrylic panels, graphite type, restrained cobalt actions. Standard gameplay contains seven to ten weights; FTUE may use five. Explain swap, exact settle, target pose, and future hook physically. No printed numeric mass labels, equations, torque, signed angles, degree ticks, M/H/L, resonance tokens, phrase rail, calibration diagnostics, candy colors, soft toy blobs, cartoon faces, owner UI, or currency.

Source refs: SCR-LEGAL ST-ERROR UI-ERROR-SHEET UI-LEGAL-LIST
```

### artifacts/image-prompts/onboarding.txt

URL: https://autechsolutions-game-factory.pages.dev/ideas/counterweight-choir/files/artifacts/image-prompts/onboarding.txt
Type: text/plain; charset=utf-8, 798 bytes

```text
Counterweight Choir v0.4 realistic image contract

Five-weight real FTUE showing drag, occupied swap, and future shutter opening.

Match the previous Counterweight Choir generation: bright contemporary gallery, tall slender aluminum mobile, fine tension wires, real porcelain/stone/metal counterweights, hard architectural daylight, warm-white acrylic panels, graphite type, restrained cobalt actions. Standard gameplay contains seven to ten weights; FTUE may use five. Explain swap, exact settle, target pose, and future hook physically. No printed numeric mass labels, equations, torque, signed angles, degree ticks, M/H/L, resonance tokens, phrase rail, calibration diagnostics, candy colors, soft toy blobs, cartoon faces, owner UI, or currency.

Source refs: SCR-ONBOARDING ST-FRESH UI-HOW-TO
```

### artifacts/image-prompts/pause.txt

URL: https://autechsolutions-game-factory.pages.dev/ideas/counterweight-choir/files/artifacts/image-prompts/pause.txt
Type: text/plain; charset=utf-8, 773 bytes

```text
Counterweight Choir v0.4 realistic image contract

Frosted pause sheet over the frozen dense sculpture.

Match the previous Counterweight Choir generation: bright contemporary gallery, tall slender aluminum mobile, fine tension wires, real porcelain/stone/metal counterweights, hard architectural daylight, warm-white acrylic panels, graphite type, restrained cobalt actions. Standard gameplay contains seven to ten weights; FTUE may use five. Explain swap, exact settle, target pose, and future hook physically. No printed numeric mass labels, equations, torque, signed angles, degree ticks, M/H/L, resonance tokens, phrase rail, calibration diagnostics, candy colors, soft toy blobs, cartoon faces, owner UI, or currency.

Source refs: SCR-PAUSE ST-PAUSED UI-FROST-SHEET
```

### artifacts/image-prompts/settings.txt

URL: https://autechsolutions-game-factory.pages.dev/ideas/counterweight-choir/files/artifacts/image-prompts/settings.txt
Type: text/plain; charset=utf-8, 754 bytes

```text
Counterweight Choir v0.4 realistic image contract

Realistic acrylic settings panel.

Match the previous Counterweight Choir generation: bright contemporary gallery, tall slender aluminum mobile, fine tension wires, real porcelain/stone/metal counterweights, hard architectural daylight, warm-white acrylic panels, graphite type, restrained cobalt actions. Standard gameplay contains seven to ten weights; FTUE may use five. Explain swap, exact settle, target pose, and future hook physically. No printed numeric mass labels, equations, torque, signed angles, degree ticks, M/H/L, resonance tokens, phrase rail, calibration diagnostics, candy colors, soft toy blobs, cartoon faces, owner UI, or currency.

Source refs: SCR-SETTINGS UI-SETTING-ROW A-TEXT
```

### artifacts/image-prompts/success.txt

URL: https://autechsolutions-game-factory.pages.dev/ideas/counterweight-choir/files/artifacts/image-prompts/success.txt
Type: text/plain; charset=utf-8, 767 bytes

```text
Counterweight Choir v0.4 realistic image contract

Realistic restored sculpture with restrained result panel.

Match the previous Counterweight Choir generation: bright contemporary gallery, tall slender aluminum mobile, fine tension wires, real porcelain/stone/metal counterweights, hard architectural daylight, warm-white acrylic panels, graphite type, restrained cobalt actions. Standard gameplay contains seven to ten weights; FTUE may use five. Explain swap, exact settle, target pose, and future hook physically. No printed numeric mass labels, equations, torque, signed angles, degree ticks, M/H/L, resonance tokens, phrase rail, calibration diagnostics, candy colors, soft toy blobs, cartoon faces, owner UI, or currency.

Source refs: SCR-SUCCESS ST-SUCCESS
```

### docs/art-bible.md

URL: https://autechsolutions-game-factory.pages.dev/ideas/counterweight-choir/files/docs/art-bible.md
Type: text/markdown; charset=utf-8, 5717 bytes

Full text is reproduced above under "Art Bible".

### docs/gdd.md

URL: https://autechsolutions-game-factory.pages.dev/ideas/counterweight-choir/files/docs/gdd.md
Type: text/markdown; charset=utf-8, 19454 bytes

Full text is reproduced above under "Game design document".

### docs/ux-flow.md

URL: https://autechsolutions-game-factory.pages.dev/ideas/counterweight-choir/files/docs/ux-flow.md
Type: text/markdown; charset=utf-8, 6056 bytes

Full text is reproduced above under "UX flow".

### docs/visual-brief.md

URL: https://autechsolutions-game-factory.pages.dev/ideas/counterweight-choir/files/docs/visual-brief.md
Type: text/markdown; charset=utf-8, 4896 bytes

Full text is reproduced above under "Visual brief".

### market/evidence-index.json

URL: https://autechsolutions-game-factory.pages.dev/ideas/counterweight-choir/files/market/evidence-index.json
Type: application/json, 3052 bytes

```json
{
  "version": 1,
  "status": "indexed",
  "evidence": [
    {
      "id": "sensor-tower-q2-2026-puzzle",
      "kind": "market-report",
      "truthLabel": "REPORTED",
      "url": "https://sensortower.com/blog/q2-2026-digital-market-index-report",
      "retrievedAt": "2026-08-20T22:45:44.7159022Z",
      "finding": "Sensor Tower reports Puzzle IAP revenue above $4B in Q2 2026, up 17 percent year over year, and Puzzle as the only major game genre with positive year-over-year download growth at 1 percent."
    },
    {
      "id": "sensor-tower-june-2026-puzzle-creative",
      "kind": "acquisition-report",
      "truthLabel": "REPORTED",
      "url": "https://develop.sensortower.com/blog/top-10-worldwide-mobile-games-by-revenue-and-downloads-in-june-2026",
      "retrievedAt": "2026-08-20T22:45:44.7159022Z",
      "finding": "Sensor Tower says multiple arrow puzzle titles scaled simultaneously and attributes appeal to simple rules, rapid retry loops, and short-form video creatives."
    },
    {
      "id": "apple-poise-market",
      "kind": "competition-signal",
      "truthLabel": "CONFIRMED",
      "url": "https://apps.apple.com/us/app/poise-a-balance-puzzle/id6788523588",
      "retrievedAt": "2026-08-20T22:45:44.7159022Z",
      "finding": "Current US page shows the closest hanging-mobile product, 90 curated solver-verified puzzles, daily and endless modes, but only one visible rating."
    },
    {
      "id": "apple-weighting-game-market",
      "kind": "competition-signal",
      "truthLabel": "CONFIRMED",
      "url": "https://apps.apple.com/us/app/weighting-game/id6745152557",
      "retrievedAt": "2026-08-20T22:45:44.7159022Z",
      "finding": "Current US page sells moving weights to particular hooks and beam balance for $0.99 and lacks enough ratings for an overview."
    },
    {
      "id": "apple-fulcrum-market",
      "kind": "competition-signal",
      "truthLabel": "CONFIRMED",
      "url": "https://apps.apple.com/us/app/the-fulcrum/id6760799324",
      "retrievedAt": "2026-08-20T22:45:44.7159022Z",
      "finding": "Current US page advertises 150 levels, fixed and free-physics placement, distractors, locks, multiple beams, daily challenge, endless mode, and one visible rating."
    },
    {
      "id": "apple-railbound-premium",
      "kind": "monetization-signal",
      "truthLabel": "CONFIRMED",
      "url": "https://apps.apple.com/us/app/railbound/id1636439801",
      "retrievedAt": "2026-08-20T22:45:44.7159022Z",
      "finding": "Current US page shows a $4.99 premium authored order puzzle with 240-plus levels, 118 ratings, 4.8 stars, and Editors Choice."
    },
    {
      "id": "apple-good-snowman-premium",
      "kind": "monetization-signal",
      "truthLabel": "CONFIRMED",
      "url": "https://apps.apple.com/us/app/a-good-snowman/id1040930654",
      "retrievedAt": "2026-08-20T22:45:44.7159022Z",
      "finding": "Current US page shows a $5.99 authored puzzle with no ads or in-app purchases, supporting model existence but not this concepts conversion."
    }
  ]
}
```

### validation/asset-manifest.json

URL: https://autechsolutions-game-factory.pages.dev/ideas/counterweight-choir/files/validation/asset-manifest.json
Type: application/json, 27150 bytes

```json
{
  "version": 3,
  "status": "complete",
  "model": "gpt-image-2",
  "lineage": {
    "runId": "2026-08-pipeline-flow-test-en-us",
    "conceptId": "counterweight-choir"
  },
  "authorship": {
    "designBy": "Codex visual design operator"
  },
  "documents": {
    "gdd": "gdd.md",
    "uxFlow": "ux-flow.md",
    "visualBrief": "visual-brief.md",
    "artBible": "art-bible.md"
  },
  "boardSpec": "board-spec.json",
  "sourceBindings": {
    "gdd": {
      "source": "02-gdd/gdd.md",
      "snapshot": "gdd.md",
      "sha256": "9fae203d233394552ce875648d404921879b5879d3e475a65538fca33f239f59"
    },
    "gddAudit": {
      "source": "03-gdd-audit/audit.json",
      "snapshot": "gdd-audit.json",
      "sha256": "0d8d112ead3cad15d5db95e0ec65781e20920a06d2e284e4d9d2b49401a924c7"
    },
    "marketAnalysis": {
      "source": "04-market-analysis/market-analysis.json",
      "snapshot": "market-analysis.json",
      "sha256": "73c6365d8bbd18f0ac286bf7f87b5e8d106b31244a343e220e40d98e8ced4014"
    },
    "productDirection": {
      "source": "05-product-direction/product-direction.json",
      "snapshot": "product-direction.json",
      "sha256": "4c93983134728202cf088806344a6e056aab1c7dfb9f923164c532a373639c40"
    },
    "uxFlow": {
      "source": "06-ux/ux-flow.md",
      "snapshot": "ux-flow.md",
      "sha256": "0dea84c3a9e956b8ac97cee2a4d60c1a071884e2702613285e9299a210f6d02f"
    }
  },
  "inventory": {
    "screens": [
      {
        "id": "SCR-ONBOARDING",
        "role": "onboarding",
        "sourceRefs": [
          "SCR-ONBOARDING",
          "M-PICK",
          "M-PREVIEW",
          "M-SWAP",
          "P-ORDER"
        ]
      },
      {
        "id": "SCR-HOME",
        "role": "home",
        "sourceRefs": [
          "SCR-HOME",
          "ENV-GALLERY-ARCHIVE",
          "UI-LEVEL-PATH",
          "UI-HOW-TO"
        ]
      },
      {
        "id": "SCR-GAMEPLAY",
        "role": "gameplay",
        "sourceRefs": [
          "SCR-GAMEPLAY",
          "ENV-SCULPTURE-GALLERY",
          "UI-TARGET-CARD",
          "UI-MOVE-COUNT",
          "M-PREVIEW"
        ]
      },
      {
        "id": "SCR-PAUSE",
        "role": "pause",
        "sourceRefs": [
          "SCR-PAUSE",
          "ST-PAUSED",
          "UI-FROST-SHEET"
        ]
      },
      {
        "id": "SCR-SUCCESS",
        "role": "success",
        "sourceRefs": [
          "SCR-SUCCESS",
          "ST-SUCCESS",
          "V-TARGET-LOCK",
          "E-BELL"
        ]
      },
      {
        "id": "SCR-FAILURE",
        "role": "failure",
        "sourceRefs": [
          "SCR-FAILURE",
          "ST-FAILURE",
          "UI-TARGET-CARD",
          "M-UNDO",
          "M-RETRY"
        ]
      },
      {
        "id": "SCR-SETTINGS",
        "role": "settings",
        "sourceRefs": [
          "SCR-SETTINGS",
          "A-HAPTIC",
          "A-TEXT",
          "UI-SETTING-ROW"
        ]
      },
      {
        "id": "SCR-ACCESSIBILITY",
        "role": "accessibility",
        "sourceRefs": [
          "SCR-ACCESSIBILITY",
          "A-COLOR",
          "A-MOTION",
          "A-TEXT",
          "A-READER",
          "A-TAP"
        ]
      },
      {
        "id": "SCR-LEGAL",
        "role": "legal",
        "sourceRefs": [
          "SCR-LEGAL",
          "UI-LEGAL-LIST",
          "ST-ERROR"
        ]
      }
    ],
    "states": [
      {
        "id": "ST-FRESH",
        "role": "fresh",
        "important": true,
        "sourceRefs": [
          "ST-FRESH",
          "ENV-SCULPTURE-GALLERY",
          "UI-TARGET-CARD"
        ]
      },
      {
        "id": "ST-SELECTED",
        "role": "selected",
        "important": false,
        "sourceRefs": [
          "ST-SELECTED",
          "M-PICK",
          "E-WEIGHT-1",
          "E-HOOK"
        ]
      },
      {
        "id": "ST-DRAGGING",
        "role": "dragging",
        "important": false,
        "sourceRefs": [
          "ST-DRAGGING",
          "M-DRAG",
          "E-HOOK",
          "E-SHUTTER"
        ]
      },
      {
        "id": "ST-PREVIEW-SAFE",
        "role": "active",
        "important": true,
        "sourceRefs": [
          "ST-PREVIEW-SAFE",
          "M-PREVIEW",
          "V-GHOST",
          "V-HOOK-CHANGE"
        ]
      },
      {
        "id": "ST-PREVIEW-BLOCKED",
        "role": "preview-blocked",
        "important": false,
        "sourceRefs": [
          "ST-PREVIEW-BLOCKED",
          "E-SHUTTER",
          "E-ONEWAY",
          "E-GLASS",
          "V-BOUNCE"
        ]
      },
      {
        "id": "ST-SETTLING",
        "role": "settling",
        "important": false,
        "sourceRefs": [
          "ST-SETTLING",
          "M-SETTLE",
          "A-MOTION"
        ]
      },
      {
        "id": "ST-HOOK-REVEAL",
        "role": "hook-reveal",
        "important": false,
        "sourceRefs": [
          "ST-HOOK-REVEAL",
          "P-ORDER",
          "E-SHUTTER",
          "V-HOOK-CHANGE"
        ]
      },
      {
        "id": "ST-TARGET-MATCH",
        "role": "target-match",
        "important": false,
        "sourceRefs": [
          "ST-TARGET-MATCH",
          "M-CHECK",
          "E-TARGET-ARC",
          "V-TARGET-LOCK"
        ]
      },
      {
        "id": "ST-PAUSED",
        "role": "paused",
        "important": true,
        "sourceRefs": [
          "ST-PAUSED",
          "SCR-PAUSE"
        ]
      },
      {
        "id": "ST-SUCCESS",
        "role": "success",
        "important": true,
        "sourceRefs": [
          "ST-SUCCESS",
          "SCR-SUCCESS",
          "V-SUCCESS"
        ]
      },
      {
        "id": "ST-FAILURE",
        "role": "failure",
        "important": true,
        "sourceRefs": [
          "ST-FAILURE",
          "SCR-FAILURE",
          "M-UNDO",
          "M-RETRY"
        ]
      },
      {
        "id": "ST-ERROR",
        "role": "error",
        "important": true,
        "sourceRefs": [
          "ST-ERROR",
          "UI-ERROR-SHEET"
        ]
      },
      {
        "id": "ST-LOADING",
        "role": "loading",
        "important": false,
        "sourceRefs": [
          "ST-LOADING",
          "ENV-GALLERY-ARCHIVE"
        ]
      },
      {
        "id": "ST-DISABLED",
        "role": "disabled",
        "important": false,
        "sourceRefs": [
          "ST-DISABLED",
          "E-SHUTTER",
          "UI-PRIMARY"
        ]
      },
      {
        "id": "ST-INTERRUPTED",
        "role": "interrupted",
        "important": false,
        "sourceRefs": [
          "ST-INTERRUPTED",
          "ST-DRAGGING",
          "ST-SETTLING",
          "ST-PAUSED"
        ]
      }
    ],
    "mechanics": [
      {
        "id": "M-PICK",
        "sourceRefs": [
          "M-PICK"
        ]
      },
      {
        "id": "M-DRAG",
        "sourceRefs": [
          "M-DRAG"
        ]
      },
      {
        "id": "M-PREVIEW",
        "sourceRefs": [
          "M-PREVIEW"
        ]
      },
      {
        "id": "M-SWAP",
        "sourceRefs": [
          "M-SWAP"
        ]
      },
      {
        "id": "M-SETTLE",
        "sourceRefs": [
          "M-SETTLE"
        ]
      },
      {
        "id": "M-CHECK",
        "sourceRefs": [
          "M-CHECK"
        ]
      },
      {
        "id": "M-UNDO",
        "sourceRefs": [
          "M-UNDO"
        ]
      },
      {
        "id": "M-RETRY",
        "sourceRefs": [
          "M-RETRY"
        ]
      }
    ],
    "entities": [
      {
        "id": "E-BEAM",
        "sourceRefs": [
          "E-BEAM"
        ]
      },
      {
        "id": "E-PIVOT",
        "sourceRefs": [
          "E-PIVOT"
        ]
      },
      {
        "id": "E-HOOK",
        "sourceRefs": [
          "E-HOOK"
        ]
      },
      {
        "id": "E-WEIGHT-1",
        "sourceRefs": [
          "E-WEIGHT-1"
        ]
      },
      {
        "id": "E-WEIGHT-2",
        "sourceRefs": [
          "E-WEIGHT-2"
        ]
      },
      {
        "id": "E-WEIGHT-3",
        "sourceRefs": [
          "E-WEIGHT-3"
        ]
      },
      {
        "id": "E-SHUTTER",
        "sourceRefs": [
          "E-SHUTTER"
        ]
      },
      {
        "id": "E-ONEWAY",
        "sourceRefs": [
          "E-ONEWAY"
        ]
      },
      {
        "id": "E-GLASS",
        "sourceRefs": [
          "E-GLASS"
        ]
      },
      {
        "id": "E-TARGET-ARC",
        "sourceRefs": [
          "E-TARGET-ARC"
        ]
      },
      {
        "id": "E-BELL",
        "sourceRefs": [
          "E-BELL"
        ]
      },
      {
        "id": "E-TRAY",
        "sourceRefs": [
          "E-TRAY"
        ]
      }
    ],
    "environments": [
      {
        "id": "ENV-SCULPTURE-GALLERY",
        "sourceRefs": [
          "ENV-SCULPTURE-GALLERY"
        ]
      },
      {
        "id": "ENV-GALLERY-ARCHIVE",
        "sourceRefs": [
          "ENV-GALLERY-ARCHIVE"
        ]
      },
      {
        "id": "ENV-ARCHITECTURAL-BACKDROP",
        "sourceRefs": [
          "ENV-ARCHITECTURAL-BACKDROP"
        ]
      }
    ],
    "ui": [
      {
        "id": "UI-TARGET-CARD",
        "sourceRefs": [
          "UI-TARGET-CARD"
        ]
      },
      {
        "id": "UI-MOVE-COUNT",
        "sourceRefs": [
          "UI-MOVE-COUNT"
        ]
      },
      {
        "id": "UI-WEIGHT-TRAY",
        "sourceRefs": [
          "UI-WEIGHT-TRAY"
        ]
      },
      {
        "id": "UI-HOOK-BADGE",
        "sourceRefs": [
          "UI-HOOK-BADGE"
        ]
      },
      {
        "id": "UI-PRIMARY",
        "sourceRefs": [
          "UI-PRIMARY"
        ]
      },
      {
        "id": "UI-FROST-SHEET",
        "sourceRefs": [
          "UI-FROST-SHEET"
        ]
      },
      {
        "id": "UI-LEVEL-PATH",
        "sourceRefs": [
          "UI-LEVEL-PATH"
        ]
      },
      {
        "id": "UI-HOW-TO",
        "sourceRefs": [
          "UI-HOW-TO"
        ]
      },
      {
        "id": "UI-SETTING-ROW",
        "sourceRefs": [
          "UI-SETTING-ROW"
        ]
      },
      {
        "id": "UI-ERROR-SHEET",
        "sourceRefs": [
          "UI-ERROR-SHEET"
        ]
      },
      {
        "id": "UI-LEGAL-LIST",
        "sourceRefs": [
          "UI-LEGAL-LIST"
        ]
      }
    ],
    "accessibility": [
      {
        "id": "A-COLOR",
        "sourceRefs": [
          "A-COLOR"
        ]
      },
      {
        "id": "A-MOTION",
        "sourceRefs": [
          "A-MOTION"
        ]
      },
      {
        "id": "A-TEXT",
        "sourceRefs": [
          "A-TEXT"
        ]
      },
      {
        "id": "A-HAPTIC",
        "sourceRefs": [
          "A-HAPTIC"
        ]
      },
      {
        "id": "A-READER",
        "sourceRefs": [
          "A-READER"
        ]
      },
      {
        "id": "A-TAP",
        "sourceRefs": [
          "A-TAP"
        ]
      }
    ],
    "vfx": [
      {
        "id": "V-GHOST",
        "sourceRefs": [
          "V-GHOST"
        ]
      },
      {
        "id": "V-HOOK-CHANGE",
        "sourceRefs": [
          "V-HOOK-CHANGE"
        ]
      },
      {
        "id": "V-BOUNCE",
        "sourceRefs": [
          "V-BOUNCE"
        ]
      },
      {
        "id": "V-TARGET-LOCK",
        "sourceRefs": [
          "V-TARGET-LOCK"
        ]
      },
      {
        "id": "V-SETTLE",
        "sourceRefs": [
          "V-SETTLE"
        ]
      },
      {
        "id": "V-SUCCESS",
        "sourceRefs": [
          "V-SUCCESS"
        ]
      }
    ]
  },
  "logicalLayouts": {
    "portrait": {
      "width": 360,
      "height": 800,
      "aspectRatio": "9:20"
    }
  },
  "supportedOrientations": [
    "portrait"
  ],
  "assets": [
    {
      "id": "ART-GAMEPLAY",
      "standalone": true,
      "orientation": "portrait",
      "dimensions": {
        "width": 360,
        "height": 800
      },
      "prompt": "image-prompts/gameplay-active.txt",
      "output": "art-bible/gameplay-active.png",
      "references": [],
      "sourceRefs": [
        "SCR-GAMEPLAY",
        "ST-PREVIEW-SAFE",
        "M-PICK",
        "M-DRAG",
        "M-PREVIEW",
        "M-SWAP",
        "M-SETTLE",
        "M-CHECK",
        "M-UNDO",
        "M-RETRY",
        "E-BEAM",
        "E-PIVOT",
        "E-HOOK",
        "E-WEIGHT-1",
        "E-WEIGHT-2",
        "E-WEIGHT-3",
        "E-SHUTTER",
        "E-ONEWAY",
        "E-GLASS",
        "E-TARGET-ARC",
        "E-BELL",
        "E-TRAY",
        "ENV-SCULPTURE-GALLERY",
        "UI-TARGET-CARD",
        "UI-MOVE-COUNT",
        "UI-WEIGHT-TRAY",
        "UI-HOOK-BADGE",
        "UI-PRIMARY",
        "A-COLOR",
        "A-MOTION",
        "A-HAPTIC",
        "A-READER",
        "A-TAP",
        "V-GHOST",
        "V-HOOK-CHANGE",
        "V-BOUNCE",
        "V-TARGET-LOCK",
        "V-SETTLE",
        "V-SUCCESS"
      ],
      "covers": {
        "screens": [
          "SCR-GAMEPLAY"
        ],
        "states": [
          "ST-PREVIEW-SAFE"
        ],
        "mechanics": [
          "M-PICK",
          "M-DRAG",
          "M-PREVIEW",
          "M-SWAP",
          "M-SETTLE",
          "M-CHECK",
          "M-UNDO",
          "M-RETRY"
        ],
        "entities": [
          "E-BEAM",
          "E-PIVOT",
          "E-HOOK",
          "E-WEIGHT-1",
          "E-WEIGHT-2",
          "E-WEIGHT-3",
          "E-SHUTTER",
          "E-ONEWAY",
          "E-GLASS",
          "E-TARGET-ARC",
          "E-BELL",
          "E-TRAY"
        ],
        "environments": [
          "ENV-SCULPTURE-GALLERY"
        ],
        "ui": [
          "UI-TARGET-CARD",
          "UI-MOVE-COUNT",
          "UI-WEIGHT-TRAY",
          "UI-HOOK-BADGE",
          "UI-PRIMARY"
        ],
        "accessibility": [
          "A-COLOR",
          "A-MOTION",
          "A-HAPTIC",
          "A-READER",
          "A-TAP"
        ],
        "vfx": [
          "V-GHOST",
          "V-HOOK-CHANGE",
          "V-BOUNCE",
          "V-TARGET-LOCK",
          "V-SETTLE",
          "V-SUCCESS"
        ]
      },
      "provenance": {
        "createdBy": "OpenAI gpt-image-2 via Codex",
        "createdAt": "2026-08-21T00:29:06.575Z"
      },
      "machineQa": {
        "status": "passed",
        "checks": [
          "valid PNG",
          "360x800 portrait",
          "realistic final visually inspected",
          "v0.4 source refs bound",
          "rejected variants excluded"
        ]
      },
      "master": true
    },
    {
      "id": "ART-GAMEPLAY-STATES",
      "standalone": false,
      "orientation": "portrait",
      "dimensions": {
        "width": 360,
        "height": 800
      },
      "prompt": "image-prompts/gameplay-state-matrix.txt",
      "output": "art-bible/gameplay-state-matrix.png",
      "references": [
        "art-bible/gameplay-active.png"
      ],
      "sourceRefs": [
        "ST-SELECTED",
        "ST-DRAGGING",
        "ST-PREVIEW-BLOCKED",
        "ST-SETTLING",
        "ST-HOOK-REVEAL",
        "ST-TARGET-MATCH",
        "ST-LOADING",
        "ST-DISABLED",
        "ST-INTERRUPTED"
      ],
      "covers": {
        "screens": [],
        "states": [
          "ST-SELECTED",
          "ST-DRAGGING",
          "ST-PREVIEW-BLOCKED",
          "ST-SETTLING",
          "ST-HOOK-REVEAL",
          "ST-TARGET-MATCH",
          "ST-LOADING",
          "ST-DISABLED",
          "ST-INTERRUPTED"
        ],
        "mechanics": [],
        "entities": [],
        "environments": [],
        "ui": [],
        "accessibility": [],
        "vfx": []
      },
      "provenance": {
        "createdBy": "OpenAI gpt-image-2 via Codex",
        "createdAt": "2026-08-21T00:29:06.575Z"
      },
      "machineQa": {
        "status": "passed",
        "checks": [
          "valid PNG",
          "360x800 portrait",
          "realistic final visually inspected",
          "v0.4 source refs bound",
          "rejected variants excluded"
        ]
      }
    },
    {
      "id": "ART-ONBOARDING",
      "standalone": true,
      "orientation": "portrait",
      "dimensions": {
        "width": 360,
        "height": 800
      },
      "prompt": "image-prompts/onboarding.txt",
      "output": "art-bible/onboarding.png",
      "references": [
        "art-bible/gameplay-active.png"
      ],
      "sourceRefs": [
        "SCR-ONBOARDING",
        "ST-FRESH",
        "UI-HOW-TO"
      ],
      "covers": {
        "screens": [
          "SCR-ONBOARDING"
        ],
        "states": [
          "ST-FRESH"
        ],
        "mechanics": [],
        "entities": [],
        "environments": [],
        "ui": [
          "UI-HOW-TO"
        ],
        "accessibility": [],
        "vfx": []
      },
      "provenance": {
        "createdBy": "OpenAI gpt-image-2 via Codex",
        "createdAt": "2026-08-21T00:29:06.575Z"
      },
      "machineQa": {
        "status": "passed",
        "checks": [
          "valid PNG",
          "360x800 portrait",
          "realistic final visually inspected",
          "v0.4 source refs bound",
          "rejected variants excluded"
        ]
      }
    },
    {
      "id": "ART-HOME",
      "standalone": true,
      "orientation": "portrait",
      "dimensions": {
        "width": 360,
        "height": 800
      },
      "prompt": "image-prompts/home.txt",
      "output": "art-bible/home.png",
      "references": [
        "art-bible/gameplay-active.png"
      ],
      "sourceRefs": [
        "SCR-HOME",
        "ENV-GALLERY-ARCHIVE",
        "ENV-ARCHITECTURAL-BACKDROP",
        "UI-LEVEL-PATH"
      ],
      "covers": {
        "screens": [
          "SCR-HOME"
        ],
        "states": [],
        "mechanics": [],
        "entities": [],
        "environments": [
          "ENV-GALLERY-ARCHIVE",
          "ENV-ARCHITECTURAL-BACKDROP"
        ],
        "ui": [
          "UI-LEVEL-PATH"
        ],
        "accessibility": [],
        "vfx": []
      },
      "provenance": {
        "createdBy": "OpenAI gpt-image-2 via Codex",
        "createdAt": "2026-08-21T00:29:06.575Z"
      },
      "machineQa": {
        "status": "passed",
        "checks": [
          "valid PNG",
          "360x800 portrait",
          "realistic final visually inspected",
          "v0.4 source refs bound",
          "rejected variants excluded"
        ]
      }
    },
    {
      "id": "ART-PAUSE",
      "standalone": true,
      "orientation": "portrait",
      "dimensions": {
        "width": 360,
        "height": 800
      },
      "prompt": "image-prompts/pause.txt",
      "output": "art-bible/pause.png",
      "references": [
        "art-bible/gameplay-active.png"
      ],
      "sourceRefs": [
        "SCR-PAUSE",
        "ST-PAUSED",
        "UI-FROST-SHEET"
      ],
      "covers": {
        "screens": [
          "SCR-PAUSE"
        ],
        "states": [
          "ST-PAUSED"
        ],
        "mechanics": [],
        "entities": [],
        "environments": [],
        "ui": [
          "UI-FROST-SHEET"
        ],
        "accessibility": [],
        "vfx": []
      },
      "provenance": {
        "createdBy": "OpenAI gpt-image-2 via Codex",
        "createdAt": "2026-08-21T00:29:06.575Z"
      },
      "machineQa": {
        "status": "passed",
        "checks": [
          "valid PNG",
          "360x800 portrait",
          "realistic final visually inspected",
          "v0.4 source refs bound",
          "rejected variants excluded"
        ]
      }
    },
    {
      "id": "ART-SUCCESS",
      "standalone": true,
      "orientation": "portrait",
      "dimensions": {
        "width": 360,
        "height": 800
      },
      "prompt": "image-prompts/success.txt",
      "output": "art-bible/success.png",
      "references": [
        "art-bible/gameplay-active.png"
      ],
      "sourceRefs": [
        "SCR-SUCCESS",
        "ST-SUCCESS"
      ],
      "covers": {
        "screens": [
          "SCR-SUCCESS"
        ],
        "states": [
          "ST-SUCCESS"
        ],
        "mechanics": [],
        "entities": [],
        "environments": [],
        "ui": [],
        "accessibility": [],
        "vfx": []
      },
      "provenance": {
        "createdBy": "OpenAI gpt-image-2 via Codex",
        "createdAt": "2026-08-21T00:29:06.575Z"
      },
      "machineQa": {
        "status": "passed",
        "checks": [
          "valid PNG",
          "360x800 portrait",
          "realistic final visually inspected",
          "v0.4 source refs bound",
          "rejected variants excluded"
        ]
      }
    },
    {
      "id": "ART-FAILURE",
      "standalone": true,
      "orientation": "portrait",
      "dimensions": {
        "width": 360,
        "height": 800
      },
      "prompt": "image-prompts/failure.txt",
      "output": "art-bible/failure.png",
      "references": [
        "art-bible/gameplay-active.png"
      ],
      "sourceRefs": [
        "SCR-FAILURE",
        "ST-FAILURE"
      ],
      "covers": {
        "screens": [
          "SCR-FAILURE"
        ],
        "states": [
          "ST-FAILURE"
        ],
        "mechanics": [],
        "entities": [],
        "environments": [],
        "ui": [],
        "accessibility": [],
        "vfx": []
      },
      "provenance": {
        "createdBy": "OpenAI gpt-image-2 via Codex",
        "createdAt": "2026-08-21T00:29:06.575Z"
      },
      "machineQa": {
        "status": "passed",
        "checks": [
          "valid PNG",
          "360x800 portrait",
          "realistic final visually inspected",
          "v0.4 source refs bound",
          "rejected variants excluded"
        ]
      }
    },
    {
      "id": "ART-SETTINGS",
      "standalone": true,
      "orientation": "portrait",
      "dimensions": {
        "width": 360,
        "height": 800
      },
      "prompt": "image-prompts/settings.txt",
      "output": "art-bible/settings.png",
      "references": [
        "art-bible/gameplay-active.png"
      ],
      "sourceRefs": [
        "SCR-SETTINGS",
        "UI-SETTING-ROW",
        "A-TEXT"
      ],
      "covers": {
        "screens": [
          "SCR-SETTINGS"
        ],
        "states": [],
        "mechanics": [],
        "entities": [],
        "environments": [],
        "ui": [
          "UI-SETTING-ROW"
        ],
        "accessibility": [
          "A-TEXT"
        ],
        "vfx": []
      },
      "provenance": {
        "createdBy": "OpenAI gpt-image-2 via Codex",
        "createdAt": "2026-08-21T00:29:06.575Z"
      },
      "machineQa": {
        "status": "passed",
        "checks": [
          "valid PNG",
          "360x800 portrait",
          "realistic final visually inspected",
          "v0.4 source refs bound",
          "rejected variants excluded"
        ]
      }
    },
    {
      "id": "ART-ACCESSIBILITY",
      "standalone": true,
      "orientation": "portrait",
      "dimensions": {
        "width": 360,
        "height": 800
      },
      "prompt": "image-prompts/accessibility.txt",
      "output": "art-bible/accessibility.png",
      "references": [
        "art-bible/gameplay-active.png"
      ],
      "sourceRefs": [
        "SCR-ACCESSIBILITY",
        "A-COLOR",
        "A-MOTION",
        "A-TEXT",
        "A-HAPTIC",
        "A-READER",
        "A-TAP"
      ],
      "covers": {
        "screens": [
          "SCR-ACCESSIBILITY"
        ],
        "states": [],
        "mechanics": [],
        "entities": [],
        "environments": [],
        "ui": [],
        "accessibility": [
          "A-COLOR",
          "A-MOTION",
          "A-TEXT",
          "A-HAPTIC",
          "A-READER",
          "A-TAP"
        ],
        "vfx": []
      },
      "provenance": {
        "createdBy": "OpenAI gpt-image-2 via Codex",
        "createdAt": "2026-08-21T00:29:06.575Z"
      },
      "machineQa": {
        "status": "passed",
        "checks": [
          "valid PNG",
          "360x800 portrait",
          "realistic final visually inspected",
          "v0.4 source refs bound",
          "rejected variants excluded"
        ]
      }
    },
    {
      "id": "ART-LEGAL",
      "standalone": true,
      "orientation": "portrait",
      "dimensions": {
        "width": 360,
        "height": 800
      },
      "prompt": "image-prompts/legal-error.txt",
      "output": "art-bible/legal-error.png",
      "references": [
        "art-bible/gameplay-active.png"
      ],
      "sourceRefs": [
        "SCR-LEGAL",
        "ST-ERROR",
        "UI-ERROR-SHEET",
        "UI-LEGAL-LIST"
      ],
      "covers": {
        "screens": [
          "SCR-LEGAL"
        ],
        "states": [
          "ST-ERROR"
        ],
        "mechanics": [],
        "entities": [],
        "environments": [],
        "ui": [
          "UI-ERROR-SHEET",
          "UI-LEGAL-LIST"
        ],
        "accessibility": [],
        "vfx": []
      },
      "provenance": {
        "createdBy": "OpenAI gpt-image-2 via Codex",
        "createdAt": "2026-08-21T00:29:06.575Z"
      },
      "machineQa": {
        "status": "passed",
        "checks": [
          "valid PNG",
          "360x800 portrait",
          "realistic final visually inspected",
          "v0.4 source refs bound",
          "rejected variants excluded"
        ]
      }
    }
  ],
  "visualBoards": [
    {
      "id": "BOARD-VISUAL-BLUEPRINT",
      "role": "generation-blueprint",
      "output": "art-bible/visual-blueprint.png",
      "dimensions": {
        "width": 2048,
        "height": 1152
      },
      "assetIds": [
        "ART-GAMEPLAY"
      ],
      "sourceRefs": [
        "M-PREVIEW",
        "M-SWAP",
        "P-ORDER",
        "E-WEIGHT-1",
        "E-HOOK",
        "UI-TARGET-CARD",
        "V-GHOST"
      ],
      "provenance": {
        "createdBy": "deterministic board compositor",
        "createdAt": "2026-08-21T00:29:06.575Z"
      },
      "machineQa": {
        "status": "passed",
        "checks": [
          "valid PNG",
          "2048x1152 exact dimensions",
          "realistic gameplay master included",
          "GDD v0.4 structural copy"
        ]
      }
    },
    {
      "id": "BOARD-IMPLEMENTATION-OVERVIEW",
      "role": "implementation-overview",
      "output": "art-bible/implementation-board.png",
      "dimensions": {
        "width": 3840,
        "height": 2160
      },
      "assetIds": [
        "ART-GAMEPLAY",
        "ART-GAMEPLAY-STATES",
        "ART-ONBOARDING",
        "ART-HOME",
        "ART-PAUSE",
        "ART-SUCCESS",
        "ART-FAILURE",
        "ART-SETTINGS",
        "ART-ACCESSIBILITY",
        "ART-LEGAL"
      ],
      "sourceRefs": [
        "M-PICK",
        "M-PREVIEW",
        "M-SWAP",
        "M-SETTLE",
        "P-ORDER",
        "M-UNDO",
        "A-COLOR",
        "A-MOTION",
        "A-TEXT",
        "A-READER"
      ],
      "provenance": {
        "createdBy": "deterministic board compositor",
        "createdAt": "2026-08-21T00:29:06.575Z"
      },
      "machineQa": {
        "status": "passed",
        "checks": [
          "valid PNG",
          "3840x2160 exact dimensions",
          "all ten realistic assets represented",
          "deterministic text legible at full resolution"
        ]
      }
    }
  ]
}
```

### validation/machine-validation.json

URL: https://autechsolutions-game-factory.pages.dev/ideas/counterweight-choir/files/validation/machine-validation.json
Type: application/json, 196 bytes

```json
{
  "version": 1,
  "validatorVersion": 3,
  "status": "passed",
  "packageHash": "2e2eb1c414c818c59aee88fb71dd127909bcfcf6f3fccbeff59f09b64d91087a",
  "validatedAt": "2026-08-21T00:30:09.086Z"
}
```

### validation/visual-qa.json

URL: https://autechsolutions-game-factory.pages.dev/ideas/counterweight-choir/files/validation/visual-qa.json
Type: application/json, 149 bytes

```json
{
  "version": 1,
  "status": "pending",
  "packageHash": null,
  "reviewedBy": null,
  "reviewerRole": null,
  "reviewedAt": null,
  "checks": {}
}
```
