Shared Host
Platinum is the reusable browser-arcade host. It owns the shell, hosted lanes, release identity, pack selection path, shared services, and the platform-side documentation and release discipline that should not be reinvented per game.
A first-class hosted guide to Platinum: why it exists, what it owns, how applications use it, where the seams still need work, and what should improve as the second game firms up.
What Platinum is supposed to solve.
Platinum is the reusable browser-arcade host. It owns the shell, hosted lanes, release identity, pack selection path, shared services, and the platform-side documentation and release discipline that should not be reinvented per game.
Platinum should not quietly absorb Aurora gameplay rules. Scoring, stage progression, capture and rescue, challenge cadence, enemy behavior, and game-specific content remain application responsibilities.
The platform is now real because it ships one playable application, hosts a preview-only sibling application, carries a full hosted lane model, and has dedicated platform-only checks instead of only Aurora gameplay checks.
The main platform responsibilities today.
Platinum owns the cabinet frame, marquee housing, rails, lower band, overlay framing, and reusable shell frame themes.
Platinum owns pack selection, preview-only application behavior, shell start behavior, wait-mode hosting, and shared runtime control surfaces.
Auth, leaderboard policy, feedback transport, replay/session plumbing, and external-service access contracts are shared platform services so applications do not each build their own service stack.
Platinum depends on a game-pack contract for identity, shell preferences, capability flags, content surfaces, and entity compatibility. The contract is real now but should become more explicit as the second game firms up.
What currently runs on the platform and how to think about ownership.
The platform separation is real, but these seams still need to be managed deliberately.
Shared services are part of Platinum's release contract, not just runtime convenience.
Platinum uses Supabase Data API access for pilot auth-adjacent profiles and leaderboards. The access contract now lives in `SUPABASE_DATA_API_ACCESS.md` and `supabase/data-api-access-contract.sql`.
`npm run harness:check:supabase-data-api-contract` fails if runtime code references a Supabase table that is not represented in the SQL access contract. Publish preflight runs that gate.
Replay-video metadata, YouTube posting records, and expanded pilot records belong behind explicit grants, RLS policies, and documented product ownership before they become hosted features.
How Platinum supports beginner, intermediate, expert, and professional testing without owning game-specific truth.
Platinum owns stable generic persona IDs and aliases, deterministic clock execution, scenario registration, result comparison, dashboard display, distribution reporting, and cross-game resource accounting for persona runs.
Each game maps the generic personas into game-specific controllers, scenarios, expected outcomes, acceptable reference deviations, and release-blocking persona evidence.
The user-facing labels are Beginner, Intermediate, Expert, and Professional. Aurora's historical harness IDs are novice, advanced, expert, and professional; future games should keep the generic labels while providing game-owned behavior adapters.
Persona evidence should be read as distributions over seeded runs. The current Aurora guide publishes 30 full-run games per persona with score, stage, time, losses, and challenge-hit charts.
The most important next platform improvements as the project matures.
The best next links depending on what question you are asking.
Project-wide release, workflow, documentation, and source-of-truth guide.
Player-facing controls and in-game usage guide.
Current milestone and release-train status.
Primary hosted cockpit for cross-game artifact intake, analysis status, and instantiation planning.
Maintained diagrams and ownership visuals.
Application-layer responsibilities and remaining boundary notes.
Automation-first release discipline and documentation gate expectations.
Explicit grants, RLS posture, and release gate for Supabase-backed platform services.
Canonical platform purpose, ownership, usage, boundary notes, and future improvement areas.
Generated from PLATINUM.md during build.
Platinum is the shared browser-arcade platform that now hosts Aurora Galactica and is being prepared to host future sibling games such as Galaxy Guardians.
This is the canonical platform document.
Use it when the question is about:
Platinum exists to separate the reusable arcade host from the specific games it runs.
That means Platinum should own the things that ought to be consistent across multiple games:
the same core input model
At the same time, Platinum should stay out of application-specific rules.
It should not own:
displayed metadata sourced from the owning application
Games on Platinum should not share game-specific code, rule tables, state, assets, mechanics, or capabilities directly with each other.
If a behavior is common to more than one game, that commonality belongs in Platinum as a named API, interface, service, capability flag, harness substrate, or versioned contract. Applications may depend on Platinum contracts; they should not depend on another application's implementation.
In practical terms:
Platinum contract changes
Platinum contract changes
not sideways imports from Aurora or Galaxy Guardians
stages, flagship escorts, alien movement, scoring, visual identity, sound cues, and event vocabulary stay inside the owning game pack
The current audit for this boundary is:
/Users/steven/Documents/Codex-Test1/PLATINUM_GAME_BOUNDARY_AUDIT.mdToday Platinum is a real shipped platform, not a speculative refactor.
Current proof points:
Aurora Galactica ships as the first playable Platinum application on hosted /productionlocalhost/dev/beta/productionGalaxy Guardians exists as a preview-first second-game slice on top of thesame platform, with the next post-production branch now targeting a minimally complete one-level playable game
the shell surface
dashboard in hosted dev, beta, and production lanes while raw ingestion workspaces remain engineering-owned
Platinum owns the outer cabinet treatment:
This is implemented primarily through:
/Users/steven/Documents/Codex-Test1/src/index.template.html/Users/steven/Documents/Codex-Test1/src/styles.css/Users/steven/Documents/Codex-Test1/src/js/19-render-shell.js/Users/steven/Documents/Codex-Test1/src/js/00-boot.jsPlatinum owns the pack selection and boot contract:
This is implemented primarily through:
/Users/steven/Documents/Codex-Test1/src/js/00-boot.js/Users/steven/Documents/Codex-Test1/src/js/01-runtime-shell.js/Users/steven/Documents/Codex-Test1/src/js/15-game-picker.jsPlatinum owns shared service boundaries that should not be rewritten for each pack:
This is implemented primarily through:
/Users/steven/Documents/Codex-Test1/src/js/03-platform-services.js/Users/steven/Documents/Codex-Test1/src/js/04-leaderboard-ui.js/Users/steven/Documents/Codex-Test1/src/js/11-leaderboard-service.js/Users/steven/Documents/Codex-Test1/src/js/12-auth-session.js/Users/steven/Documents/Codex-Test1/src/js/02-replay-telemetry.jsPlatinum currently depends on a shared application contract that is real in practice even though it still needs further formalization.
The main contract areas are:
bug-report transport, and music controls inside the shared frame
See also:
/Users/steven/Documents/Codex-Test1/src/js/13-aurora-game-pack.js/Users/steven/Documents/Codex-Test1/src/js/14-entity-model.js/Users/steven/Documents/Codex-Test1/PLATINUM_INTERFACE_REVIEW.mdPlatinum should be thought of as the host layer.
Applications on Platinum are the games.
Current application set:
Aurora GalacticaGalaxy Guardiansown score identity, ending flow, and platform-validation value
The application-side separation is documented in:
/Users/steven/Documents/Codex-Test1/APPLICATIONS_ON_PLATINUM.mdAs the second game firms up, Platinum should prove not only that it can host a different ruleset, but that it can host that game through the same class of platform-owned frame capabilities Aurora already uses:
These should feel like platform capabilities with game-aware rendering, not Aurora-only conveniences.
Platinum is the current host and public release shell.
It should not become the only imaginable way a game can exist.
The design goal is:
game-owned
Platinum shell if we later want a thinner host or standalone launch surface
trap that forces every game to be defined only in platform terms
When we work on the repo, the right question is usually:
Treat a change as Platinum work when it affects:
Treat a change as application work when it affects:
Galaxy Guardians rules and contentThe separation is real, but not perfect yet.
Current remaining seams to keep visible:
tables while it is non-playable; those must become Galaxy Guardians-owned or Platinum-owned before a playable second-game preview
These are not reasons to collapse the separation again.
They are reasons to keep the seam explicit while we strengthen it.
As the second game firms up, Platinum should improve in these areas:
We should move from an implicit pack shape to a more explicit, versionable contract.
Desired outcome:
We should get better at ingesting a second classic game lineage by turning preserved footage, manuals, timing libraries, and comparison artifacts into a repeatable pack-construction workflow. This workflow is part of the conformance project, not a separate research sidecar.
Desired outcome:
intervention once the reference corpus exists
versioned runtime packages rather than only platform-specific glue
logs, and correspondence targets before subjective design tuning
forcing every new mechanic into Aurora-shaped structures
ad hoc interpretation
host later if we choose
We should decide more intentionally what is:
As additional games come online, Platinum should protect a common player-input contract:
This matters both for human players and for future persona-driven play.
Platinum should eventually support more than passive replay personas.
Desired outcome:
games through game-owned adapters and scenario definitions
depth, time alive, losses, and challenge/reward performance
Player 2-likeexperience
respecting platform contracts and pack-specific rules
Every meaningful x.y release should have:
The best next platform proof is not a huge second-game launch.
The current first step is a pack-owned Galaxy Guardians sneak peek that proves:
preview-only trap state
The next step is a small but playable second application slice that proves:
The main hosted documentation surfaces are now:
/production project guide:https://sgwoods.github.io/Aurora-Galactica/project-guide.html/production Platinum guide:https://sgwoods.github.io/Aurora-Galactica/platinum-guide.html/production player guide:https://sgwoods.github.io/Aurora-Galactica/player-guide.html/production release dashboard:https://sgwoods.github.io/Aurora-Galactica/release-dashboard.htmlEquivalent hosted docs should exist on hosted /dev and hosted /beta as part of the normal release flow.
/Users/steven/Documents/Codex-Test1/PLATINUM_ARCHITECTURE_OVERVIEW.md/Users/steven/Documents/Codex-Test1/APPLICATIONS_ON_PLATINUM.md/Users/steven/Documents/Codex-Test1/PLATINUM_GAME_BOUNDARY_AUDIT.md/Users/steven/Documents/Codex-Test1/ARCHITECTURE.md/Users/steven/Documents/Codex-Test1/TESTING_AND_RELEASE_GATES.md/Users/steven/Documents/Codex-Test1/PLATINUM_LAUNCH_ART_DIRECTION.md/Users/steven/Documents/Codex-Test1/PLATINUM_LUECK_REVIEW.mdMaintained diagrams and short ownership summary for Platinum and the game packs it hosts.
Generated from PLATINUM_ARCHITECTURE_OVERVIEW.md during build.
This document is the maintained short visual overview of how Platinum relates to the applications it hosts.
Use it for the fast answer to:
For the canonical full platform guide, use:
/Users/steven/Documents/Codex-Test1/PLATINUM.mdflowchart TB
subgraph "Platinum Platform"
P1["Cabinet Shell and Layout\n- marquee\n- side rails\n- build stamp\n- popup framing"]
P2["Runtime and Input\n- boot path\n- active pack selection\n- pause and wait mode\n- fullscreen and scaling"]
P3["Shared Services\n- auth and session adapters\n- leaderboard policy\n- feedback transport\n- replay plumbing"]
P4["Platform Harnesses\n- pack boot proof\n- shell and popup checks\n- dock button checks\n- lane and publish checks"]
P5["Shared Contracts\n- gamePack\n- shell themes\n- entity contract\n- content surfaces"]
end
subgraph "Aurora Galactica Application"
A1["Application Identity\n- title\n- front-door copy\n- shell accents\n- stage branding"]
A2["Gameplay Rules\n- formations\n- stage flow\n- challenge cadence\n- scoring"]
A3["Aurora Mechanics\n- capture and rescue\n- dual fighter\n- boss and escort behavior\n- challenge-stage motion"]
A4["Aurora Assets and Content\n- sprites\n- audio identity\n- stage text\n- game-owned polish"]
A5["Aurora Harnesses\n- challenge profile\n- capture lifecycle\n- scoring and outcome checks"]
end
subgraph "Future Applications"
G1["Galaxy Guardians\n- future sibling title\n- currently preview only"]
G2["Other Future Packs\n- their own rules\n- their own content\n- their own harnesses"]
end
P5 --> A1
P5 --> A2
P5 --> A3
P5 --> A4
P5 --> G1
P5 --> G2
P1 --> A1
P2 --> A2
P3 --> A5
P4 --> A5
G1 -. hosted by .-> P2
G2 -. hosted by .-> P2
Today the architecture is in this state:
Platinum is real and visible in the shipped productAurora Galactica is the first playable application on PlatinumGalaxy Guardians exists as a preview-only sibling application shellApplications do not share game-specific implementation directly. If Aurora, Galaxy Guardians, or a future pack needs common behavior, that behavior should move into Platinum as an explicit API, interface, capability, service, contract, or harness helper. Game-owned rules, scoring, movement, visual identity, sound cues, and event vocabulary stay with the owning application.
/Users/steven/Documents/Codex-Test1/PLATINUM.md/Users/steven/Documents/Codex-Test1/APPLICATIONS_ON_PLATINUM.md/Users/steven/Documents/Codex-Test1/PLATINUM_GAME_BOUNDARY_AUDIT.md/Users/steven/Documents/Codex-Test1/ARCHITECTURE.md/Users/steven/Documents/Codex-Test1/TESTING_AND_RELEASE_GATES.md/Users/steven/Documents/Codex-Test1/PLATINUM_LAUNCH_ART_DIRECTION.md/Users/steven/Documents/Codex-Test1/PLATINUM_LUECK_REVIEW.mdApplication-layer responsibilities, current packs, and remaining platform-application seam notes.
Generated from APPLICATIONS_ON_PLATINUM.md during build.
This document describes the application layer that sits on top of the Platinum platform.
Use it when the question is not "what does the platform own" but instead:
Aurora Galactica is the first real application on Platinum.
Aurora owns:
Aurora should remain the reference application when we ask:
Galaxy Guardians is currently a preview-first second-game application and sneak peek on the shipped line, while the active post-production iMac branch now targets it as both a minimally complete one-level playable game and a first-class conformance target.
Right now it proves:
tables that do not directly borrow Aurora tables
state shape
runtime, visual catalog, and audio cue catalog without registering a public playable adapter
single-shot fire, life loss, reset, and game-over flow into the Guardians-owned runtime on development, beta, and production lanes while keeping the public playable adapter disabled
contact sheets, and waveforms
Galaxy Guardians still has no publicregistered gameplay adapter
It does not yet prove:
That is intentional.
Current branch-level next step:
capture, bug reports, and Arcade Music/SFX controls
npm run harness:check:galaxy-guardians-first-class-conformance
A Platinum application should own:
game-owned persona expectations in GAME_CONFORMANCE_CATALOG.md
playable slice
pilot records, replay/video capture, bug reports, and music controls
A Platinum application should not own:
Each application should be tracked as its own release surface even when it is currently shipped inside one Platinum bundle.
At minimum, that means each application should eventually carry:
The integrated bundle should then record which exact application versions it contains, rather than pretending the bundle version alone explains everything.
Applications must not depend on each other's game-specific implementation.
Aurora Galactica may not be the hidden source of Galaxy Guardians mechanics, scoring, aliens, sound cues, visual identity, event vocabulary, or gameplay harness behavior. Galaxy Guardians should likewise never become a source of Aurora behavior. If both applications need the same thing, we should raise that thing into Platinum and expose it through a deliberate platform contract.
Allowed reuse:
Disallowed reuse:
stage progression logic inside another game
See also:
/Users/steven/Documents/Codex-Test1/PLATINUM_GAME_BOUNDARY_AUDIT.mdThe boundary is real, but these coupling areas still deserve attention:
The current second-game preview is safe because it is not playable, and its preview pack now owns placeholder data instead of borrowing Aurora-owned tables. It also has no public gameplay adapter, so it cannot start through Aurora's gameplay implementation by accident. Its disabled adapter skeleton now cites the first source-manifested Galaxian profile and a promoted reviewed event log for the future scout-wave slice, but a playable Galaxy Guardians slice still needs frame-level timing, measured game-specific pack data, and its own registered adapter, with any true common behavior promoted into Platinum.
Preview-first applications must not become a durable trap state. During development or beta a preview application may also expose an explicit non-production playable adapter so we can test the runtime slice before public production playability.
Current expected behavior:
Enter should fall back to a playable application when preview-only contentcannot start gameplay
Enter may start a non-production preview only when the development or betabuild exposes an explicit preview adapter and the pack still remains publicly non-playable
The shell front door now needs a firmer split than it had during the single-game era.
The direction is:
The shell should not make Aurora feel first-class while other games feel like guests.
For Guardians to count as a serious second application, the shared frame should support it across the same families of platform capability Aurora already uses:
Those surfaces remain platform-owned, but they must become application-aware and game-key-clean instead of implicitly assuming Aurora.
Some older names remain Aurora-shaped even when they are now functionally part of the platform.
These should be treated as transitional, not as permission to blur the boundary again.
The current code-review snapshot for this seam is also captured in:
/Users/steven/Documents/Codex-Test1/PLATINUM_INTERFACE_REVIEW.mdA new Platinum application should ideally arrive in stages:
conformance evidence
scorer targets
intentionally deferred
copied from Aurora or invented as user design
Near-term Aurora application work should now focus on:
The current shipped sneak peek is intentionally still production-framed as a preview. On the new iMac post-production branch, the next proof is no longer "keep it preview-only." The next proof is to make it honestly playable as a minimal one-level game while still keeping the public maturity claim modest.
The first non-production runtime slice is now underway as an application-owned model, not a public adapter. It creates a Galaxian-inspired scout-wave rack, enforces single-shot firing, emits promoted event names, scores against a Guardians-owned alien catalog, and keeps Aurora capture, challenge, dual-fighter, and scoring state out of the model.
Galaxy Guardians also now owns its first identity catalogs rather than borrowing Aurora's look or sound names. The visual catalog names the Signal Flagship, Signal Escort, Signal Scout, and Guardian Interceptor silhouettes. The audio cue catalog names the start chirp, formation pulse, single-shot player fire, enemy shot, scout/flagship dive pressure, escort join, hit cues, wrap/return cue, and future player-loss cue. These are still synthesized starting points, but they give the 0.1 slice separate application-owned contracts before any public playability.
The runtime model now has a visible preview renderer. It draws the Guardians scout-wave board, single player shot, alien silhouettes, and preview HUD from Guardians-owned runtime state and catalog IDs while keeping the pack publicly non-playable. The compact cabinet harness verifies the renderer by checking the preview mode, registered renderer key, visual IDs, audio cue IDs, and distinct signal palette. The renderer is now registered through a Platinum game-board renderer registry, so the top-level render loop no longer branches on a specific game by name.
The next application proof is maturing the first playable slice into a minimally complete game loop. That means the existing lifecycle path should now grow beyond preview-only framing and earn:
scattered preview harness set
source-grounded homage variants without losing the original flavor, as now described in GALAXY_GUARDIANS_STAGE_ARC_AND_HOMAGE_PLAN.md
The first aggregate 0.1 candidate gate is already source-controlled, so future playable claims can cite one durable artifact instead of reassembling the visual, audio, movement, threat, and boundary evidence from memory.
That candidate gate is now paired with a first-class conformance target and aggregate parity check:
npm run harness:check:galaxy-guardians-first-class-conformanceCurrent hosted-lane playable-preview coverage:
src/js/13-galaxy-guardians-gameplay-adapter.js owns the hosted-previewstart and update adapter for Galaxy Guardians
src/js/13-galaxy-guardians-runtime.js owns the runtime state, events, playershot, life-loss, reset, and game-over mechanics
src/js/13-gameplay-adapter-registry.js keeps public playable adapters andhosted preview adapters in separate registries
reference-artifacts/analyses/galaxy-guardians-identity/audio-character-0.1.jsonpersists the first cue-shape and runtime-audio coverage contract for the Guardians signal theme
tools/harness/check-galaxy-guardians-audio-character.js proves the requiredcue names, cue IDs, cue-shape metrics, role-hit separation, and runtime cue coverage for the first playable-preview slice
reference-artifacts/analyses/galaxy-guardians-identity/identity-baseline-0.1.jsonpersists the first 0.1 visual/audio identity contract so future sprite, movement, and cue edits have a durable artifact trail
reference-artifacts/analyses/galaxy-guardians-identity/formation-entry-0.1.jsonpersists the first runtime entry/settle contract for promoted Galaxian entry events, including start, settle, rack-complete, and first-dive-after-rack bands
tools/harness/check-galaxy-guardians-formation-entry.js proves the runtimestarts aliens off-rack, settles them into the scout-wave rack, and prevents the first dive from starting before rack completion
reference-artifacts/analyses/galaxy-guardians-identity/movement-pacing-0.1.jsonpersists the first movement and pressure pacing contract for solo dives, flagship/escort attacks, and bottom wrap/return cycles
reference-artifacts/analyses/galaxy-guardians-identity/threat-scoring-0.1.jsonpersists the first lower-field threat and application-owned scoring contract for enemy shots, player loss, and formation/dive hit values
reference-artifacts/analyses/galaxy-guardians-identity/visual-readability-0.1.jsonpersists the first gameplay-scale readability contract for the flagship, escort, scout, player, and role-specific hit flashes
tools/harness/check-galaxy-guardians-visual-readability.js proves theGuardians visual rows stay distinct, use enough palette channels, appear during entry/formation/dive snapshots, and create owned hit flashes
reference-artifacts/analyses/galaxy-guardians-identity/candidate-0.1.jsonpersists the first aggregate 0.1 candidate gate for owned visual IDs, runtime cue IDs, promoted event names, public-playable boundaries, and forbidden Aurora capabilities
tools/harness/check-galaxy-guardians-0-1-candidate.js proves the aggregate0.1 gate without launching a browser by deterministically forcing scout, escort, flagship, enemy-shot, wrap-return, player-loss, and game-over runtime evidence
tools/harness/check-galaxy-guardians-identity-baseline.js proves theidentity artifact matches the pack-owned sprite rows, audio cue catalog, audio theme cues, runtime cue map, and preview audio history
tools/harness/check-galaxy-guardians-movement-pacing.js proves the runtimerules match the persistent movement artifact and that flagship dives attach real escort craft in sampled runtime state
tools/harness/check-galaxy-guardians-threat-scoring.js proves the runtimerules match the persistent threat/scoring artifact and that enemy-shot pressure, player loss, and owned point values are active
tools/harness/check-galaxy-guardians-playable-preview.js proves keyboardfire, life loss, reset, game over, owned audio cue IDs, and public-adapter isolation
That is enough to test the platform without prematurely shipping a second game.
Before the slice becomes playable, refine the existing Galaxian evidence into runtime-ready rules:
catalog entries refined by frame-level and waveform evidence before public playability
Use the reusable ingestion process in:
CLASSIC_ARCADE_INGESTION_FRAMEWORK.mdGAME_CONFORMANCE_CATALOG.mdThat means the first scout-wave slice should be traceable through source manifest, clipped window, event log, semantic model, correspondence target, and harness evidence. The point is to learn Galaxy Guardians and also prove the method we will reuse for later games.
Longer-term, that same game-owned evidence chain should support a world where a game can launch through Platinum or through a thinner dedicated host without rewriting the underlying conformance package.
/Users/steven/Documents/Codex-Test1/PLATINUM.md/Users/steven/Documents/Codex-Test1/PLATINUM_ARCHITECTURE_OVERVIEW.md/Users/steven/Documents/Codex-Test1/ARCHITECTURE.md/Users/steven/Documents/Codex-Test1/TESTING_AND_RELEASE_GATES.mdRepo-level technical layout and implementation map.
Generated from ARCHITECTURE.md during build.
This document is the repo-level technical map.
Use it when the question is:
For the canonical platform document, start with:
/Users/steven/Documents/Codex-Test1/PLATINUM.mdFor the application-layer view, use:
/Users/steven/Documents/Codex-Test1/APPLICATIONS_ON_PLATINUM.mdThis repo is now post-1.2.0, not pre-launch.
What is already true:
Platinum is a real shipped host platformAurora Galactica is the first shipped playable application on Platinumlocalhost, hosted /dev, hosted /beta, and hosted /productionWhat is still transitional:
shipped; it now has a hosted-lane playable-preview adapter for release-lane runtime proof
second-game work still needs measured game data and a gameplay adapter rather than Aurora gameplay reuse
/Users/steven/Documents/Codex-Test1/src/js/00-boot.js/Users/steven/Documents/Codex-Test1/src/js/01-runtime-shell.js/Users/steven/Documents/Codex-Test1/src/js/02-replay-telemetry.js/Users/steven/Documents/Codex-Test1/src/js/03-platform-services.js/Users/steven/Documents/Codex-Test1/src/js/04-leaderboard-ui.js/Users/steven/Documents/Codex-Test1/src/js/12-auth-session.js/Users/steven/Documents/Codex-Test1/src/js/15-game-picker.js/Users/steven/Documents/Codex-Test1/src/js/13-game-pack-registry.js/Users/steven/Documents/Codex-Test1/src/js/13-gameplay-adapter-registry.js/Users/steven/Documents/Codex-Test1/src/js/19-render-shell.js/Users/steven/Documents/Codex-Test1/src/js/20-render.js/Users/steven/Documents/Codex-Test1/src/js/90-harness.js/Users/steven/Documents/Codex-Test1/src/js/05-player-flow.js/Users/steven/Documents/Codex-Test1/src/js/05-player-combat.js/Users/steven/Documents/Codex-Test1/src/js/06-enemy-behavior.js/Users/steven/Documents/Codex-Test1/src/js/07-capture-rescue.js/Users/steven/Documents/Codex-Test1/src/js/08-score-awards.js/Users/steven/Documents/Codex-Test1/src/js/09-stage-flow.js/Users/steven/Documents/Codex-Test1/src/js/10-gameplay.js/Users/steven/Documents/Codex-Test1/src/js/13-aurora-game-pack.js/Users/steven/Documents/Codex-Test1/src/js/13-galaxy-guardians-game-pack.js/Users/steven/Documents/Codex-Test1/src/js/13-galaxy-guardians-gameplay-adapter.js/Users/steven/Documents/Codex-Test1/src/js/13-galaxy-guardians-runtime.js/Users/steven/Documents/Codex-Test1/src/js/14-entity-model.js/Users/steven/Documents/Codex-Test1/src/js/21-render-board.js/Users/steven/Documents/Codex-Test1/src/js/22-galaxy-guardians-preview-renderer.jsBuild script:
/Users/steven/Documents/Codex-Test1/tools/build/build-index.jsGenerated local localhost artifacts:
/Users/steven/Documents/Codex-Test1/dist/dev/index.html/Users/steven/Documents/Codex-Test1/dist/dev/project-guide.html/Users/steven/Documents/Codex-Test1/dist/dev/platinum-guide.html/Users/steven/Documents/Codex-Test1/dist/dev/player-guide.html/Users/steven/Documents/Codex-Test1/dist/dev/release-dashboard.html/Users/steven/Documents/Codex-Test1/dist/dev/build-info.json/Users/steven/Documents/Codex-Test1/dist/dev/release-notes.jsonPromotion scripts:
/beta candidate:/Users/steven/Documents/Codex-Test1/tools/build/promote-beta.js/production candidate:/Users/steven/Documents/Codex-Test1/tools/build/promote-production.jsPublish and verification scripts:
/Users/steven/Documents/Codex-Test1/tools/build/publish-lane.js/Users/steven/Documents/Codex-Test1/tools/build/check-publish-ready.js/Users/steven/Documents/Codex-Test1/tools/build/verify-live-lane.jsThe intended hosted lane contract is:
/dev/beta/productionThe hosted documentation set should exist on each lane as part of that contract.
Core harness tools:
/Users/steven/Documents/Codex-Test1/tools/harness/run-gameplay.js/Users/steven/Documents/Codex-Test1/tools/harness/run-batch.js/Users/steven/Documents/Codex-Test1/tools/harness/analyze-run.jsHarness families should now be thought of in categories:
Pack-boundary harness:
tools/harness/check-pack-registry-boundaries.jsverifies that the Galaxy Guardians preview pack owns separate placeholder tables, stays non-playable, and does not inherit Aurora challenge cadence, challenge layout, or reference timings.
tools/harness/check-gameplay-adapter-boundaries.jsverifies that Aurora is the only registered public gameplay adapter, Galaxy Guardians remains blocked from public playability, and the explicit development-only preview adapter starts only the Guardians-owned runtime slice.
tools/harness/check-guardians-adapter-skeleton.jsverifies that the Galaxy Guardians skeleton exists, stays disabled, exposes a single-shot scout-wave state shape, cites the promoted event log, and fails closed until measured runtime implementation exists.
tools/harness/build-galaxian-reference-profile.jsprobes the local Galaxian videos and generates source manifests, contact sheets, waveforms, the initial measured profile, and the promoted reviewed event log used by the disabled Galaxy Guardians skeleton.
tools/harness/check-galaxian-reference-profile.jsverifies that the generated Galaxian profile has the expected source roles, artifacts, promoted event targets, and first-slice scout-wave baseline.
tools/harness/check-galaxy-guardians-runtime-slice.jsverifies the dev-only Galaxy Guardians scout-wave runtime model: 38-slot rack, flagship/escort/scout roles, single-shot firing, promoted event emission, Guardians-owned scoring, Guardians-owned visual/audio catalog bindings, and no Aurora capture/challenge/dual-fighter state.
tools/harness/check-galaxy-guardians-identity-baseline.jsverifies that the persistent 0.1 identity artifact in reference-artifacts/analyses/galaxy-guardians-identity/ matches the pack-owned sprite glyphs, audio cue catalog, theme cues, runtime cue map, and dev-preview audio history.
tools/harness/check-galaxy-guardians-movement-pacing.jsverifies that the persistent movement/pacing artifact matches runtime rules and that sampled scout/flagship/escort dive behavior exposes real linked escort craft and wrap/return pressure.
tools/harness/check-galaxy-guardians-threat-scoring.jsverifies that the persistent lower-field threat/scoring artifact matches runtime rules and that enemy shots, player loss, and owned point values stay in the Galaxy Guardians application layer.
tools/harness/check-galaxy-guardians-playable-preview.jsverifies the development-lane Galaxy Guardians playable-preview adapter: keyboard fire routing, life loss, reset, game over, owned audio cue IDs, and isolation from the public playable adapter registry.
tools/harness/check-galaxy-guardians-first-class-conformance.jsverifies that the Galaxy Guardians evidence stack, core docs, and harness family still support the maintained first-class conformance target instead of drifting back into a loose preview-only state.
tools/harness/check-galaxy-guardians-long-surface-conformance.jsverifies that the committed later-stage pressure bands, staged shell presentation, and deterministic persona review runs stay aligned with the current Guardians source instead of drifting back to one-level-only review.
tools/harness/check-compact-cabinet-rails.jsverifies that both side-frame icon rails remain visible and inside the cabinet frame at the compact in-app browser scale, and that the Galaxy Guardians preview modal stays readable in that compact layout. It also verifies the hosted-preview Guardians renderer by checking its render mode, registered renderer key, visual catalog IDs, audio cue IDs, signal palette, Platinum harness alias, and non-playable public adapter state.
tools/harness/check-framed-popout-bounds.jsverifies that frame-owned popouts stay inside the gameplay frame, that platform messages, high scores, and pilot/account popouts share the same framed footprint, and that opening another dock popout closes the current one before showing the next surface.
tools/harness/check-platinum-renderer-boundaries.jsverifies statically that platform render orchestration is game-agnostic, board renderers register themselves through the Platinum renderer registry, and the Galaxy Guardians renderer remains preview-only and adapter-gated.
Application/gameplay harnesses must stay game-owned. A harness that proves Aurora capture/rescue, challenge-stage cadence, or dual-fighter behavior does not prove Galaxy Guardians behavior. Shared harness helpers belong in Platinum; game behavior assertions belong to the owning game.
The intended release rule is automation-first:
/Users/steven/Documents/Codex-Test1/PLATINUM.md/Users/steven/Documents/Codex-Test1/APPLICATIONS_ON_PLATINUM.md/Users/steven/Documents/Codex-Test1/PLATINUM_GAME_BOUNDARY_AUDIT.md/Users/steven/Documents/Codex-Test1/PLATINUM_ARCHITECTURE_OVERVIEW.md/Users/steven/Documents/Codex-Test1/TESTING_AND_RELEASE_GATES.mdAutomation-first lane gating and documentation pass expectations.
Generated from TESTING_AND_RELEASE_GATES.md during build.
This document describes the expected release discipline for Platinum and the applications it hosts.
The rule is simple:
Aurora now assumes:
main is the only integration branch/beta and hosted /production may only be published from thatauthority machine
The practical startup and readiness commands are now:
npm run machine:bootstrapnpm run machine:ensure-browsernpm run machine:doctornpm run machine:statusnpm run release:show-authorityThis means machine readiness and release authority are now part of release discipline, not just local convention.
Browser-backed gates use Playwright-managed Chromium. They must not launch the user's installed Google Chrome by default. In Codex Desktop on macOS, run these browser-backed commands with escalated sandbox permissions; the harness launcher will refuse sandboxed browser starts to avoid macOS Chromium/Chrome SIGABRT crash dialogs.
Project browser checks must use the repo harness launcher:
npm run machine:ensure-browsertools/harness/browser-launch.jsplaywright-coreDo not use Codex's bundled Node/Playwright runtime directly for project release checks. That runtime can have a different expected browser cache and fail with missing chromium_headless_shell-* paths even when the repo-managed Chromium is correctly installed.
Hosted public lanes also intentionally do not expose private gameplay harness APIs. Use the hosted DOM account smoke for sign-in field reachability:
npm run harness:check:live-account-input:devnpm run harness:check:live-account-input:betanpm run harness:check:live-account-input:productionAfter each hosted lane publish, run the matching hosted smoke against the live URL:
npm run harness:check:hosted-smoke:devnpm run harness:check:hosted-smoke:betanpm run harness:check:hosted-smoke:productionThe publish scripts invoke these automatically after hosted build verification:
npm run publish:devnpm run publish:betanpm run publish:productionThis check opens the live hosted URL in the repo-managed browser, verifies lane/build identity, confirms pilot sign-in fields are visible and fillable, checks Settings/theme/audio defaults and public-safe private-audio blocking, starts a short player-like session, and records a small JSON report plus screenshot under harness-artifacts/hosted-lane-smoke/.
Keep the older harness:check:live-input:* checks for lanes/artifacts where the gameplay harness is intentionally present.
Before a hosted /dev publish, use the dry release-preflight wrapper:
npm run release:preflight:devThis command does not deploy. It checks whether the code-review packet and release conformance/documentation artifacts are current, refreshes the stale piece only when needed, stops for a commit if refresh output changed tracked files, then performs a clean rebuild and publish:check:dev. It exists to catch the common freshness/build blockers before npm run publish:dev reaches the hosted push step.
We should not address a bug without also deciding how the fix is protected in the appropriate staging harness.
Default rule:
to measure
leave a clear follow-up path toward automation
This is how we stay agile without relying on memory-only fixes.
See also:
The expected lane model is:
localhost/devthe currently published hosted /dev
/beta/dev/production/beta candidateSee also:
We now need to think about release work in three scopes, not one:
platform candidatecontainment
application candidateforcing unrelated game behavior to churn
integrated bundle candidate/dev, hosted /beta,or hosted /production
bundle
Current public hosting still ships an integrated bundle on each lane.
The discipline should still preserve these scopes independently so future release paths do not require a full-platform move every time one game changes.
x.y ReleasesFor every meaningful x.y release, we should complete a full documentation pass between hosted /beta and hosted /production.
That pass should refresh:
release-notes.jsonrelease-dashboard.jsonREADME.mdPLAN.mdPRODUCT_ROADMAP.mdPROJECT_STATE_AND_CONFORMANCE_PROGRAM.mdCONFORMANCE_METRICS_OVERVIEW.mdRELEASE_CONFORMANCE_DASHBOARD.mdCONFORMANCE_ECONOMICS.mdRELEASE_POLICY.mdRELEASE_READINESS_REVIEW.mdARCHITECTURE.mdPLATINUM.mdAPPLICATIONS_ON_PLATINUM.mdproject-guide.htmlplatinum-guide.htmlplayer-guide.htmlThis was not enforced strongly enough before 1.2.0 reached hosted /production.
From now on, it should be treated as part of the release contract.
Release-facing conformance surfaces now have a stricter rule:
release-owned analysis artifacts must be intentionally refreshed as part of release prep
reference-artifacts/analyses/conformance-economics/latest.jsonreference-artifacts/analyses/release-conformance-dashboard/latest.jsonreference-artifacts/analyses/application-artifact-conformance/latest.jsonThe practical refresh path is:
npm run harness:refresh:release-conformance-docsnpm run buildThen commit the refreshed artifacts before any serious /dev, /beta, or /production publish attempt.
The publish preflight and documentation-freshness checks should now fail if those release-owned conformance artifacts are obviously stale against the current release-prep head.
The hosted Aurora Pages repo currently runs in GitHub Pages workflow mode rather than direct branch-serving mode.
That means a lane publish can be correct in the hosted repo itself while the live sgwoods.github.io lane stays stale if GitHub misses the expected Deploy Pages workflow trigger.
The release-authority verification path now treats that as a recoverable host issue instead of only as a generic timeout:
node tools/build/verify-live-lane.js --lane devnode tools/build/verify-live-lane.js --lane betanode tools/build/verify-live-lane.js --lane productionIf live lane build info does not match the expected local artifact, the verifier now checks whether:
build_type: workflowDeploy Pages run exists for the current hosted repo headIf the repo is already correct but no current Pages deploy run exists, the verifier dispatches Deploy Pages automatically and keeps polling the live site.
This should reduce manual release-authority rescue work when a publish push lands in sgwoods/Aurora-Galactica but GitHub Pages does not start the deploy workflow on its own.
The 1.4.1 beta path exposed several process issues that should be smoothed before the next production move:
account/sign-in checks need DOM-only probes rather than private harness probes
refresh release conformance docs before the final publish check, then commit that evidence once
promote:beta, and production securityreview should run last when preparing production-facing documentation
movement; keep verifier self-heal, and prefer a single release-preflight command once the current process stabilizes
lanes when docs/dashboards need to be visible, but do not confuse them with gameplay/runtime keepers
Recommended simplification backlog:
browser readiness, conformance refresh, security review, code review, build, and lane publish checks in the current best order
checks as separate named gates
version label, evidence commit, and remaining manual gates before each publish
Startup, initiation, and wait-mode copy is part of the release surface.
For any candidate where front-door copy changes, we should verify:
The current automated front-door copy gate is:
node tools/harness/check-front-door-copy-surface.jsTo keep development fluid while still protecting release quality, harnesses should be thought of in three buckets:
platformPlatinum shell behaviorchange could affect gameplay hosting
Typical examples:
node tools/harness/check-popup-surfaces.jsnode tools/harness/check-framed-popout-bounds.jsnode tools/harness/check-dock-button-actions.jsnode tools/harness/check-front-door-copy-surface.jsnode tools/harness/check-platinum-pack-boot.jsapplicationTypical examples:
node tools/harness/check-dual-final-life-survivor.jsnode tools/harness/check-challenge-bonus-stage-numbering.jsnode tools/harness/check-extra-ship-awards.jsnode tools/harness/check-late-run-ship-loss-soak.jsboundarywithout moving game-specific rules, audiovisual mapping, or reference logic into Platinum
Typical examples:
node tools/harness/check-platinum-pack-boot.jsnode tools/harness/check-game-picker-shell.jsnode tools/harness/check-front-door-copy-surface.jsThe release process should prefer running the smallest relevant set of checks that covers the actual risk, rather than running every check for every change.
Harness work should also follow the project reference program:
human-only evaluation
For long-cycle fidelity work, use LONG_CYCLE_KEEPER_PROCESS.md to decide whether a measured candidate is only a measurement win or is ready to become a player-facing runtime keeper. Documentation/evidence-only improvements can move hosted /dev, but they should not justify hosted /beta by themselves.
Galaxy Guardians now has enough harness surface that we should treat it as a first-class parity program, not only as a preview experiment.
That means every serious Galaxy review should preserve all three layers:
npm run harness:check:galaxian-reference-profilenpm run harness:check:galaxy-guardians-reference-conformancenpm run harness:check:galaxy-guardians-playtest-conformance-reviewnpm run harness:check:galaxy-guardians-runtime-slicenpm run harness:check:galaxy-guardians-score-progressionnpm run harness:check:galaxy-guardians-threat-scoringnpm run harness:check:galaxy-guardians-playable-previewnpm run harness:check:galaxy-guardians-long-surface-conformancenpm run harness:check:galaxy-guardians-visual-readabilitynpm run harness:check:galaxy-guardians-audio-characternpm run harness:check:gameplay-adapter-boundariesnpm run harness:check:platinum-pack-bootThe standing aggregate process gate is:
npm run harness:check:galaxy-guardians-first-class-conformanceThat gate is intentionally broader than one gameplay check. It verifies that the Galaxy evidence stack, core docs, and harness family remain in sync with the maintained plan in GALAXY_GUARDIANS_FIRST_CLASS_CONFORMANCE_PLAN.md.
For new-game work, the first serious gate should be game-owned reference evidence, not platform improvisation.
Ingestion is now a formal subsystem of the conformance project. It should be treated as the evidence-producing phase that makes later gameplay, harness, and release claims possible.
Default direction:
game-owned manifests
conformance evidence from those sources
explain mechanics the footage alone does not settle cleanly
not buried only in Platinum-specific release logic
substitute for game-owned reference truth
still cannot encode the question, not as the default baseline
For a new game, the first playable slice should cite:
If a release candidate includes a new or materially changed game behavior, its release notes and dashboard should identify which ingestion package or correspondence artifact grounds the claim.
For Galaxy specifically, first-class application review should also preserve:
The shipped Platinum platform should include the read-only conformance dashboard as a release surface.
That means each /dev, /beta, and /production lane should carry:
conformance-dashboard.htmlconformance-dashboard-data.jsonassets/conformance-dashboard.htmlassets/conformance-dashboard-data.jsondashboard for the active lane
The release dashboard may link to the assets/ copy, but the top-level dashboard files must also be published because the game settings/configuration launcher opens conformance-dashboard.html beside the active game lane.
The dashboard is platform-owned presentation of release evidence. It is allowed to summarize application-owned game conformance, ingestion state, confidence, measurement debt, and compute/resource spend.
The ingestion framework itself remains engineering-owned unless we explicitly promote a separate Root-gated or public evidence browser. Raw source media, reference extraction workspaces, candidate clips, unreviewed traces, and in-progress annotation notebooks should not automatically become player-facing Platinum assets just because the dashboard summarizes them.
This gives us the right separation:
ingestion artifacts.
summary data to explain the release without exposing the whole engineering workspace.
Platinum's auth, profile, and leaderboard paths use Supabase through the Data API. The maintained access contract is:
This is now a release-hardening gate because Supabase public-schema tables need explicit grants for new projects beginning May 30, 2026 and for existing projects by October 30, 2026.
The source-level gate is:
npm run harness:check:supabase-data-api-contractThe publish preflight runs this check. If runtime code adds a new supabase.from('table') surface, the release path should fail until that table has an explicit Data API contract, RLS posture, and policy explanation. This is especially important for upcoming top-10 YouTube posting, replay metadata, and expanded pilot-record features.
We want:
main/dev/beta/productionThe way to do that is to choose a gate profile based on the type of change.
Use this when the change is primarily inside a hosted game such as Aurora and should not alter Platinum platform behavior.
Examples:
Required:
the platform
instead of adding platform-owned exceptions for one game
Typical boundary checks:
node tools/harness/check-platinum-pack-boot.jsnode tools/harness/check-game-picker-shell.jsUse this when the change is primarily in Platinum hosting behavior and should not alter application gameplay rules.
Examples:
Required:
games correctly
Typical application containment checks:
node tools/harness/check-platinum-pack-boot.jsnode tools/harness/check-new-game-reset.jsnode tools/harness/check-galaxy-guardians-0-1-candidate.js when the changedsurface touches the Galaxy Guardians dev-preview identity, runtime events, cue IDs, scoring, or preview/public boundary.
node tools/harness/check-galaxy-guardians-audio-character.js when thechanged surface touches Guardians cue definitions, audio theme identity, runtime cue IDs, or role-specific hit/loss/game-over sound behavior.
node tools/harness/check-galaxy-guardians-reference-conformance.js when thechanged surface touches Guardians reference evidence, 0.1 metric scoring, promoted Galaxian event coverage, or beta-preview readiness language.
node tools/harness/check-galaxy-guardians-formation-entry.js when the changedsurface touches Guardians stage start, rack-entry, rack-settle, or first-dive timing.
Quality/conformance reporting:
npm run harness:score:quality-conformance is the current Aurora numericroll-up gate.
CONFORMANCE_METRIC_OVERVIEW.md.
QUALITY_RELEASE_SCORECARD.md and keep the generated artifact under reference-artifacts/analyses/quality-conformance/.
node tools/harness/check-galaxy-guardians-visual-readability.js when thechanged surface touches Guardians sprites, role palettes, preview rendering, hit feedback, or gameplay-scale visual identity.
Use this when the change explicitly crosses between platform and application responsibility.
Examples:
Required:
This is the highest-leakage-risk category and should be treated accordingly.
Use this when the change affects build, publish, release metadata, hosted docs, or lane verification rather than gameplay or shell behavior directly.
Examples:
assets/Required:
For this profile, asset validation should include runtime-loaded files, not just shell-visible images. If a lane uses files under assets/ at runtime, publish and verify should treat those files as part of the release contract.
For production, the release contract also includes the top-level sgwoods/public Aurora project page. A production release is not complete if the public page still shows stale release/build/focus content after the publish and sync steps.
If public sync must be rerun after production is already live, it should run from current clean main and a current tokenized public template, while also proving that local dist/production still matches the live production lane exactly. That keeps the public page current without silently inventing a new "production" build that has not actually been released.
This profile should not automatically pull in deep gameplay suites unless the change also affects gameplay delivery.
Use the lane purpose to decide how rigorous the gate set must be.
localhost/dev/dev/dev/beta/dev/production/beta onlylocalhostBefore promotion from local localhost into hosted /dev or hosted /beta, we expect:
npm run buildnode tools/build/check-publish-ready.js --lane devTypical current examples include:
node tools/harness/check-input-mapping.jsnode tools/harness/check-new-game-reset.jsnode tools/harness/check-capture-lifecycle.jsnode tools/harness/check-challenge-motion-profile.jsnode tools/harness/check-remote-score-submit.jsnode tools/harness/check-pilot-records-panel.jsnode tools/harness/check-feedback-submit-path.jsnode tools/harness/check-platinum-pack-boot.jsnode tools/harness/check-game-picker-shell.jsnode tools/harness/check-popup-surfaces.jsnode tools/harness/check-framed-popout-bounds.jsnode tools/harness/check-dock-button-actions.jsnode tools/harness/check-persona-repeatability.jsnpm run harness:check:persona-performance-distribution when personadistribution evidence is part of the release story
node tools/harness/check-front-door-copy-surface.jsnode tools/harness/check-runtime-loop-crash-capture.jsnode tools/harness/check-late-run-ship-loss-soak.js for any candidate touching player lifecycle, scoring, or other late-run gameplay transitionsSelection rule:
the change actually crosses those boundaries
/devHosted /dev exists to catch "worked locally but not when hosted" problems.
Before promoting a candidate from hosted /dev to hosted /beta, we should have:
check-publish-ready --lane dev/dev publish success/dev label verification/dev review for visual and feel checksHosted /dev is the preferred place to catch:
exercised
/betaHosted /beta is the real production gate.
Before moving hosted /beta to hosted /production, we expect:
node tools/build/check-publish-ready.js --lane betanpm run review:cyclenpm run review:dispositions:checkreview-dispositions.json, with rationale and evidence
/beta publish success/beta live label verification/beta live-input verification when input or gameplay start behavior could be affectednode tools/harness/check-late-run-ship-loss-soak.jsx.y releaseHosted /beta should be strict by risk, not strict by volume:
gates
/productionHosted /production should move only from an approved hosted /beta candidate.
Required path:
npm run approve:betanpm run promote:productionnode tools/build/check-publish-ready.js --lane production/production publish/production label verificationnpm run sync:publicnpm run verify:publicThe public sgwoods/public sync is part of the production release contract, not a manual follow-up.
Production promotion must also start from a clean tree:
promote:productionmain, and local main must match origin/mainsrc/public/aurora-galactica.template.html template and the production artifact must have been rebuilt from that exact clean checkoutThe hosted documentation set is now part of the release surface.
Every hosted lane should carry:
project-guide.htmlplatinum-guide.htmlplayer-guide.htmlrelease-dashboard.htmlrelease-notes.jsonbuild-info.jsonThat requirement is now enforced by the publish preflight.
The release gate is stronger than it used to be, but there is still room to improve:
leak into Platinum, and every platform-level change proves it did not alter hosted game rules unintentionally
Explicit grants, RLS posture, and publish-preflight gate for Supabase-backed platform services.
Generated from SUPABASE_DATA_API_ACCESS.md during build.
Updated: May 14, 2026
Supabase notified the project that public-schema tables will no longer be implicitly exposed to the Data API.
The dates that matter are:
explicit grants before supabase-js, PostgREST, or GraphQL can access them.
Aurora / Platinum is affected because the browser runtime and release tooling use supabase-js, which talks to the Supabase Data API.
| Table | Runtime use | Required client access | Current owner |
|---|---|---|---|
public.scores | shared leaderboard reads, validated leaderboard reads, production guest score submission, signed-in score submission, test-pilot score reset | anon: select, insert; authenticated: select, insert, delete; service_role: maintenance access | Platinum shared service |
public.profiles | signed-in pilot initials and account profile record | authenticated: select, insert, update; service_role: maintenance access | Platinum shared service |
The maintained SQL access contract is:
The contract is intentionally not a full database schema. It records the browser-visible tables, required grants, and RLS policies that make the current runtime behavior reproducible.
The automated source gate is:
npm run harness:check:supabase-data-api-contract
The checker verifies:
supabase.from('table') runtime/tooling usage is represented in theSQL contract
scores and profiles have explicit role grantslinks to the SQL contract
Publish preflight also runs this gate, so a future branch that adds a table for features such as YouTube high-score posts, replay video metadata, or richer pilot records must update the Supabase access contract before it can move through the release path.
Existing hosted tables are not expected to break immediately from the May 30 change because Supabase says existing grants remain in place. The project risk is reproducibility: without committed grants and RLS policy expectations, a new project, a restored database, or a new feature table can fail even while local code looks correct.
The October 30, 2026 deadline makes this a release-hardening concern rather than a someday cleanup item.
There is a separate score-trust boundary to keep visible: the current browser client writes is_verified as part of signed-in score submission. The access contract preserves today's behavior, but a stronger future verified-score model should set that field through a server-owned path, trigger, or RPC rather than trusting client-supplied metadata.
Any new Supabase table used by the browser Data API must land with:
anon, authenticated, and/or service_roleFor planned top-10 YouTube posting and replay-video metadata, this means no runtime feature work should merge until the data model and access policy are captured here.
Current Platinum launch framing and shell treatment notes.
Generated from PLATINUM_LAUNCH_ART_DIRECTION.md during build.
This document defines the launch visual direction for the Platinum platform shell that hosts Aurora Galactica for the first public Platinum-framed release.
The goal is not to redesign Aurora itself. The goal is to make the platform frame feel intentional, premium, reusable across future games, and visually calmer than the current busy cabinet treatment.
Use Platinum Command as the release frame direction.
Short definition:
The shell should clearly belong to Platinum, but it should not visually compete with the active game.
That means:
The current frame has too many simultaneous motifs:
For launch, reduce that density so the shell feels:
The platform should feel like a named host system, not just themed wallpaper.
That means:
Platinum Night: #0a1222Deep Graphite Blue: #111c31Control Navy: #182743Platinum Cyan: #7ad7ffIce Highlight: #d8f2ffSoft Steel: #c9d7e6Use sparingly:
Signal Gold: #ffd86dSignal Amber: #d8a542Reserve warm accents for:
Aurora can keep its stronger game colors:
Those belong to the game identity, not the base Platinum frame.
Launch direction:
Launch direction:
Launch direction:
Launch direction:
Launch direction:
All major overlays should share one Platinum design language:
The trophy/high-score screen should behave like:
Dock behavior rule:
Reduce or simplify:
Keep or strengthen:
The platform-owned shell frame theme should continue to expose:
Once the direction is approved, generate platform-owned visual elements for:
Platinum Release marquee housing refinementThese should be:
For the next refinement pass:
30-40%For launch, the shell should communicate:
Platinum is the platformAurora Galactica is the current flagship hosted gameForward-looking Platinum review with remaining design pressure points and next structural concerns.
Generated from PLATINUM_LUECK_REVIEW.md during build.
This is a forward-looking architecture review of Platinum after the first real Aurora-on-Platinum migration work.
The point of this review is not just to praise progress. It is to be clear about:
surfaces expand the scope
Platinum is no longer just an internal cleanup story.
It is now a real host platform with:
Aurora GalacticaThat is meaningful progress.
The architecture is now beyond:
and into:
This was important.
Platinum is now visible in:
That gives the project a cleaner mental model:
instead of one monolithic product blob.
This is one of the strongest areas now.
Platinum owns:
Aurora owns:
That is the right direction, and it is now reflected in code, docs, and tests.
This is a very strong improvement.
We now have clearer categories for:
That matters because future games should be able to stress Platinum without dragging all Aurora assumptions along for the ride.
The current Galaxy Guardians shell preview is useful.
It proves:
without pretending gameplay exists before it does.
That is exactly the kind of staged proof a platform needs.
We now have a meaningful pack shape in practice, but not yet a strongly versioned, explicit contract that can evolve safely.
What is still missing:
gamePack schema thinkingThis will matter much more once a second playable pack exists.
This is acceptable for now, but it should stay visible.
Examples:
These are not blockers, but they are signs that the migration is not fully finished yet.
We have good planning here, but not enough implementation yet.
Especially important future areas:
Right now the direction is clear, but the operational designer model is still emerging.
As soon as Galaxy Guardians becomes playable, pack evolution becomes a real problem.
We should plan for:
This is where Lueck’s migration concern becomes very relevant.
The current compatibility approach is pragmatic and appropriate.
But if Platinum becomes the long-term identity, we should eventually decide:
That should be treated as product/data migration work, not just rename work.
Even if the immediate plan stays browser-first, Platinum should avoid making that assumption too deeply permanent.
Future host surfaces might include:
That does not mean building them now.
It means keeping these seams healthy:
Do not overreach here yet.
Right now Platinum should stay:
The right move is to preserve the possibility of broader host platforms later, not to build them prematurely.
Admin, artifact, and designer panels are important.
But they should remain:
They should not bloat the core runtime path casually.
Galaxy Guardians slicePlatinum internals
Platinum runtime
shape was able to survive this long while Platinum shell checks still looked healthy
platform or game-pack work cannot drift this far before we notice
Platinum is in a healthy early-platform state.
It is not “finished,” but it is real.
The right next move is not another abstract refactor. It is:
harnesses, and migration thinking