Files
aetherbound-guild/docs/runtime/FG2_PRODUCTION_VERTICAL_SLICE_CONTRACT.md
T

8.1 KiB

FG-2 Production Vertical Slice Contract

Revision: fg2-production-vertical-slice-r1 Status: FROZEN

Fixed Gameplay Authority

The slice consumes one valid P10.0 CTR-R1-01 Market 1 fixture and its real Market, deployment, battle, result, recovery and Save-v6 services. It may adapt events for presentation but may not change any generated offer, cost, route, target, tick, damage, healing, casualty, reward, receipt, checksum or save transition.

The success path uses the disclosed low-risk Market-1 route and the fixture's automatic or player-confirmed order. Its generated waves are exactly EN-R1-09 then EN-R1-08. Order reversal in this fixed Company is not a declared outcome counterfactual: probe evidence shows both orders win.

The failure/recovery presentation fixture begins from a separately named, valid Save-v6 Market-1 snapshot with a wounded Company and a disclosed high-risk route. Real P10.0 battle and settlement authority must produce the defeat, permanent casualty, bounded recovery and unchanged board. No test or controller may overwrite a terminal result to manufacture presentation.

Canonical Runtime Boundary

New source belongs under runtime/campaign/, not a new phase-numbered product simulator. The boundary has four responsibilities:

  1. adapt a versioned canonical state snapshot into view state;
  2. adapt authoritative gameplay events into stable presentation events;
  3. own input/navigation/presentation without owning gameplay mutation; and
  4. resolve visual/audio assets by stable gameplay and presentation IDs.

P10.0 remains the first adapter. Later P10.1-P10.3 adapters may join only after this slice proves the interface. Compatibility code may translate fields; it may not duplicate battle, settlement or persistence authority.

Pixel Presentation Contract

The latest workspace contract supersedes the old non-pixel production assumption. The retained Japanese fantasy direction becomes genuine pixel art:

  • logical pixel scale is selected per viewport as the largest integer that leaves at least a 320x180 world window;
  • reference 844x390 renders a 422x195 logical world at 2x nearest;
  • 760x360 renders 380x180 at 2x; 1280x720 renders 320x180 at 4x;
  • non-text layers use integer logical positions, nearest filtering, hard clusters and a bounded palette; and
  • native engine text is overlaid after world scaling and is never baked into image assets.

High-resolution accepted images may control identity, silhouette, material or composition as references. Downscaling them, applying a pixelation filter or turning on nearest filtering does not create an accepted runtime asset.

Palette And Shape

  • Ally: navy, cool steel, white cloth and controlled gold; upright shield/tool silhouettes and stable foot baselines.
  • Scribe: violet/charcoal kite robe, bright chalk-wind tool and a readable front-to-rear line gesture. Sprout: low mineral plant silhouette with three numbered forward-growth stages. Neither threat relies on hue alone.
  • World: cool green land, blue water channel, pale mineral structures, dark rupture and warm timber machinery.
  • UI: black/ink edge, cool paper-white type, gold commit, cyan information, jade recovery and red plus shape/label for irreversible loss.

No beige parchment wall, dark dashboard, gradient wash, decorative particle haze, nested cards, tiny actors or full-screen effect may replace the world.

Layer Contract

The battle scene retains separate logical-grid layers:

  1. background sky, terraces and distant mills;
  2. midground channel, bridge, route machine and rupture;
  3. foreground lane, contact marks and route edge;
  4. allied and enemy actor layers with independent anchors;
  5. props and state markers;
  6. actor-local VFX and signed values;
  7. edge-docked native UI and text.

Market and result/recovery states reuse the same world layers and change physical props, actor arrangement and route markers instead of replacing the scene with generic panels.

Motion-State Table

Entity/event Anticipation Contact/commit Recovery/final Maximum Reduced/low-power
Aegis idle 2-3 frame breathing/weight shift none exact baseline 900 ms loop static chosen idle plus blink notch
Company advance lean and first step route-center arrival settle into ordered line 500 ms short dissolve to final positions
Aegis attack weapon draw-back one contact frame and actor-local trail return behind shield 420 ms anticipation, impact notch, final pose
Aegis guard shield lift guarded target/mitigation notch shield settle 360 ms static shield-up plus signed mitigation
Scribe entry robe compressed against wind route-line contact planted draw stance 520 ms start/end displacement only
Scribe draw chalk tool lift dotted front-to-rear line commits release and replant 440 ms line notch plus final pose
Sprout growth low crystal bud one numbered forward stage planted next footprint 500 ms direct stage swap with number
Damage/mitigation source-target line signed value, 35-70 ms hit pause fade at actor 600 ms, four values no shake/flash; outline and value remain
Fallen loss forecast persists zero-HP collapse removed gap and returned item 700 ms immediate fallen silhouette then gap
Victory/recovery last threat resolves result seal and changed world prop stable Market/recovery action 900 ms static state swap with text/value delta

Animation manifests own rectangles, timing, loops, pivots and fallbacks. Detached VFX never share the body atlas. Every transient returns to rest and is capped under repeated automatic events.

Asset Contract

The bounded slice inventory is:

  • FG2-BG-WINDGLASS-01: editable logical-grid environment layers;
  • FG2-ACTOR-PFB01-01: generated Aegis identity anchor and accepted motion;
  • FG2-ENEMY-ENR109-01: Crosswind Scribe anchor and accepted motion;
  • FG2-ENEMY-ENR108-01: Glassroot Sprout stages and accepted motion;
  • FG2-UI-CHROME-01: edge rails, action plates, markers and icons;
  • FG2-VFX-01: contact, guard, damage, casualty, victory and recovery set; and
  • FG2-AUDIO-01: one music/ambience package plus bounded semantic cues.

Every asset record stores source type, reference ownership, provider/task when used, cost, raw/processed paths, deterministic command, dimensions, palette, pivot, hash, import, integration, runtime visibility and agent/human states.

Audio Event Map

ID Authoritative boundary Priority Required read
FG2-SFX-COMMIT valid route/deployment commit P2 dry timber-metal lock
FG2-SFX-FORECAST enemy attack telegraph begins P1 short mineral rise
FG2-SFX-IMPACT damage event commits P4 restrained metal/body impact
FG2-SFX-GUARD mitigation commits P3 shielded double-layer hit
FG2-SFX-CASUALTY permanent Fallen state commits P0 low break plus air withdrawal
FG2-SFX-VICTORY terminal victory commits P2 two-note resolved work signal
FG2-SFX-RECOVERY bounded recovery commits P2 repaired mechanism latch
FG2-AMB-WINDGLASS route scene active P6 wind, timber and mineral bed
FG2-MUS-WINDGLASS route/battle state P6 sparse original route/battle loop

Routine impact concurrency is six globally and once per source/material per 90 ms. Forecast, casualty and commits duck routine impacts. Mute and low-power change playback only, never event timing or result.

Evidence Boundary

The slice requires focused gameplay-preservation tests, adapter/event tests, asset/audio validators, parsed mobile input, native-size normal-render states, machine audio checks and one fixed recording. Agent inspection can close only agent_visual_reviewed and machine_audio_checked.

The H5 checkpoint is review transport, not release evidence. Owner visual, motion, comprehension, fun and listening judgments remain open until the Owner reviews the exact H5/source. Device, packaging, signing, store and release are outside this contract.