BY SHANE TYAS · CODING WITH GPT-5.6 SOL
© 2026 SHANE TYAS · ASHLIGHT SYSTEMS™ + ASSOCIATED ASHLIGHT PROJECTS · ALL RIGHTS RESERVED ·
BUILD MANIFEST · INITIALISING
Targeting solution resolving.
This console documents the actual running application rather than becoming another gameplay authority. Lab authors draft receipts and isolated tests; Frontier Menu → New Game is the only Arcade boot path. AshLite supplies the shared FSM, tick, bus, registry, verbs and viewport contract behind both faces.
~ toggles this console from Menu, Lab or Arcade. It is an overlay, not an application FSM state.
ESC closes the console first. The underlying mode remains untouched.
Asteroid authoring stays in Lab. Game-specific developer tuning now lives in the ARCADE GAME tab; Tilde SETTINGS still controls only the console itself.
These are game-facing developer controls rather than asteroid-authoring controls. Changes live-preview the current Arcade run and are also captured into the next detached Arcade receipt.
U acquires a prewarmed Compact Drone immediately while Arcade is running. The UFO remains enabled for special waves by default. This tab is intended to become the per-game developer surface as other Ashlight game modes acquire their own settings.
Ion fire defaults to a controlled intermittent burst rather than an uninterrupted hose. AUTO remains available at a bounded cadence.
The player ship now reads one authoritative ShipPerformanceReceiptV1. The meter scale is normalized to 100 steps for future Shop/upgrades, while the engineering values beneath it remain the numbers used by flight. The amber marker is the current prototype craft limit for permanent purchases; Tilde can deliberately exceed it for development testing.
BASE + PURCHASED + MODULE + TEMPORARY = EFFECTIVE. Permanent Shop purchases should stop at the craft-cap marker. Installed modules may modify the effective value. Temporary wave effects such as the earmarked Engine Overdrive / Speed Boost may exceed the permanent craft cap but must still remain inside the system maximum.
Developer-only: passive flight-assist damping and presentation scale remain internal rather than becoming player Shop stats.
TRACE is the player-facing exposure window for the Encounter Director. Activity raises TRACE, 100% authorises an intercept receipt, and the reserve/pool path decides how quickly a real hostile can answer. This drawer documents the live rules for user, agent and developer audiences without becoming another gameplay authority.
Cyan 0–79% means you are still under the critical exposure band. Amber 80–99% means you are nearing authorisation. At 100% the Director may queue a hostile intercept, then TRACE drops to the post-dispatch floor rather than staying full.
Deliberate firing is quieter: single Ion shots add no TRACE; one +0.55 increment is charged only on every third shot in one continuous hold. Root asteroid breakup is always detectable; child/fragment breakup is usually quiet, with only an occasional small signature from a deterministic roll.
Single/tapped shots are free. While one mouse hold remains continuous, every third successful Ion shot adds one +0.55 TRACE increment.
Primary/root asteroid fracture is always detectable and raises TRACE directly.
Small lineage bodies usually stay quiet. A cheap deterministic roll occasionally emits a minor signature so the field remains slightly unpredictable.
Player warp remains loud and immediately meaningful to the Director.
Ore pickup still leaks a small recoverable signal.
Killing a hostile still tells the system something significant happened there.
Play slower to stay quiet. Tap or pulse-fire the Ion Cannon, mine the big body when necessary, and treat amber TRACE as an exposure warning that you still might recover from before contact.
TRACE is not a cosmetic bar. It is the exposed tip of a receipt-backed orchestration path: event → trace ledger → threshold queue → pool acquisition → active hostile state.
Manual summons and threshold summons should converge onto the same downstream path where possible. The pool is population state, not a spawn illusion; documentation in this drawer should remain truthful to runtime ownership.
—
[weapon:fired] ─┐
[asteroid:split] ─┼─> EncounterDirector.addTrace(amount,cause,meta)
[asteroid:destroyed] ─┤
[ship:warp:start] ───┤
[pickup:collected] ──┤
[ufo:destroyed] ─────┘
│
├─ if trace < threshold → HUD only
├─ if trace ≥ threshold → Queue EncounterReceipt
├─ pending[0] + cooldown clear + active < cap
└─ acquire ready reserve slot → warp in UFO actorThe reserve is authoritative runtime population, not a spawn illusion. Geometry, materials, shields and local light rigs are constructed and GPU-warmed before play. READY actors remain hidden and cost no scene draw calls; a summon borrows an exact existing slot and only changes state, transform, visibility and entry FX.
erDiagram
UFO_BUILD_RECEIPT ||--o{ ENEMY_RESERVE_SLOT : instantiates
ENEMY_RESERVE ||--o{ ENEMY_RESERVE_SLOT : contains
ENEMY_RESERVE_SLOT ||--|| ENEMY_ACTOR : owns
ENEMY_ACTOR ||--|| SHIELD_STATE : carries
ENEMY_ACTOR ||--o{ LOCAL_LIGHT : carries
ENEMY_ACTOR ||--o{ WEAPON_HARDPOINT : exposes
UFO_WARP_RESERVE ||--o{ WARP_FX_SLOT : contains
WAVE_PLAN o|--o{ ENEMY_RESERVE_SLOT : assigns
INPUT_REQUEST o|--|| ENEMY_RESERVE : acquires_from
ENEMY_ACTOR ||--o| TARGET_STATE : tracks
ENEMY_ACTOR ||--|| REACTION_PROFILE : references
These controls author the presentation transform used by every reserve instance. The source recipe is never deployed directly; PREP 1/2/3 are the only live actors.
Canonical TIGHT_TRI_FACETED / FACETED_LOW gold-disc enemy. 3-hit distortion shield, palette warp signature and the proven R10R13 reserve contract. This live S01 carries no equator ring.
Green cards are functioning in this build. Amber cards expose a real hook but intentionally have little or nothing bound to it yet. Blue cards are forward-facing destinations, not claims about the current runtime.
Closed procedural asteroid bodies driven by surfaced build receipts, material families and deterministic seeds.
Lab Draft and Arcade Active Config remain separate. A new run snapshots the draft only through the Frontier Menu boot path.
Menu, Lab and Arcade transitions are explicit. The Tilde console intentionally stays outside the FSM as a developer overlay.
Ordered systems share one authoritative animation tick and an init/tick/destroy-compatible contract.
Systems publish facts with unsubscribe-safe listeners. Event history is developer-configurable and bounded.
Input and UI can request intent through named verbs rather than directly owning system implementation.
Player, asteroid identities and applied configuration can be inspected without converting every transient effect into ECS paperwork.
Registry records now expose owner, created/updated metadata and get/has/list/query surfaces. Plugin definitions are themselves inspectable identities.
The rendered screen corners define the X/Z playfield used by spawn, wrap, reflect, warp and safe respawn.
Arcade remains a clean game face while Lab owns authoring, stress tests, morphology and engine inspection.
A real interception/composition chain exists, currently empty. Validation, profiling, permissions or recipe binding can join when needed.
Capability modules now register manifests, resolve dependencies, receive scoped ctx, and own the systems/verbs/services they attach.
Generic runtime asset definitions now separate Registry identity from owned GLB/texture/atlas resources. Self-contained GLB, image and atlas JSON imports are supported.
Geometry and render-state identity are separate. Natural family textures and radar/mineral/thermal/structural/holo surfaces consume stable asset IDs and receipts.
This console can emit a current architecture/capability handover so another coding agent starts from actual runtime contracts.
Cached import, transform receipt, clone/instance policy, collider proxy and deterministic disposal.
WAVE BEGIN → ACTIVE → CLEAR → INTERMISSION, consuming game settings without author UI leakage.
Mouse-controlled independent sector aim/lock space while ship movement continues to solve local hazards.
Special-wave enemy actor with imported GLB auto-detect / procedural fallback, orbit-hunt motion, tri-bolt fire, teleport cycle and hull points.
The first EXTENSION should be GLB Lite: cache, asset receipts, clone/instance policy and deterministic disposal through the Plugin Manager.
Human/agent-readable intent compiles into registered verbs rather than reaching directly into Three.js internals.
2–5 minute scripted macro flight with rails, barrel-roll beats, slow motion, boosts and surface-skimming encounters.
Bring sensors, sectors, streaming, physics and meta layers back one measured subsystem at a time.
The manager is deliberately smaller than the old Ashlight Engine PluginManager, but it implements the same important contract: manifest → dependency check → scoped ctx → owned systems / verbs / services → deterministic teardown. Arcade remains a consumer of the hydrated capability set. V0.55G also keeps this catalogue structurally quiet: telemetry counters can refresh without recreating plugin cards under the pointer.
CORE plugins are host-critical application capabilities: locked and auto-hydrated. SUBSYSTEM plugins are substantial simulation/game drawers and may hot-toggle outside a mode that requires them. EXTENSION plugins are additive and must not be required for the host to remain healthy.
The host kernel itself is below all three tiers and is never represented as a plugin.
—
The generic resource drawer now records source filename, dimensions and encoded/file KB for internal and imported resources. Self-contained GLB, image textures and atlas JSON remain supported. Replaceable texture assets can swap source files while preserving the stable asset ID consumed by surfaces.
Registry stores asset identity/receipt metadata. asset.library.lite owns parsed GLB scenes, textures, atlas frame data and spawned preview instances. The browser File object/raw binary is not promoted into Registry.
Imported GLB preview instances are Lab-only and disappear from the Arcade face. Current Asteroids gameplay does not require this extension.
Select an asset card.
R10R7 formalises the working PNG proof into a reusable card envelope. A normal PNG can carry a typed Ashlight payload while remaining ordinary artwork to everything else. Import never executes image-carried code: decode → inspect → verify → stage/install is the authority path.
Master art → optimise/compress → inject Ashlight payload LAST → verify → distribute.
Image editors and online compressors may legally discard ancillary PNG metadata. Encoded cards are therefore distribution outputs, not editable master artwork.
Verify the embedded example or drop an Ashlight PNG card.
asteroid.pack; future plugin, flora.pack, fauna.pack and parallax.pack cards can reuse the same envelope without automatically gaining execution authority.PROPRIETARY FOUNDRY / GENERATION LAYER · public or beta access does not transfer ownership of generator logic, authored recipes, seed systems, source assets or tooling.
Geometry identity and surface identity are separate. The same closed asteroid consumes a Bennu-radar-derived Foundry terrain tile plus per-tile PBR, while analytical radar/mineral/thermal/structural/holographic modes remain a separate presentation/science layer. V0.55G keeps the catalogue cards persistent in the DOM so hover state is stable; only metrics, selection state and receipts refresh live.
surface.atlas consumes asset.library.lite and remains body-agnostic. asteroid.surface.adapter owns mesh/Registry application. Both the Foundry natural terrain sheet and the experimental scan sheet are normal texture + atlas assets. Their PNG/JSON filenames, dimensions and KB are visible in Assets and the PNG source can later be replaced while retaining stable IDs.
Select a surface mode.
The game consumes named actions, not raw keys. The input.controls plugin owns keyboard, mouse and Gamepad API listeners/polling, persists the binding receipt, and releases every listener/system/service when destroyed.
Device → Input Plugin → Action State → Arcade. Arcade asks for thrust, turn, fire, shield, warp and never needs to know whether those came from W, a mouse button, or a controller.
Host/developer controls such as the Tilde overlay are routed by the same plugin but remain outside Arcade game state.
—
—
—
—
—
These preferences configure the Tilde/inspection surface only. They are stored independently in localStorage and do not become Arcade game configuration.
Asteroid families, morphology, collisions, boundary and simulation authoring remain in ASTEROID LAB. Arcade actor/weapon/FX tuning is isolated in the ARCADE GAME tab.
Generated from this build's actual registered systems/verbs plus the explicit architecture contract. Use it to brief another coding agent without asking that agent to infer ownership from the monolithic HTML.
Generating agent context…