BACK TO HOMEPAGE
Project Timeline

STARGAZER · DAY 124

StarGazer is a single-player 3D space combat game where you command massive capital warships through procedural roguelike runs — broadsides, voxel hull damage, deterministic simulation, built solo with AI assistants.

Started May 21, 2026 · last activity 6d ago

Latest StarGazer milestone screenshot
124
Days running
86
Active days
1,000
Commits
26
Posts
892
Decisions

Activity & Beats

Composite of commits, decisions, and posts per day. Click a bar to filter the timeline below.

Activity barBlog postMilestone
Sep 15DECISION

Enforce the machine-tell floor on blog prose

The dev diary now has a checklist for the habits that make writing sound machine-made, and a guard that refuses a post carrying the mechanical ones.

Sep 2DECISION

An accepted combat contract is an exact targeting writ

Protective contract casts choose a target hostile to the issuer. That

Sep 2DECISION

Local combat work keeps its exact target in the encounter pocket

A valid accepted operation can bind a fighter faster than the player's

Sep 2DECISION

Wreck-recovery work follows a live local wreck

Strategic claims and replacement needs can identify systems before

Sep 2DECISION

Marked salvage grants an exact wreck-target writ

The job explicitly asks the player to cut a marked component from a

Sep 1DECISION

The Quiet Lantern fits Halcyon's living logistics

In the natural Core Signal galaxy, Halcyon's production need projection

Sep 1DECISION

Earned charters hold one funded chapter choice

A charter presented as ready with funded choices must not lose every

Sep 1DECISION

Let captains retire ordinary bay modules at outfitting service

The six-slot module bay can fill through normal contract tools and

Sep 1DECISION

Give Measure the Storm a reachable survey window

Its naturally bound hazard appeared 3,887.5 surface units away. Even

Sep 1DECISION

First Watch defense gives the player the opening shot

This creates a truthful player engagement window inside the authored

Aug 31DECISION

First charters answer every trust-route situation

Contact standing is earned by resolving the issuer's living situations,

Aug 31DECISION

Disable work requires a real EMP tool

“Stay the Hand” promises to disable drives and weapons while leaving the core alive. Repeated mass-driver hull hits are not evidence of that outcome; the Arc Projector is the existing player-facing tool that produces the production adrift state. Natural finishability proof must acquire and equip that tool through the same outfitting economy as the player.

Aug 31DECISION

Let the player collect wreck drops at the physical hull boundary

The shipping player hull and a fresh fighter wreck establish a measured

Aug 31DECISION

Mission cargo comes from its named encounter

A random teaching-fighter wreck could contain the unique cipher before

Aug 31DECISION

Outer Crown readiness means every fitted channel is armed

Each Ascendant rack expresses a different combat identity. Applying the

Aug 31DECISION

Give each Ascendant warden its canonical hull integrity

The wardens are distinct ships produced by distinct stable destination

Aug 31DECISION

Close, match velocity, then turn the broadside

Turning at the first outer-range contact left fast targets pulling away

Aug 31DECISION

Regional progression covers the widest authored route

The earlier envelope was measured only on Precision. The natural

Aug 30DECISION

Natural survey journeys navigate around the harbor

The home signal is reachable, but the line from Tideline Exchange crosses

Aug 30DECISION

Generic survey work avoids encounter-gated signals

A route survey is a promise that the player can complete after accepting

Aug 30DECISION

A route contract may answer a player-facing trade link

First Watch deliberately opens Meridian-player route work. Applying the

Aug 30DECISION

A newly legal work offer gets one real decision

Player-facing work should be judged at the production decision that can

Aug 30DECISION

Progression clocks include the complete escort envelope

Extending escort work to cover its full physical departure route made the previous report ceilings mathematically smaller than the work they claimed to admit. The bands remain budgets, but may not declare a journey invalid for using an authored objective window they themselves permit.

Aug 30DECISION

Remote route surveys promise only real destination signals

“Count the Knot Nobody Admits” is travel-bearing route work. Requiring its target to exist in the already-cooked board bubble made the covert contract structurally unreachable, while admitting every remote system would advertise surveys in systems whose generated recipe contains no signal at all.

Aug 30DECISION

Accepting work delegates the response

Leaving autonomous resolution enabled after acceptance made the issuer solve ProtectTrade on the next strategic fold, invalidating a convoy contract before the player could reach its authored encounter. Explicit external source resolution remains a valid invalidation path.

Aug 30DECISION

Escort work protects a disrupted route

Living-world ProtectTrade goals are created only for non-active links. Treating every later update of that already-disrupted source as fresh abandonment made the authored recovery job fail before the convoy could complete its route.

Aug 30DECISION

Keep standing public work and earned private work on distinct clocks

Reposting the same public routes made the board look active while hiding an earned covert survey until its strategic need expired. The player-facing distinction is now real: public work keeps the door open; earned work is a deliberate faction decision.

Aug 30DECISION

Let earned work share the board with standing public jobs

The public guarantee and the earned-work decision are separate promises. Counting public rows as earned work made the first promise silently cancel the second.

Aug 30DECISION

Give a newly delegated job one observable turn

An offer that is created and withdrawn inside one simulation step is not a meaningful player choice, even if every internal transaction is individually valid.

Aug 30DECISION

Let starter assignments coexist with earned faction work

The graduation cohort teaches three kinds of work, while later regional jobs express earned trust. Making unfinished starter assignments suppress earned work turned optional onboarding breadth into a hidden progression prerequisite.

Aug 30DECISION

Let newly earned work survive its first decision turn

A player could earn the covert-work threshold after a faction had acted, then lose the qualifying need—or the exact route proving it—at the next refresh before the faction ever had a chance to offer the work.

Aug 30DECISION

Regional jobs may arrive in living-world order

Relationship progression should preserve faction agency. Requiring the data-file order would make a lawful alternate offer look like a broken campaign.

Aug 30DECISION

Give convoy work the full physical route window

Convoy success is owned by the final protected ship physically departing the production lane. Several contracts expired after 8,400-9,000 ticks while an intact convoy was still flying the same route that already required 18,000 ticks elsewhere.

Aug 30DECISION

Budget convoy work for departure, not only linger

The earlier 18,000-tick floor covered the 9,000-tick patrol linger twice, but the production success edge is later: the final protected capital must physically reach the 200-unit jump-vector departure radius. A natural run reached 19,200 ticks with the intact capital already departing but still 288.5 units from the gate. The encounter may stage up to 3,000 units from the player, jump vectors sit 2,500 units out, and the capital's live transit is about 0.28 units per tick; 24,000 covers that complete physical envelope without changing movement or completion semantics.

Aug 30DECISION

Give the Knot Survey the full hidden-route window

The normal capital route from the Tideline contract exchange to the bound signal terminal is about 3,900 units. Production movement and scan truth showed the prior 7,800-plus-600 window expiring while the healthy ship was still 2,508 units from the POI surface.

Aug 30DECISION

Delivery jobs provide the cargo they assign

Delivery briefs across Meridian, Aurelian, and Cinder describe cargo already owned by the route, account, or refuge. One private mandate could demand three rare-alloy canisters that no normal market or authored source supplied, turning a disclosed handoff into an impossible scavenger hunt.

Aug 30DECISION

Recover the signature trophy with the rack the journey earned

The starter capital could not damage an otherwise valid capital carrier, while a late journey had already earned the tools intended to make the trophy hunt playable. The first broadside eligibility rule also admitted a capital attacking an unrelated structure 2,107 units away; that was a live ship, but not a player engagement or a recoverable hunt.

Aug 30DECISION

Give Regional progression the measured physical-work envelope

An authoritative precision journey completed the required Regional work at 493,877 ticks with 12 jobs, exactly 10 combats, 9,270 credits, and 570 trust. The former 464,400-tick limit rejected a healthy route after it had met every other progression promise; 540,000 records the measured path with a bounded 46,123-tick margin rather than weakening the work.

Aug 30DECISION

Let a wreck hunt boost through the unresolved pursuit

The measured Auto Laser carrier was a valid hostile patrol at 2,107 units, but one ordinary sub-light dismount left it beyond the old 974-unit boost gate. The same-speed pursuit then spent all 7,200 ticks without closing or firing even though the reactor remained full.

Aug 29DECISION

Promote empty-board issuance inside the action budget

Factions now post overdue work through the same accountable decision path as every other strategic move.

Aug 29DECISION

Escort a route from the accepting board to its opposite endpoint

The player may reach a Meridian board on the partner endpoint. Targeting that same endpoint creates a local encounter after the bubble was cooked, too late to admit the encounter's exact dormant hull reserve. The route itself already supplies the truthful destination: cross from the accepting endpoint to the other one.

Aug 29DECISION

Put route protection at the partner endpoint

A board-local escort offer could target the already-cooked board bubble and therefore lack the exact owned encounter reserve that normal destination travel prepares. More importantly, the old rule sent every actor to SystemA, even when that endpoint belonged to its partner.

Aug 29DECISION

Give the Sixth Knot time to cross the authored lane

The lane encounter stages at a midpoint between jump vectors. Its capital convoy must survive combat, turn, and physically traverse several kilometers at its real thrust; the former 7,200-tick window expired with both surviving ships correctly in Depart but still two to three kilometers from their exits.

Aug 29DECISION

Let an empty work board claim one faction action

A captain naturally reached 470 trust and a fully legal Meridian goal, yet recurring autonomous work consumed both action slots forever and left the board empty. The job now enters through the living faction's real decision instead of a journey-only shortcut.

Aug 29DECISION

Reserve one decision candidate for an empty work board

The selection policy was correct only after a work candidate survived generation. In a mature living galaxy, the bounded top-score buffer could discard every IssueContract candidate before empty-board promotion saw it, leaving legal regional work invisible forever.

Aug 29DECISION

Refill an emptied work board at its next eligible faction turn

Posting a job used both the board's own suppression window and the much longer general action cooldown. That left a truthful empty board inert after the captain cleared a standing offer, even though a newly unlocked regional job was ready.

Aug 28DECISION

Depart when an authored structure objective becomes terminal

Once their objective is gone, the attackers leave; they do not silently pick a new mission.

Aug 28DECISION

Keep authored structure attacks exclusive until terminal

A ship ordered to destroy the relay shoots the relay first; once the relay is gone, it can turn on ships again.

Aug 28DECISION

Share exact structure-fire range with goal steering

Structure attackers fly into their real gun range before turning broadside.

Aug 28DECISION

Version rack-specific trial engagement authority

Every build now says which of its real guns it uses against each trial problem.

Aug 28DECISION

Carry whole-hull lethal attribution through publication

If the player's real damage earns the finishing consequence, the normal death event publishes that same tick and still knows it was the player.

Aug 28DECISION

Identify autonomous trial fire by the resolved weapon

Only the player's real trigger damage counts, and a replacement enemy never inherits the previous enemy's progress.

Aug 28DECISION

Version and hash the Ascendant counter authority

The data says both what ship spawned and how much real player damage defeats it, and replay hashes can see the difference.

Aug 28DECISION

Bind progression reports to the shipping FTUE artifact

The endgame report begins where the real tutorial save ended and earns everything after it twice.

Aug 28DECISION

End the relay attack when the relay is gone

Objective failure should be legible and final. A silent target switch after failure adds punishment unrelated to the stated mission.

Aug 28DECISION

Make relay pressure a committed combat job

The encounter asks the player to race visible objective pressure. Simultaneous objective and player fire turned that choice into hidden damage inflation rather than meaningful prioritization.

Aug 28DECISION

Translate the Outer Crown combat frame as one unit

Origin placement overlaps the authored gravity-well clearance. Moving only the relay made the objective unreachable; moving the pulse without the system well would restore continuous-plus-pulse double application.

Aug 28DECISION

Restore the authored Outer Crown objective geometry

Relocating only the relay to Z=-800 left every attacker 900-1,000 units from the objective despite 320/600-unit production weapon envelopes. The objective was correctly bound but could not come under pressure before a fast player victory.

Aug 28DECISION

Require real weapon range before a structure broadside

The prior stance looked intentional but stopped outside gun range, so the relay objective was never under real pressure despite six correctly bound attackers.

Aug 28DECISION

Protect manual trial credit and size Linebreaker from applied damage

A Screen kill cannot satisfy the trial's explicit manual non-Screen attribution, so allowing one before admission permanently removes a required member. The prior Linebreaker value also made the declared positive nonpreferred viability false under real damage authority.

Aug 28DECISION

Make structure attackers establish a firing broadside

Bow-first arrival made an attacker look bound to the relay while its broadside could never fire. A single rack-wide steering stance also hid the target-specific counter choices the encounter authors.

Aug 28DECISION

Separate trial combat durability from cooked hull integrity

Treating a 18.878-million-point cooked capital asset as its combat health made every counter cosmetic and turned the finale into a hull wall. Hit counts or scripted damage would not prove the player's fitted rack actually solved the encounter.

Aug 28DECISION

Measure five earned progression bands

Upgrade lists do not prove pacing, affordability, route clarity, combat pressure, or persistence from the actual new-player boundary.

Aug 28DECISION

Keep authored total wars under campaign authority

A strategic cadence should not erase hostility halfway through an encounter and strand the remaining objective targets.

Aug 28DECISION

Let authored counters amplify real damage

Precision rounds deliberately stop short of the core and broadside pressure legitimately loses windows to the shared one-trigger power tax. Requiring 180,000 raw hull HP ignored those counter jobs and made both otherwise-correct racks mathematically unable to finish.

Aug 28DECISION

Teach flight speed bands inside the starter envelope

The former 120-unit throttle and 180-unit braking thresholds predated class-aware capital flight and could never be reached by the shipping starter hull; an intermediate 15-unit correction still exceeded the real fallback Kraken. The former signal position at 320 began inside its own completion radius, so approach could complete without an approach input.

Aug 28DECISION

Give the relay guard an authored opening-fire window

Without an opening window, the hostile frigate's first normal Kinetic volley core-killed the pristine Kraken at tick 340, before the 826-tick bring-arc lesson could complete. Moving it to 650 units preserved the hull but exposed a second truth: the faster guard maintained a 623-to-715-unit standoff outside the starter Broadside's 325-unit physical reach.

Aug 28DECISION

Start the relay guard inside weapon reach, outside collision overlap

The prior 110-to-130-unit band overlapped the cooked hulls and let normal collision damage core-kill the pristine Kraken. The previously tested 650-unit band stayed outside the starter Broadside's 325-unit physical reach. The new band satisfies both production boundaries without changing hulls, weapons, or lesson rules.

Aug 28DECISION

Give the relay guard an authored combat-durability budget

The cooked guard has roughly 291,000 fine voxels while the starter Mass Driver removes about six per hit. The lesson requires a 35-percent wound followed by a kill, so full physical durability was mathematically incompatible with the authored lesson and practice target.

Aug 28DECISION

Let the relay guard land one recoverable answer

A window long enough to prevent all return fire made Restore Readiness impossible in a naturally successful run, while no window let two guard volleys core-kill the starter. The measured production timeline admits exactly the consequence the following station lesson teaches the player to repair.

Aug 28DECISION

Guarantee the signature Screen module on an eligible Scourge wreck

The three-rack journey searched dozens of otherwise eligible systems—and previously more than 180—without materializing its required signature fitting. Chance could make an authored progression route take hours or never finish for its canonical seed.

Aug 28DECISION

Let the focused mystery own the captain's scan

Guidance could point at Verdant Moon while scan charge silently evaluated an earlier catalog lead. The player flew to the named world and held the taught input, yet the selected mystery could not advance.

Aug 28DECISION

Open the First Watch work board without pre-choosing an alliance

The graduation choice is meant to be the player's first step into faction work. Requiring an alliance before accepting that first job makes the invitation circular and hides all three authored choices behind an unexplained locked board.

Aug 28DECISION

Keep trust-building public work standing on the board

A valid public job could be starved indefinitely when unrelated faction actions scored above IssueContract, leaving a captain with no production route from trust 20 to the authored 150, 400, and 700 thresholds.

Aug 28DECISION

Keep random salvage out of the guaranteed trust ladder

Derelict holds intentionally draw one random commodity per hold, and StarGazer has no cargo-purchase transaction. Requiring eight specific plates made the canonical fresh journey and charter depend on loot luck rather than authored skill.

Aug 28DECISION

Show the approach before the scan resolves

The former board photographed the same blocked state three times and mislabeled its middle frame as in-range evidence.

Aug 28DECISION

Let protected lane traffic finish the route

A surviving patrol kept the encounter instance active after every ambusher died, so truthful convoy-survival work could never publish its resolved outcome.

Aug 28DECISION

Keep contract aggressors hostile to their protected side

Meridian's Open Lane goal named the friendly player as its strategic target, which turned the authored ambushers into player ships and made truthful combat refuse them.

Aug 27DECISION

Bind authored trial objectives to opening encounter goals

Trial enemies now attack the relay the player is asked to protect.

Aug 27DECISION

Keep endgame trial authority in strict content and durable owners

The trial data says exactly what exists, combat proves who defeated it, the save remembers the reward, and the relay shows whether the cache can actually be used.

Aug 27DECISION

Bound recovery replay proof to serialized start authority

The game now proves the recovery journey and its recorded travel honestly, but we will not call it replayed until a fresh game process can rebuild the exact starting recovery state from the file.

Aug 27DECISION

Persist the exact Retry return kind

Retry now remembers whether the player actually traveled back or rebuilt the system they were already in, and finishes only when the saved fight is truly ready.

Aug 27DECISION

Persist and replay typed campaign recovery disposition

Recovery can now survive a save anywhere in the sequence, replay the same decision, and resume only the exact fight the player left.

Aug 27DECISION

Commit graduation cohorts as one reservation transaction

The three starter jobs appear together, and the sealed route case enters the hold only when the whole handoff succeeds.

Aug 27DECISION

Reserve encounter capacity by authored class and faction

A scenario reserves the kind and allegiance of ship it needs, and the destination translates that request into its own local slots.

Aug 27DECISION

Drive visual combat through semantic player input

The proof now aims and turns like a real player, and completion remains true after the tutorial advances.

Aug 27DECISION

Admit visual sequence frames on typed production truth

Combat screenshots now wait for the shot, hit, cooldown phase, or ready return they claim to show instead of guessing when it might happen.

Aug 27DECISION

Share one data-driven ballistic intercept owner

The aiming indicator and the projectile now solve the same shot from the same weapon data.

Aug 27DECISION

Persist campaign encounter outcomes as exact receipts

The game remembers exactly which named enemy owes which reward or replacement, and it keeps trying safely until the player truly receives it.

Aug 27DECISION

Resolve detached training drills from authored scenario ids

Practice now reacts to steering, braking, scanning, locking, arming, firing, cooldowns, damage, and time instead of pretending a button press performed those actions.

Aug 27DECISION

Replay application outcomes and the complete host boundary

A replay passes only when the game started from the same world, performed every menu action with the same result, and ended in the same complete state.

Aug 27DECISION

Replay paused application requests by host-drain occurrence

Menu actions now replay at the exact moment the game originally accepted them, including two separate menu passes on the same simulation tick.

Aug 27DECISION

Give encounter rewards stable authored owners

Rewards now belong to the exact named opponent that earned them, so another ship cannot accidentally pay out in its place.

Aug 27DECISION

Freeze First Watch as a strict authored curriculum

The entire first watch is now a checked data contract, and broken or incomplete lessons stop at validation instead of failing during play.

Aug 27DECISION

Make First Watch progress deterministic durable authority

The game now remembers what a captain actually learned, survives save and replay exactly, and does not confuse rewritten instructions with changed gameplay rules.

Aug 27DECISION

Treat narrative prerequisites as typed consequence consumers

A promise made in one conversation only counts when some later system actually listens for it, and the full opening cast cannot vanish unnoticed.

Aug 27DECISION

Publish First Watch completion once and render it from sim truth

The game now knows exactly when a lesson was learned, shows the right live control, and opens real work only after the captain earns it.

Aug 27DECISION

Enroll First Watch once and measure time to success locally

Internal testers can measure where a lesson slows down, while normal players stay unenrolled and no report can invent a failure the game did not observe.

Aug 27DECISION

Keep progression admission and acquisition on durable owners

Final equipment and the route it opens now use the same ownership and purchase rules as the rest of the game.

Aug 27DECISION

Replay guarded application requests at named boundaries

A menu click is now a recorded request that the game applies once at a safe moment, and travel can prove which request started it.

Aug 27DECISION

Bind replay to exact host operations and authored durable authority

Replays now repeat the exact screen and jump operations they recorded, old guard victories keep their cipher reward, corrupted reward saves fail safely, and Outer Crown tells the captain exactly what prerequisite is missing.

Aug 27DECISION

Bind replay to typed screen state and exact campaign receipts

Replays reopen the exact story and faction views the player saw, guard defeat becomes true when the guard dies, and malformed campaign receipts stop at load instead of becoming hidden future state.

Aug 27DECISION

Make resolved narrative identity replay authority

A replayed call must connect to the exact real conversation; a blank or invented channel cannot count as the same screen.

Aug 27DECISION

Make First Watch audio expectations explicit

Every important training moment now states whether it should make a sound, so intentional quiet cannot be mistaken for forgotten audio.

Aug 27DECISION

Commit graduation cohorts before notification

The first three jobs now arrive as one durable handoff, and a save cannot lose or duplicate part of it.

Aug 27DECISION

Rebuild recovery replays from an embedded shipping save

A retry can now be replayed from the exact saved loss in a fresh launch, including whether the return stays local or crosses the map.

Aug 27DECISION

Make the Ascendant trial an objective fight, not a health wall

Endgame combat should ask the player to prioritize, position, and protect something under pressure. A single oversized target would test only damage output, while a direct fitting grant would bypass the progression economy.

Aug 27DECISION

Retry locally when the tow harbor is the death system

Sending the player to the system they already occupy creates a false journey and can leave recovery waiting for a travel event that can never happen.

Aug 27DECISION

Let the player choose Retry or Retreat after campaign death

A debug Reset erases the consequence and a generic respawn hides what the player is choosing. Two explicit dispositions let failure preserve progress while keeping the strategic cost, route, objective, and next action understandable.

Aug 27DECISION

Graduate into three equal-status work lanes

Graduation needs a meaningful next direction without making one lane the obvious economic answer or turning the choice into a permanent class selection.

Aug 27DECISION

Let tutorial proof follow the fight

Teaching should demonstrate a transferable action against the encounter the player actually receives, not a capture-only spawn bearing or a momentary banner.

Aug 27DECISION

Show combat teaching as cause and consequence

A board made from convenient timestamps can show four technically different frames without communicating what the player did or what changed. Event phases make the mechanic legible as a deliberate action followed by a consequence.

Aug 27DECISION

Make unguided broadside solutions lead moving ships

Showing an in-range, in-arc solution while repeatedly firing at the target's old position makes correct player input miss and turns the first real broadside fight into unexplained attrition.

Aug 27DECISION

Fail forward through the first combat lesson

An unlimited replacement loop blocks progression, while accepting any death teaches no transferable weapon skill. One retry preserves the lesson without holding the campaign hostage.

Aug 27DECISION

Treat application postconditions as replayed gameplay truth

A replay that merely queues the same menu request can silently refuse it or remain trapped on a screen while still matching a partial world hash.

Aug 27DECISION

Practice is a real drill with no campaign stakes

Rehearsal should build transferable muscle memory without turning a menu into a reward exploit or asking the player to risk a live campaign state.

Aug 27DECISION

Teach one deliberate shot before the relay guard

Asking a new player to learn targeting, arming, firing, bearing, cooldowns, and a durable kill on one target overloads the first combat and makes failure hard to diagnose.

Aug 27DECISION

Make First Watch one persistent eight-objective journey

Small authoritative checks give precise recovery and measurement, while stable journey goals keep the experience from feeling like a 26-card checklist.

Aug 27DECISION

Award training mastery only from authoritative play

A tutorial should measure demonstrated understanding rather than time spent looking at a card. Background credit respects players who discover mechanics early, while source and order rules prevent tests, automation helpers, or coincidental world changes from pretending the captain acted.

Aug 27DECISION

Let conversations carry the First Watch instead of tutorial popups

A tutorial earns attention when a character reacts to what the player did and the choice changes a later surface. Detached instruction cards teach controls but cannot establish stakes, relationships, or a reason to care about progression.

Aug 27DECISION

Graduate the captain into work, then into the charter

The first hour needs a clear rhythm: learn, prove, get paid, meet the person affected, then accept a larger responsibility. A contract list unlocked from the start cannot communicate growth, and a tutorial reward disconnected from the galaxy feels disposable.

Aug 27DECISION

Make endgame entry an earned full-rack commitment

One rare item cannot prove a build or a journey. The final trial should test a complete combat identity whose cost, power reserve, and political prerequisite the player earned through ordinary systems.

Aug 27DECISION

Keep Training Log actions real and practice consequence-free

The Training Log should help a captain act on mastery without becoming a hidden simulation writer or an alternate reward economy. A disposable practice surface preserves confidence and accessibility while durable campaign truth still reflects production play only.

Aug 27DECISION

Keep First Watch recovery local and hand off to the Crown

A failed lesson should recover where it was taught, and finishing the Core arc should point to earned faction and fitting goals instead of dropping the captain into an unnamed sandbox.

Aug 27DECISION

Let the action carry the training sound

A second tutorial chime after every success would flatten distinct actions into one notification language and make sound mandatory for comprehension. Visible text remains the authoritative success cue.

Aug 27DECISION

Graduate into three equal First Watch choices

Graduation should open a meaningful choice without one lane becoming the obvious money answer, and missing a starter should preserve the activity without repeating its one-time reward.

Aug 27DECISION

Hand contracts-route graduates to the next Core Echo place

A clue chain must start from an action the player can still perform, while route-specific dialogue can preserve the character consequence.

Aug 27DECISION

Measure progression as five earned bands

A report that starts after the opening wallet or treats a granted module as earned cannot explain the actual economic and combat journey.

Aug 26DECISION

Route weapon-role audio and stage real visual emitters

Torpedoes have their own voice, and the laser screenshots now contain a real laser-equipped ship.

Aug 26DECISION

Make objective pressure authored and combat-verifiable

The relay scan waits for a real fight, and the automated journey must win that real fight rather than editing the target's health.

Aug 26DECISION

Give screens and heavy ordnance different combat jobs

A loadout becomes meaningful when the player can recognize both the job and commitment of each channel. The Screen should visibly hold space against light craft; ordnance should sound dangerous before an off-camera missile reaches its target.

Aug 26DECISION

Teach combat through a three-rung pressure ladder

Progression should add decisions, target texture, and simultaneous pressure before it adds larger numbers. Chorus emphasizes chaining distinct combat powers against threats of different scale; EVERSPACE 2 makes build synergy and loot reconsideration part of combat growth; Rebel Galaxy builds its capital-ship fantasy from maneuver, broadside commitment, and fighter priorities. The StarGazer ladder adopts those useful principles without copying their progression economies.

Aug 25DECISION

Admit compiled weapon runtime rows only through executed semantic parity

A generated weapon earns runtime status only by matching something the game can actually target, pay for, fire, and resolve today.

Aug 25DECISION

Publish weapon runtime semantics on explicit fitted and unfitted axes

Player weapons use the rules for their actual fitting, while AI and structures get a neutral weapon rule instead of borrowing a player slot.

Aug 25DECISION

Compile exact weapon resource tuning before executing new resource verbs

The catalog now says exactly what every weapon resource costs, but heat and lockout still cannot affect a live shot until the game owns and persists those states.

Aug 25DECISION

Commit player weapon resources through one fixed five-slot transaction

A weapon shot now either pays all of its costs once and fires, or pays nothing and stays blocked.

Aug 25DECISION

Persist the complete five-slot player weapon resource store

Saving and replaying now brings back every weapon cost exactly where it was.

Aug 25DECISION

Freeze replay catalogs from the definitions the process actually loaded

Replays are checked against the weapons and world rules the running game truly loaded, not whatever files happen to be on disk later.

Aug 25DECISION

Canonicalize durable weapon IDs through catalog-owned aliases

Old weapon names still load, but the restored world immediately speaks only the new canonical names.

Aug 25DECISION

Freeze an optional compiled weapon catalog before activation

The game can now remember one valid future arsenal at startup, but it does not use that arsenal to fire anything yet.

Aug 25DECISION

Pair the frozen Final catalog with legacy identities before activation

Every weapon the game uses today now has one checked address in the future arsenal, but the game still fires the old weapon records.

Aug 25DECISION

Resolve compiled presentation metadata as an inactive host shadow

The future arsenal's look and sound instructions are now checked beside today's game, but today's renderers and speakers still use their existing catalog.

Aug 25DECISION

Execute penetration bias from copied projectile traits

A weapon marked for penetration now carries that rule with its projectile and gets one quarter more material-cutting depth, without changing any current shipping weapon.

Aug 25DECISION

Execute mount bias through authored target hardpoints

A mount-biased round aims at the first working enemy gun instead of the generic hull, and falls back normally when there is no gun left to favor.

Aug 25DECISION

Execute arc-breakable spinal charge through explicit program authority

Future charged spinal weapons must say that losing aim drains their charge; today's spinal weapons keep behaving exactly as before.

Aug 25DECISION

Execute split-target swarm volleys in stable threat order

A split-target rack now fans one volley across the nearest valid enemies in a stable order instead of putting every missile on one ship.

Aug 25DECISION

Close split-target activation boundaries

A split volley now promises only targets it can launch at, and the UI agrees with the shot even when the player has a structure or asteroid locked.

Aug 24DECISION

Keep dropped weapon modules durable until terminal ownership

A weapon floating in space now remains the same recoverable item across a full hold, a save, or a jump away and back.

Aug 24DECISION

Make wreck recovery source-stable and lossless

Enemy ships now carry the same recoverable weapon through a reload, and a crowded battlefield cannot erase it.

Aug 24DECISION

Fold wreck offer identity into deterministic hashes

Determinism checks now notice the hidden ship identity that decides what a wreck will carry.

Aug 24DECISION

Carry wreck-source receipts through replay tick zero

Replays now remember which wrecks have already paid out, without saving the canister index used to find them quickly.

Aug 24DECISION

Reserve VFX capacity per priority

A burst of hull wounds can no longer erase every weapon flash, and the overall effect budget is still bounded.

Aug 24DECISION

Separate wreck receipts from canister lifetime

The galaxy now remembers that a wreck already paid out even after its module is gone, and a full ledger refuses safely instead of crashing halfway through the kill.

Aug 24DECISION

Preserve wreck activation identity through replay

Reloading keeps an enemy's promised module, but a newly spawned enemy in the same slot gets a new identity and cannot replay the old payout.

Aug 24DECISION

Reject replay assignment authority that cannot bind to tick zero

Replays now reject a damaged enemy-offer record instead of quietly changing it, and large histories export in one predictable pass.

Aug 24DECISION

Keep custom population launches outside shipping saves

Custom battle setups now stay in their own sandbox and cannot replace a real campaign save.

Aug 24DECISION

Derive hotbar arc and range from one physical mount

If the hotbar says a mounted weapon has both arc and range, one real surviving hardpoint can actually take the shot.

Aug 24DECISION

Publish wreck-offer authority with the travel transaction

Building the next system can no longer change this one, and arriving or continuing keeps every visible carried-weapon offer stable.

Aug 24DECISION

Keep population provenance outside replay authority

A custom battle setup can no longer be mislabeled as an ordinary reproducible start just because its final numbers match the defaults.

Aug 24DECISION

Make development launch persistence fail closed

Test setups now stay outside real campaign saves, while normal game, campaign, and product choices keep saving as before.

Aug 24DECISION

Separate MCP replay authority from shipping persistence

Developer control can record a clean New Game without touching the player's campaign, and a damaged replay cannot invent an impossible weapon lockout.

Aug 24DECISION

Sample weapon readiness at dispatch and publish lockouts at the returned tick

Green now predicts the shot being processed, and saving does not make the weapon wait an extra tick.

Aug 24DECISION

Enforce spinal power tax at player delivery admission

The last locked tick is really locked, for ship and structure targets alike.

Aug 24DECISION

Version replay behavior independently of the extraction oracle

Recorded battles now carry a version that changes whenever their rules change, even when the usual simulation benchmark does not notice.

Aug 24DECISION

Preserve restored weapon delivery state across physical rebuilds

Loading a save keeps the charged shot you saved; jumping systems deliberately clears it.

Aug 24DECISION

Consume render-frame edges once across accelerated simulation batches

Faster play advances the world more often, but a button press still happens once and every real shot gets one visible flash.

Aug 24DECISION

Queue render-frame input edges by simulation generation

A quick button press between simulation ticks happens once in the right world, never zero times or twice.

Aug 24DECISION

Freeze replay compatibility at generation start

A recording keeps the exact game era and charged-trigger state it started with, or it does not export.

Aug 24DECISION

Freeze replay compatibility around content load

A running game records the exact content it loaded, while broken developer metadata can never stop play or damage a save.

Aug 24DECISION

Bound queued camera edges and preserve them across covered ticks

Menu transactions do not eat or fire queued controls, and a burst keeps the eight newest aimed shots in order.

Aug 24DECISION

Bind replay compatibility to loaded pack chains

A replay now names the ships the game actually loaded and rejects impossible weapon state before touching the world.

Aug 24DECISION

Apply flash accessibility at the weapon snap layer

Flash-reduction settings now cover every weapon burst without hiding the shot, its sound, or its charge status.

Aug 24DECISION

Invalidate replay after a runtime pack replacement

Changing a ship during a running session can never produce a replay that falsely claims it started with the original ship.

Aug 24DECISION

Rate-limit flash presentation in render time

Reduced means at most three flashes in any real second at every game speed, and changing the safety setting takes effect now without old flashes returning later.

Aug 24DECISION

Make flash accessibility one application-wide onset authority

Every bright effect now obeys one safety budget, settings only make an existing effect safer, and dimmed lights also finish sooner instead of lingering.

Aug 24DECISION

Settle composite flash onsets at one render phase

One visible event spends once at the moment rendering can actually present it; old sparks never return, but genuinely new later weather can follow the player's current setting.

Aug 24DECISION

Coalesce VFX lights only within one accessibility policy

Combining nearby flashes can no longer hide a bright new light inside an already-dimmed one.

Aug 24DECISION

Bind terminal signal capacity to the supported resident fleet

Every ship in the largest supported battle can die on the same tick without its death event being dropped.

Aug 24DECISION

Dispose caller-owned scene render resources as one aggregate

The game now closes every scene graphics resource exactly once, in dependency order, even when one cleanup operation fails.

Aug 24DECISION

Treat direct and ambient ships as one resident budget

Direct enemies and living-world traffic share one fleet, so asking for more of one leaves less room for the other.

Aug 24DECISION

Size relays from complete same-step producer envelopes

Event buffers now account for everything that can happen in one tick together, not just the biggest event source in isolation.

Aug 24DECISION

Own scene GPU resources from construction through shutdown

Every graphics object has an owner from the instant it is created, and one cleanup failure cannot strand everything that follows it.

Aug 24DECISION

Validate resident population before construction work

Invalid fleet sizes fail before the game allocates or changes anything, and every staged battle gets one intentional population budget.

Aug 24DECISION

Preserve one complete supported event-log boundary

A huge battle may push out old history, but it cannot erase its own opening events while they are still arriving.

Aug 24DECISION

Surface shutdown errors only after framework teardown

Shutdown reports failures only after the engine and window have actually finished closing.

Aug 24DECISION

Make GPU construction and disposal transactional at every owner

A graphics bundle now appears all at once or not at all, and cleanup always attempts every piece even if one piece fails.

Aug 24DECISION

Derive one ordered weapon runtime program before expanding content

Every weapon now reaches combat through one clear sequence of actions, so a larger arsenal can grow without different systems interpreting the same gun differently.

Aug 24DECISION

Keep projectile impact and counterplay orthogonal for the full lifetime

A shell can now keep the damage behavior it was designed for while separately stating whether defenses can shoot it down.

Aug 24DECISION

Derive one fixed player weapon binding table per catalog boundary

The player now has one five-slot combat wiring table, rebuilt only when equipment or definitions change.

Aug 24DECISION

Resolve weapon presentation through one live catalog boundary

Every visible and audible weapon identity now comes from one live presentation card, refreshed as a complete set whenever the weapon catalog changes.

Aug 24DECISION

Compile weapon catalogs as immutable validated artifacts before runtime cutover

We can now build and inspect the whole future arsenal deterministically, but the live game will not use it until each promised behavior has a real executor and proof.

Aug 23DECISION

Give non-ship swarm targets fixed guidance points

Missiles now make the same rising, staggered turn toward stations that they make toward ships.

Aug 23DECISION

Bind durable replays and impacts to current physical identity

Weapons now keep aiming, damage credit, and effects attached to the same real target and gun even through arrivals, repairs, departures, saves, and replays.

Aug 23DECISION

Bind replay starts to the complete world recipe

Replays now refuse unrecorded setup changes and know when any part of their starting world has changed.

Aug 23DECISION

Build one thousand weapons as families, not stat rolls

A thousand names and number tweaks would be noise. Each weapon must change play, counterplay, and presentation while its family teaches a logical path from an introductory lesson to an expert decision.

Aug 23DECISION

A weapon announces commitment in its own visual language

Families are not meaningfully different if charge is invisible or if every muzzle and impact collapses to the same purple treatment. The pre-fire read is also combat information: it tells the player what is coming and when commitment becomes dangerous.

Aug 23DECISION

A full weapon bay refuses without erasing the find

A rare weapon should never disappear because the player approached it with a full rack, and a refusal must not masquerade as an inventory mutation.

Aug 23DECISION

A weapon and its fitting answer different questions

Real variety needs families to change firing behavior without turning every installation and progression rule into another weapon special case. Separating the two lets one tactical idea receive coherent fittings and marks while the rack remains understandable.

Aug 23DECISION

Every owned weapon is one persistent thing

Ownership decisions only matter when the gun the player found is still the same gun after every boundary. Stable identities also make duplicate fittings meaningful and let future marks merge without guessing which copy changed.

Aug 23DECISION

The starter teaches four active roles and one meaningful empty slot

A legal but incomplete rack teaches the role of every baseline channel without pretending the end-game siege slot is free. The empty Spinal is an aspiration and a visible outfitting decision, while separating digit order from firing priority keeps interface familiarity from deciding combat outcomes.

Aug 23DECISION

Empty weapon channels are a reversible fitting choice

The empty starter Spinal is only meaningful if the player can make enough reserve room to fit one later. Old full-bay saves need the same recoverable choice without violating the fixed 5+6 rack or trapping the historical Rail Lance forever.

Aug 21DECISION

Keep the mouse pointer independent of prompt modality

Last-used input answers which prompt is useful, not whether an attached mouse still exists. Hiding the pointer made mixed-device play feel broken and let controller noise erase a basic desktop control.

Aug 14DECISION

Give campaign cargo a distinct data identity

The encrypted reward now stays visibly itself from the wreck to the sale counter, and the game states exactly what will happen before the player commits.

Aug 14DECISION

Project one data-owned refit workspace

Refitting now shows what a module does, what it replaces, and what it costs before the player commits, while the story and ship data stay in charge.

Aug 14DECISION

Evaluate transaction facts before campaign presentation

A completed refit now updates the ship, wallet, and next story objective as one truthful action before the refreshed screen appears.

Aug 14DECISION

Anchor the combat command stack to stable geometry

Target identity, ship status, and combat controls now stay in distinct readable lanes while urgent warnings get the screen to themselves.

Aug 14DECISION

Give authored openings first claim on fleet slots

Story-critical arrivals now take the stage before background traffic, so a set-piece cannot quietly begin with part of its cast missing.

Aug 14DECISION

Preserve authored structure components independently

Multi-part landmarks keep every authored mass through damage while fresh breakaway pieces still separate normally.

Aug 14DECISION

Put the shipping orbit yaw in strict interface data

The opening flight angle now lives in validated presentation data, while purpose-built scenes can still choose their own view.

Aug 14DECISION

Separate travel reels from destination sequences

Built-in animation checks can now wait for the destination battle instead of recording only the journey there.

Aug 14DECISION

Give the weapon bus one geometry authority

The cards the player sees, clicks, and tests are now the same rectangles.

Aug 14DECISION

Compose the left flight instrument from returned geometry

The damage panel reports where it really is, the flight panel docks to it, and every downstream HUD owner sees the same combined rectangle.

Aug 14DECISION

Give top-left resources one geometry and state authority

Credits and cargo now share one truthful instrument, and every neighboring HUD owner uses the same rectangle the player sees.

Aug 14DECISION

Give target command one geometry and state authority

The target data, its actions, mouse hit areas, automation tree, and tests now agree on one truthful instrument.

Aug 14DECISION

Give time rate one control and layout authority

The rate the player sees, clicks, focuses, automates, and tests now comes from one truthful instrument, while the deterministic simulation keeps its existing owner.

Aug 14DECISION

Scale ship emission at the shared voxel boundary

All ships now preserve their authored light colors at gameplay exposure without dimming the rest of the universe.

Aug 14DECISION

Give asteroids a shared directional-light profile

One shared renderer knows matte rocks take less neutral studio light than capital plating, while combat light can still affect them normally.

Aug 14DECISION

Select transient event light once per render frame

Every nearby voxel body sees the same short-lived combat light, selected once, while rocks respond like dark stone instead of glossy armor.

Aug 14DECISION

Route laser light through authored VFX data

Two weapon data rows now make blue laser hits cast blue light without adding another combat system.

Aug 14DECISION

Carry ship material hierarchy in the scene uniform

One shared material profile gives neutral ship plates a darker range without changing faction paint or adding a second lighting system.

Aug 14DECISION

Put capital surface relief under hull-zone ownership

One data value now controls real voxel-readable armor depth, and the structural hull owns the large shapes instead of hoping random detail placement finds room.

Aug 14DECISION

Select capital massing inside the existing hull builder

One authored profile now changes the whole capital body at its structural source while every older ship stays unchanged.

Aug 14DECISION

Let the hull profile shroud the capital weapon

The bow armor and its biggest gun now fit together without making the weapon rules depend on the ship's appearance.

Aug 14DECISION

Bound HUD geometry by visible detail

The cockpit now draws the detail a player can actually see, so busy systems stay clear without hiding damage or targets.

Aug 14DECISION

Resolve blocked campaign copy at the presentation boundary

Gameplay decides whether scanning worked; authored data decides what the player reads when it did not.

Aug 14DECISION

Project the committed narrative choice from the ledger

A recorded decision now carries its exact promise and known consequences into the reply instead of becoming a generic confirmation.

Aug 14DECISION

Project manual UI from one production layout

The cargo screen now tests the exact controls the player sees, including empty holds and confirmation dialogs, instead of trusting a separate approximation.

Aug 14DECISION

Share destination identity across navigation and records

Navigation and ship records now use one source for place names, so the same destination cannot appear under two labels.

Aug 14DECISION

Resolve location identity at immutable read boundaries

The game keeps efficient numeric coordinates inside, then translates them once into the same names and calendar every screen reads.

Aug 14DECISION

Centralize Strategic Table presentation units

Exact simulation numbers stay exact inside, and one tested map layer translates them into readable labels.

Aug 14DECISION

Separate cargo command authority from cargo presentation

Exact bookkeeping still protects every sale and jettison; the screen translates it before the player sees it.

Aug 14DECISION

Resolve transient exploration identity at event capture

Events keep compact deterministic references; the log turns them into stable words before the world that owned those references can disappear.

Aug 14DECISION

Carry authored encounter copy through static system intel

Gameplay keeps its content key; the map receives the words authored for the player.

Aug 14DECISION

Keep construction proofs inside current flight-readiness rules

The screenshot fixture now builds a ship the real game will accept, and the exact labels that fit both wide and compact trays are guarded in code.

Aug 14DECISION

Translate target range and disable time at the HUD boundary

The game keeps deterministic numbers inside, and one tested combat panel translates them into readable range and recovery time.

Aug 14DECISION

Centralize render-tier distance and speed units

Exact simulation values stay unchanged; one small HUD utility makes every screen speak the same physical language.

Aug 14DECISION

Separate returning home from decoding the cipher

Opening station services in hostile space was premature and could lead directly to a refusal. One truthful verb per location keeps the combat payoff moving into the next playable choice.

Aug 14DECISION

Guide the Meridian approach before exposing station services

Arrival at the right system is not arrival at the dock. The former unconditional U prompt directed the player into a refusal from roughly 3.5 km away, while two compact MERIDIAN labels made the named destination ambiguous.

Aug 14DECISION

Name irreversible cargo decisions before commitment

The former Rare Alloy row and Sell 1 from the selected lot? prompt hid both narrative identity and commercial consequence at the campaign's first dockside handoff.

Aug 14DECISION

Turn refits into explicit decisions

A refit should feel like choosing how the ship changes, not decoding a parts spreadsheet or guessing which generic weapon fulfills the story objective.

Aug 14DECISION

Close refits with visible success

Automatically throwing the player back into flight interrupts shopping, while resetting to another weapon or retaining the old objective makes a successful purchase look lost or unfinished.

Aug 14DECISION

Make the final relay readable under pressure

Pressure only works when the player can identify the threat and the required action at a glance. Ambient chatter, clipped geometry, ambiguous contacts, or overlapping controls turn urgency into interface noise.

Aug 14DECISION

Preserve the authored relic silhouette

Damage should make a signature location feel wounded, not erase the authored masses that give it identity and reduce the finale to a flat blue slab.

Aug 14DECISION

Frame the player capital from the stern quarter

The former straight-astern view reduced a long voxel warship to an engine wall. The quarter view makes the ship itself the visual identity while preserving open flight space ahead of the bow.

Aug 14DECISION

Make every ship death leave a warm combat beat

The baseline battle turned six destroyed fighters into tiny white sparks that vanished behind the cold beams. Destruction needs a warm, persistent counterpoint that remains readable without hiding the hero hull or washing out the void.

Aug 14DECISION

Keep the campaign battle line inside the command view

The first temporal capture proved real damage but let both ships drift behind the target panel and local radar, turning active combat into lines entering from off-screen.

Aug 14DECISION

Make weapon impacts light the armor they strike

The old light lost most of its energy while entering the selected-light set, leaving a bright particle pasted over armor whose surface did not react.

Aug 14DECISION

Keep graphite readable beside faction paint

At campaign distance the graphite entered the dark filmic toe before the violet plating and disappeared into the void, even though both materials read correctly in the authored ship.

Aug 14DECISION

Stage campaign battles across three asteroid depths

Ten large inner bodies produced one edge rock in the real Core Signal battle; simply enlarging the quota created HUD-sized slabs before the smaller scale band produced separated depth.

Aug 14DECISION

Break asteroids into real voxel shelves

Radial noise made middle-distance rocks read as repeated rounded pebbles, while unrelated per-cell shades turned their surfaces into checkerboard speckle.

Aug 14DECISION

Keep asteroid facets readable in shadow

The edge rim preserved an asteroid's outline but could not reveal broad shelves turned away from every directional light. Raising the whole rig would brighten ships and weaken the void.

Aug 14DECISION

Keep cold beams visible at command distance

World-unit widths collapsed into one-pixel lines as range increased. Raising collision radius or global bloom would change combat truth or wash the whole frame.

Aug 14DECISION

Let campaign encounters own the command corridor

BORDER CLASH and local radio were accurate but lower priority than BREAK THE GUARD, and all three competed for the same glance corridor.

Aug 14DECISION

Let the Local radar label what matters now

Collision-free words were still not a readable instrument when dozens of equally loud names crossed contacts, service rings, the player marker, and one another.

Aug 14DECISION

Make the weapon bus state its whole command

The old 56px cards clipped MACHINE and SWARM, reduced authored names to one word, and forced the key, AUTO, and x250 into one ambiguous row.

Aug 14DECISION

Make flight command and hull load one instrument

The old floating THR strip and lower damage silhouette nearly collided at 1280, separated by a large gap at 1920, and left ownership, units, assist, and recovery to player memory.

Aug 14DECISION

Make ship stores state the limiting resource

Separate abbreviation pills hid capacity context and forced the player to memorize which unlabeled track meant volume or mass. A dense load could show fewer than its nominal units while silently hitting the mass ceiling.

Aug 14DECISION

Show target command only when it can act

The old TARGET / NO LOCK frame spent a prime corner on one low-value line, the action rows had separate geometry owners, and the auto-fire row advertised the wrong key.

Aug 14DECISION

Make time control a complete instrument

The old frame permanently occupied the command corridor but made the decision itself tiny, hid controller access, and could advertise flight-rate keys inside a map context where they did something else.

Aug 14DECISION

Make built-in screenshots tell the visual truth

A large lower-right slab consumed the world view only when a screenshot was saved, so the evidence misrepresented the game and duplicated facts already stored in its state sidecar.

Aug 14DECISION

Let representative proofs use the shipping camera

Wide 44 to 46 unit proof cameras reduced the capital to a distant test subject and could pass while the shipping view drifted. A partial "default" that retained case yaw had the same problem.

Aug 14DECISION

Keep the planet behind the hero event

The default crescent had become a broad clipped-white wall that rivaled the violet capital, cyan weapons, and warm impacts in normal flight and combat.

Aug 14DECISION

Keep ship emission below the white point

The Kraken's three blue engine materials reached display white across their entire nozzle faces, erasing the concentric core, cyan identity, and separation from the violet transom.

Aug 14DECISION

Keep the asteroid belt below the hero lights

The capital-calibrated key, fill, and rim pushed broad sun-facing shelves toward white, making collidable rocks look like pale props and compete with faction paint, beams, impacts, and the planet limb.

Aug 14DECISION

Let combat events illuminate collidable rocks

Impacts could glow and carve the target while the surrounding rock stayed neutrally lit, making the VFX read like a layer pasted over the physical scene. Full capital-plating response solved that relationship but bleached a sustained-fire target white.

Aug 14DECISION

Make beam color affect the hull it strikes

The beam looked cyan but cast the warm kinetic light used by projectiles, breaking the promised cold-energy and warm-consequence relationship.

Aug 14DECISION

Separate graphite, gunmetal, and faction paint

The authored slate entered the bright diffuse shoulder and became a pale blue-gray slab, flattening material hierarchy even though metallic and roughness data were present.

Aug 14DECISION

Give capitals three readable surface scales

Kraken already contained hundreds of detail objects, but most relief was smaller than one fine voxel and the normal gameplay camera reduced the ship to broad violet and grey slabs. More texture could not create readable physical depth.

Aug 14DECISION

Give the hero capital one continuous armored body

The old linear taper and high outboard nacelles split the ship into a narrow center keel plus detached wide plates, while the target reads as one long armored machine.

Aug 14DECISION

Wrap the spinal driver in violet bow armor

The exposed black battery and long separate prow pulled the first glance away from the connected cruiser body, while the target carries its forward weapons inside the same armored silhouette.

Aug 14DECISION

Let the capital carry the battle frame

The more-astern angle enlarged the stern and compressed the hull into the left half while the planet and empty right field carried too much weight. The broader eye makes the ship the composition without losing forward combat space.

Aug 14DECISION

Let every ship death leave a battle-scale fireball

The authored white-to-amber-to-ember lifecycle was already correct, but the broad shipping camera reduced a fighter death to a small isolated pop. A proportional one-third lift makes the warm event carry background battle weight without changing global exposure or hiding the capital and cold beam lane.

Aug 14DECISION

Keep the visible sun behind the battle

The legacy sun's broad stacked halo remained after the beams cleared and could fuse cold endpoints, a target, and the nearby planet limb into the brightest featureless mass in the frame.

Aug 14DECISION

Concentrate the galaxy instead of filling the void

The previous sky technically had dark space and noise, but one saturated magenta island occupied most of its bright half and the normal battle camera saw a broad rose gradient instead of environmental depth.

Aug 14DECISION

Let a few asteroids carry the depth

Uniform scale sampling made the belt read like same-sized wallpaper. Hard near-to-far strata improved one battle frame but moved proven campaign anchors and put large rocks across the clean hero ship, while shaping the same random roll preserves the established spatial sequence and clear corridor.

Aug 14DECISION

Let small rocks fall back into the void

The real collidable layout already preserves the hero, firing corridor, and campaign anchors, but giving every scale the same light value turns the small depth layer into pale clutter.

Aug 14DECISION

Put the structure behind the paint

The target identity depends on near-black machinery carrying the mass beneath luminous faction paint, but Kraken's largest neutral surfaces still read as pale blue slabs in the shipping battle.

Aug 14DECISION

Keep fleet lasers thin under overlapping fire

Several parallel shots stayed blue but occupied too much of the firing lane as one bright wedge, while removing the floor entirely made distant campaign fire collapse into hairlines.

Aug 14DECISION

Summarize sensor density instead of painting clutter

A tactical display should preserve decisions, not turn a populated system into a luminous knot of duplicated marks.

Aug 14DECISION

Give the opening command view room to breathe

The tighter view made the ship feel massive but let it run into the minimum-viewport instruments, while the old opening proof pushed it out to escort scale. The new middle distance keeps the Kraken complete, dominant, and flyable.

Aug 14DECISION

Give completed objectives their own voice

Major progress was visually clear but shared no audio punctuation, so an important campaign transition could feel like another line of interface text.

Aug 14DECISION

Replace a blocked action hint with the recovery

The campaign already authored recovery copy but the live HUD never used it. A toast was also too fragile because critical dispatch priority and slow cold starts could remove it before the player read it.

Aug 14DECISION

Keep the chosen position visible after commitment

The old response confirmed persistence but emptied the decision column, so the most important moment asked the player to remember what they had just accepted instead of turning it into a clear commitment.

Aug 14DECISION

Keep controller reach after screen entry

Reaching a screen with a controller is not real access if the screen becomes inert once it opens, and mixed-device prompts make a working route look broken.

Aug 14DECISION

Make the Event Log a consequence inspector

Returning players need to reconstruct what changed, when it changed, and what it means without memorizing a toast or decoding clipped rows.

Aug 14DECISION

Put the player's standing first

A returning player needs to understand what a faction means for their fleet now, not search a wall of equal-weight records for the relationship that changes play.

Aug 14DECISION

Make station work inspectable on every input

A docked player should not have to guess how to reach available work, and accessibility tools should describe the same service row the player sees and clicks.

Aug 14DECISION

Make contract consequences reachable on the active device

A funded offer is not a fair narrative decision if the player can read its consequence but cannot tell how to inspect or act on it with the controls already in hand.

Aug 14DECISION

Make actionable dispatches end in a clear player action

A world event only becomes useful narrative communication when the player can understand its cause and consequence, decide what to inspect next, and leave without guessing at hidden controls.

Aug 14DECISION

Carry every mystery into Dispatch

A returning player should be able to reconstruct an investigation and act on it after Continue instead of depending on a missed toast or remembering one HUD line.

Aug 14DECISION

Keep every named rival on the command board

A returning player should recognize who is hunting them and how the grudge escalated instead of depending on an expired hail or a render-session journal.

Aug 14DECISION

Report operational time, not engine time

Simulation ticks and strategic ticks are different technical domains, and neither tells a captain what can be acted on now.

Aug 14DECISION

Keep only interpretable battle records

A report that says UNKNOWN FORCE fought UNKNOWN FORCE preserves no consequence and makes the command board feel unfinished, while partial uncertainty can still be honest and useful.

Aug 14DECISION

Name every Dispatch location as a place

A returning captain should recognize a place from the strategic map without translating an internal system index.

Aug 14DECISION

Speak one galaxy language across every command surface

A captain should recognize the same destination across navigation, politics, work, and history without translating an implementation ID or knowing the simulation clock.

Aug 14DECISION

Show strategic meaning instead of storage scale

Strategic intel should answer who is present, what traffic does, and which hazards matter without requiring the player to reverse-engineer x1000 storage or world-unit conventions.

Aug 14DECISION

Treat cargo as custody, not database state

Exact-lot identity matters because selling or jettisoning the wrong stack is irreversible, but version counters and mixed-domain clocks do not help the player make that decision.

Aug 14DECISION

Describe paused time as a player state

The player needs to know that time is stopped and what changing the rate will do. The simulation clock architecture does not help that decision.

Aug 14DECISION

Record exploration by what the captain found

The Event Log should help the player remember which wreck paid out and what they mined. Array positions only describe how this runtime happened to store those objects.

Aug 14DECISION

Name arrival threats as expected contacts

A captain deciding whether to jump needs to know what contact to expect and how quickly it will arrive. A content key such as border-clash is neither fiction nor operational guidance.

Aug 14DECISION

Describe construction as a physical placement task

SELECT #, GHOST, and ORIENT expose editor implementation language and make an already spatial task harder to parse. The player needs to know which physical part is selected, where the next part will go, and which rotation is active.

Aug 14DECISION

Make target telemetry answer the combat decision

DIST, PD, bare world-unit numbers, and tick suffixes require the player to translate engine shorthand during combat. Cause, recovery time, range scale, and the specific defense being suppressed are the actionable facts.

Aug 14DECISION

Use physical units across ship operations

These instruments are read together while flying, fighting, and comparing upgrades. A shared physical vocabulary lets the player compare distance and speed without learning storage units or compressed developer shorthand.

Aug 14DECISION

Call every weapon mount a hardpoint

The detail pane and title already teach HARDPOINT; introducing a second abbreviation at the exact placement target makes the player decode two names for one object.

Aug 14DECISION

Let the local radar speak in complete operational terms

A tactical radar may be compact, but it cannot require the player to reverse-engineer its private counters and units while flying.

Aug 14DECISION

Give the Galaxy glance layer an uncontested berth

Three partially occluded instruments are less informative than one complete strategic answer. The scoreboard is a deliberate glance action, so ambient and routine status can safely return when the player closes it.

Aug 13DECISION

Render the unreachable voxel globe at background resolution

The distant voxel planet keeps its real materials, lighting, scale, and atmosphere, but the game no longer ray marches every background voxel at the same resolution as the player's ship.

Aug 13DECISION

One writer owns performance telemetry

Performance tools can no longer erase one another's measurements while the game is running.

Aug 13DECISION

Preserve the test-fixture namespace in build output

Developer tests now find their own test data, while players still do not receive that data.

Aug 13DECISION

Budget derived ship-system recomputes instead of synchronizing damage bursts

When several capital ships are damaged together, the game no longer insists on recalculating every broad ship stat in the same frame.

Aug 13DECISION

Spend post-process cost where players can see it

The game keeps its glowy cinematic look, but a fresh install no longer spends frame time on a nearly invisible background blur.

Aug 13DECISION

Keep one previous-good galaxy generation

If the newest save is damaged, Continue now recovers the previous good galaxy instead of throwing away the whole campaign.

Aug 13DECISION

Capture crashes before startup

If the game fails, it now leaves a small local report from startup onward so the failure can be diagnosed instead of disappearing.

Aug 13DECISION

Aggregate activation evidence without identifying sessions

A playtest folder now becomes one readable local scorecard showing where players reached and stopped, without listing who played or which file was theirs.

Aug 13DECISION

Finalize signatures as a new exact package

I made the release pipeline prove that the exact files players receive are signed and trusted without putting private signing credentials into the game project.

Aug 13DECISION

Keep development metadata out of promotion-ready builds

A development build with placeholder store information can no longer be mistaken for the version intended for players.

Aug 13DECISION

Author size-adaptive camera framing as presentation data

Capital ships now stay large and complete on screen during normal combat instead of shrinking into the background or spilling past the frame.

Aug 13DECISION

Preserve bloom pyramid levels during additive reconstruction

Bloom now makes beams and impacts glow without bleaching the ship, planet, and sky out of the picture.

Aug 13DECISION

Make in-game capture the only visual proof path

Visual reviews use the game's screenshot feature. They do not wait for desktop capture access.

Aug 13DECISION

Show one active control vocabulary at a time

P / RS and D-PAD / ARROWS are technically complete but force every player to decode irrelevant controls at the moment they need a clear instruction. A release interface should answer “what do I press now?” in one vocabulary.

Aug 13DECISION

Required campaign actions explain the route the player can actually take

A controller being technically capable is not enough if the objective goes silent after the opening or the next mandatory screen teaches keyboard controls. The prompt must tell the truth at the moment of need, including when the action is spatial or reached through another screen.

Aug 13DECISION

Controller players can inspect and change their own ship controls

“Full controller” is false when a player can fly but cannot open the Controls page, discover Scan, change a button, or recover from a conflict without reaching for a keyboard. It is also false when the UI hides analog ownership or silently restores an intentionally unbound default after restart.

Aug 13DECISION

Core Signal is completable and recoverable with one controller

Controller support is a release promise across the whole mandatory journey, not a title-screen badge or an opening tutorial claim. Completion and Continue are where input, UI, simulation, content, and persistence finally meet.

Aug 13DECISION

Pause safely when the active controller disappears

A controller player must never be stranded mid-combat or inside a menu, but an attached device must not steal focus from someone who is not using it.

Aug 13DECISION

Mandatory campaign kills belong to authored encounters

The objective named a relay guard, but the old reward accepted the first player kill of any non-player ship. That let ambient combat counterfeit a mandatory narrative decision.

Aug 13DECISION

Achievements mark remembered stories, not routine labor

The system should reinforce StarGazer's promise—discovery, consequence, rivalry, and recoverable loss—rather than turn normal play into a checklist. The first two achievements also create useful first-session progression markers without exposing internal campaign facts to the player.

Aug 13DECISION

A player's world and authored ships follow the player, not the machine

Continue, achievements earned offline, and ships built in the Shipyard are player value. Losing any of them on a second computer breaks trust. Conversely, importing another machine's graphics or controller setup can make the game unreadable or unplayable, and shipping crash/activation evidence is a privacy error rather than a convenience.

Aug 13DECISION

Account value gets one previous-good recovery generation

A readable previous account state is better than silently showing zero credits after corruption. This matches the recovery promise already made for the galaxy and achievements without turning device settings into portable account data.

Aug 13DECISION

The Steam demo is isolated unless a later transfer rule says otherwise

A trial should be safe to install before or after the paid game. Valve permits deliberate save sharing between associated products, but an implicit shared directory turns demo iteration, schema changes, and content limits into risks for paid progress.

Aug 13DECISION

End the Steam demo with the cipher aboard and the answer still outside

The cutoff delivers the game's travel, decision, capital-ship combat, destruction, and reward promises before stopping on a concrete unanswered question. Ending before the cipher is decoded preserves a specific desire to continue instead of exhausting the complete first arc or cutting off before its first payoff.

Aug 13DECISION

The standalone demo names itself and leads with its complete promise

A separately installed trial must never make a player wonder whether they launched the demo, the paid game, or a development build. Its first action should also state the playable slice in eight words instead of relying on store copy the player has already left behind.

Aug 13DECISION

Ship the first standalone demo without Cloud or a divergent content fork

Separate application identity and mandatory launch arguments enforce the player boundary already implemented in game. With no transfer promise, synchronizing isolated trial progress has little player value and adds conflict/support risk. Reusing one exact package pair makes the trial mechanically representative and avoids a second build graph before download size or content exposure proves that cost worthwhile.

Aug 13DECISION

Sell one demonstrable capital-ship fantasy in five frames

StarGazer's strongest market promise is the combination of capital-ship command, consequence, strategic travel, and voxel damage. A generic gallery or cinematic-first trailer would make the product look broader but less distinct. Five ordered gameplay proofs communicate the actual loop in seconds and give the demo page enough truthful material to stand alone.

Aug 13DECISION

Make the first Steam trailer a 48-second gameplay argument

StarGazer's differentiator is not a generic space vista. The conversion argument is capital-ship command plus destructible voxel matter plus streamlined space-opera decisions. Front-loading impact and structural change makes that argument survive mute autoplay and Steam's short microtrailer window, while the middle establishes that combat sits inside an authored command loop.

Aug 13DECISION

Claim only English and disclose the broad AI-assisted surface

A broad market ambition does not justify false language reach or a narrow disclosure. Steam separates store translation from in-game support, and its pre-release review compares survey answers with the build and marketing. Exact English copy now gives the owner a clean portal source; future languages should follow real traffic, wishlist, community, vendor, and QA evidence rather than speculative checkbox coverage.

Aug 13DECISION

Test the whole conversion promise with twelve observed strangers

Store art, trailer metrics, and automated routes can prove integrity but cannot tell us whether a stranger understands the fantasy or wants it. Twelve is intentionally a lean qualitative matrix: enough to expose repeated breakdowns across three experience bands, small enough to iterate before broad market testing. It does not estimate 250,000-copy demand.

Aug 13DECISION

Make achievement state readable before Steam names it

A Steam thumbnail has to identify the accomplishment before its surrounding text is read, and locked versus unlocked must survive grayscale and 64px presentation. Five unrelated illustrations would create more art but less product identity.

Aug 13DECISION

A named rival interrupts; ambient traffic does not

The simulation already remembered escape, observed the real cooldown, and returned with a larger authored wing, but the decisive beat looked like one more 14-pixel chatter line. A grudge is valuable only if the player recognizes ownership and escalation at the moment it becomes actionable. One concise alert preserves combat flow better than opening a modal conversation or adding another persistent HUD panel.

Aug 13DECISION

Make luminous voxel space opera the visual target

StarGazer already has distinctive voxel ships and systemic destruction, but too many playable frames spend that identity on distant subjects, flat black space, evenly lit hulls, or effects that do not light their surroundings. A concrete target lets every rendering choice answer the same question instead of accumulating unrelated polish.

Aug 13DECISION

Make authored materials visible on voxel ships

The voxel geometry already carried strong deck, armor, machinery, and aperture rhythm, but a single diffuse response flattened those masses into one material. The approved visual target depends on luminous color cutting through a dark machine, which requires the machine itself to read as more than one surface class.

Aug 13DECISION

Keep energy color visible around every hot core

The approved target depends on cold capability meeting warm consequence. The previous beams read as hairlines, crossed drive cards stacked into white rods, and the capital-death proof landed after its strongest warm phase.

Aug 13DECISION

Build environmental depth from real collision bodies

The approved visual target needs near, playable, and far scales in one frame. The old 350 to 850 unit belt left normal hero cameras empty, while fake foreground dressing would make the pixels disagree with navigation and weapons.

Aug 13DECISION

Stage authored confrontations inside the player command view

The guard had been displaced roughly 1.7 kilometers by ambient world-origin keepout, the authored class could silently resolve to another hull, and the single-line objective ran beneath the target panel. That made a pivotal confrontation look empty and its command text harder to read even though the encounter technically existed.

Aug 13DECISION

Present the Core Relay finale as an actionable three-subject climax

The old proof booted the destination outside the campaign, hid both ships, displayed NO LOCK, and let a flat relay slab dominate the frame. It verified debug slot counts instead of the climax a player actually sees.

Aug 13DECISION

Make a rival return interrupt the battle, not the HUD

The prior frame said RETURN 2 but showed NO LOCK, no rival hull, a flat stern, and two equal-weight diplomacy notices. It announced escalation without making the threat playable.

Aug 13DECISION

Let a rival's witnesses arrive as a hunting party

The old proof killed the rival before arrival and reduced this distinct encounter to the same DIRECT HAIL notice as an ordinary return. The data said hunting party while the playable frame said generic contact.

Aug 13DECISION

Make wide tactical frames prove a living world

The stale proof pointed at empty sky, exposed the developer panel, and described ships that had moved out of frame. A wide exception to the hero-ship law still has to show playable subjects.

Aug 13DECISION

Make the final rival return a capital showdown

The authored third rung already existed, but no live route or permanent frame proved it. A larger fleet hidden beyond marker scale is escalation in data only, not a climax the player can read and act on.

Aug 13DECISION

Announce an authored system opening at first contact

The border clash was present in simulation state but invisible from the normal arrival camera. An unlabelled distant battle becomes background noise even when its encounter data is correct.

Aug 13DECISION

Make the home opening read as a convoy ambush

The home opening already had a distinctive cast, but it appeared only as distant incidental flashes inside the traffic proof. Its capital-versus-frigates shape deserved an actionable introduction rather than anonymous background combat.

Aug 13DECISION

Give the Kraken a legible hero drive bank

The old repeated white circles read as a placeholder matrix and hid the ship's scale. A few framed cores match the approved capital-ship target and give the stern one strong visual idea.

Aug 13DECISION

Make capital wreck scars read as aftermath

Immediate additive scar cards competed with the blast and appeared as large soft pink blobs, obscuring the brighter hull breakup without reading as damage or debris.

Aug 13DECISION

Keep asteroid mass dark without losing facet read

Large foreground rocks were collapsing into near-black cutouts against the violet nebula. Raising global light would also wash the Kraken, weapons, and sky, while the owning problem was the rock material range.

Aug 13DECISION

Give capital destruction a broad warm fire body

The approved luminous space-opera target makes warm consequence as substantial as the cold weapons that caused it. The former star, thin ring, and small flipbook puff did not carry enough visible mass for the game's largest ship class.

Aug 13DECISION

Make faction charter progress read as a campaign

Long faction stories need visible momentum and a legible payoff. The old STAGE 1 OF 3 line collapsed two different scales of progress and buried the charter reward inside dense work terms.

Aug 13DECISION

Let a final faction charter end with earned authority

A three-chapter campaign needs a distinct culmination in the moment and a lasting record afterward. A routine success toast alone would make the faction-wide payoff feel like another completed job.

Aug 13DECISION

Make ambient comms yield to flight instruments

Useful first-session information became noise when four lines crossed the flight instrument rail. Actual occupied bounds keep the compact composition readable without a fragile viewport breakpoint.

Aug 13DECISION

Lead the first map open with the active objective

The objective was truthful but visually stranded among a thousand systems. Leading with its route and dossier turns the map into the next playable decision without taking agency away.

Aug 13DECISION

Match every Signal Deck prompt to the active device

The game accepted controller input while its signature narrative screen still taught only arrow keys, Enter, and Esc. Truthful prompts keep the first meaningful choice from becoming an avoidable controls test.

Aug 13DECISION

Leave the relay cipher at the guard wreck

The first fight needs a readable payoff and one final act of player agency. Automatic delivery made the reward causally invisible, while a glow alone disappeared into bright planets and wreck sparks.

Aug 12DECISION

Boot and travel share one fleet cook and cache owner

The game now reuses already-built ships and has one trusted way to prepare a system fleet, which makes later starts dramatically faster. A brand-new installation still waits far too long, so the release blocker remains open and the next fix must show the title before that work or ship validated opening ships ready to load.

Aug 12DECISION

Load the default galaxy from its deterministic bake

The game now loads its unchanged galaxy backdrop instead of rebuilding every cloud and star lane before showing the title.

Aug 12DECISION

Ship the golden-path fleet through the existing recipe cache

The first battle and first jump now load their ships from the game instead of building them on the player's machine.

Aug 12DECISION

Treat the validated depot as the release artifact

A build is not shippable until the exact files a player receives pass the package gate.

Aug 12DECISION

Measure performance through the player artifact

Performance evidence now comes from the same game package a player would install and says which kind of machine ran it.

Aug 12DECISION

Measure the paced player loop

Release checks can now measure how smoothly the delivered game actually plays instead of inferring it from an offline test.

Aug 12DECISION

Resolve wound exposure only when an emission is due

The game now checks whether a wound can emit only when it is actually time to emit, instead of repeatedly searching damaged hulls between visible effects.

Aug 12DECISION

Normal flight controls stay inside the safe hull envelope

A normal bound control that silently removes real voxels looks like a rendering defect and punishes the player for using the ship as offered. Damage must communicate an exceptional maneuver, not ordinary flight.

Aug 12DECISION

Strategic map objects own nearby, explicit actions

A map is a planning surface, so the object being considered should explain what the player can do without forcing an eye jump to the opposite corner or starting travel from an ambiguous selection.

Aug 12DECISION

The release opening teaches one truthful action at a time

A complete campaign is not release-ready when a cold player must guess its first verb or reach for another device. The objective should say what matters, then expose the exact control without becoming a tutorial wall.

Aug 12DECISION

Measure the opening without profiling the player

I need honest timing and abandonment evidence, but a solo game does not need identity, wall-clock timestamps, hardware fingerprints, file paths, or player text to learn whether its opening works.

Aug 12DECISION

First install earns attention before it finishes building the world

A long black or frozen-looking start spends player trust before the game makes a promise. Honest, readable feedback gives the player a responsive front door without inventing a percentage, exposing engine vocabulary, or reducing the living-system population.

Aug 12DECISION

Ship only platforms the build can actually launch

The former universal claim produced an x86_64 app host beside an arm64-only FNA3D library. A publish command succeeding is not evidence that the game can launch.

Aug 12DECISION

Store support starts at the supported runtime floor

I ship.NET 10, whose current supported consumer matrix starts at Windows 11 and macOS 14. I will not call a system supported just because the binary happens to open there.

Aug 11DECISION

UI motion is quiet, responsive, and optional

Command interfaces feel premium when every response is immediate and coherent, but constant motion competes with ship combat, dense decisions, and readable status. A stable whole-control frame remains the primary selection cue.

Aug 9DECISION

Faction work grows as authored sequel arcs

The existing 11 proof-backed mission verbs are broad enough; the thin part was dramatic composition, contact variety, and persistent progression between authored operation sets.

Aug 9DECISION

Exploration grows through authored mysteries, not coordinate chores

Procedural discovery only stays interesting when the thing it casts has an authored question, escalating evidence, and a remembered payoff. More rolls against eight clues would increase repetition, not playtime.

Aug 9DECISION

Specialist hulls make fleet composition readable

More silhouettes only create lasting play when a player can infer what a wing is trying to do. The catalog needed cargo traffic, harassment craft, protective screens, standoff pressure, and heavy line targets, not six more versions of the same gun brick.

Aug 9DECISION

The armory grows by combat questions, not stat tiers

A 100-hour combat game cannot get its longevity from five ascending damage numbers. It needs recognizable reach, cadence, geometry, target priority, and counterplay that change how the player flies and which enemy matters first.

Aug 9DECISION

The content century is authored arcs plus remembered selection

More jobs only become more play when the galaxy remembers what the player just did and when repetition advances an authored relationship. Three mandates let each faction establish its ethic, complicate it through a second contact, and finally force an ideological payoff. Ledger-aware selection gives the procedural layer a short memory without starving live strategic needs or inventing a second quest state.

Aug 9POSTSHIPPED

The Galaxy Should Remember Your Name

I stopped treating faction work as a pile of missions and started treating it as a relationship that remembers what I have done.

Aug 8DECISION

Let an early rival bring witnesses

The second atom needs a different dramatic purpose, battle shape, cadence, and eligibility rule so the situation vocabulary proves it can author variation instead of reskinning one return.

Aug 2DECISION

The focus marker is a leading rail, not an outer ring

The owner looked at the title screen and asked why New Game had "a red square over it" that "looks so out of place" — and it did. Two coral marks fired for one state: an outer StrokeRect ring plus ControlFrame's engaged rail. Worse, the ring drew hard 90° corners while every control on screen uses a clipped/beveled frame, so the only sharp rectangle in the interface sat on the default menu item and read as a stray debug box. The 4px rail also sat on top of the button's own border and butted against the label. The code even documented the intent it had lost: focus was meant to be "an outer navigation ring, distinct from an action's semantic accent border," but the rail turned accent on focus too, collapsing the distinction.

Aug 2DECISION

Selection follows the input you are actually using

the owner: *"the highlight effect needs to just be on hover, its weirdly being sticky."* Two systems were drawing one look. Hover already existed (a scale + lit frame), but the KEYBOARD focus marker stayed parked on whatever was last focused — so after boot, New Game stayed lit while the mouse moved elsewhere, and the menu read as stuck. A screenshot of the menu could tell you where the mouse used to be.

Aug 2DECISION

The UI framework grows before the screen count does

the review measured ~2,000 lines of framework carrying ~21,000 lines of hand-rolled panels, with 58% of panel code outside the layout system and 8 of 18 screens exempt from the layout gate. Tripling the screen count on that shape multiplies the hand-rolled half. The specific blocker for the owner's stated direction (animations, transparency) was that two thirds of the widget code scaled alpha only, so the first fade would have made most of the UI GLOW instead of dissolve.

Jul 31DECISION

A faction withholds work from a captain who broke its line

The Signal Deck shipped three recorded positions and nothing anywhere read them, so every vector cost the same and bought the same galaxy. A choice that changes only the reply text is a menu, not a decision. Trust is the right currency for the first consequence: Halcyon's most sensitive work is exactly what a faction gives to someone who respected its line, and withholding it is a consequence the player can feel without being told.

Jul 30DECISION

Hardpoint pods size screen-constant, like every other billboard

The markers showing which gun sits at each mount are small pips on the hull again instead of big cards covering it.

Jul 30DECISION

World-space weapon hardpoint pods REMOVED

The bright squares stuck to the ship are gone. The armory still shows which gun is on which mount, on its own schematic, which is the only place that ever showed it.

Jul 29DECISION

Project strategic needs instead of adding a second AI

One connected decision chain now carries distant events into the ships and jobs the player sees.

Jul 29DECISION

Contract content joins the faction library

Contract files are now first-class faction data, not loose mission scripts.

Jul 29DECISION

Contract completion preserves authority under cargo, encounter, and save pressure

Contracts now survive full cargo holds, old saves, distant encounter resolution, and retries without cheating or losing the player's progress.

Jul 29DECISION

Faction needs must become visible work

Rich lore and combat doctrine were not enough while several strategic goals had no action and the civilian ships in front of the player did not respond to what their faction needed.

Jul 29DECISION

Faction work has distinct funded identities

A generic job board would flatten the faction canon into color and copy changes. The work itself must reveal what each faction values and refuses to do.

Jul 29DECISION

Faction charters grant durable institutional access

A charter is an institutional relationship, not a temporary mood bonus. Its result must survive contact churn and have an actual gameplay consumer.

Jul 29DECISION

Contract access and history are different player surfaces

A public board that leaked covert work, one ledger that mixed offers with outcomes, or an immediate abandon button would make channel, status, and consequence unreadable even when the simulation was correct.

Jul 29DECISION

Faction contracts are authored obligations, not interchangeable jobs

Faction lore only matters if the player can recognize it from what a faction asks, what it refuses, how it settles, and what changes afterward. Repeating one easy operation or resolving an unrelated crisis would reduce that identity to prose.

Jul 29POSTSHIPPED

Nothing Happens Until I Show Up

I decided the galaxy would never advance on a clock, only on what I actually did out there, and then spent two weeks making good on it.

Jul 28DECISION

Command UI roles have one authored and rendered owner

Change the authored command palette once and the whole ship computer follows it.

Jul 28DECISION

Roster loads resolve one complete saved-ship revision

Loading a saved name always produces one real version of that ship, never a hull from one save and modules from another.

Jul 28DECISION

Native UI layout responds to information density

Each screen uses the shared system at the size its content needs, and small viewports keep their proven controls.

Jul 28DECISION

UI clauses fail at their owning boundaries

The standard is connected to the data, controls, tests, and visual proof, so future UI changes cannot quietly bypass it.

Jul 28DECISION

Narrative graphs reuse the persistent campaign fact ledger

Story files describe the conversation, the simulation records the choice, and the same save already remembers it.

Jul 28DECISION

Construction recipes compile into ordinary ship packs

The editor produces a normal StarGazer ship. It survives saving, loading, damage, and flight through the existing pack path.

Jul 28DECISION

The interface reads like an operational spacecraft

The UI foundation was clear but still felt like a collection of separate game panels. The captain needs target state, ship condition, weapon readiness, and alert severity to scan as one operating system.

Jul 28DECISION

Screen space serves the current decision

A coherent visual language still fails when important copy truncates, support text fades away, or empty chrome competes with the ship.

Jul 28DECISION

The command interface has one tested design standard

A visual direction can drift into tiny text, decorative noise, input dead ends, or inaccessible state unless the same rules guide design, implementation, and review.

Jul 28DECISION

Conversations are compact command decisions with durable consequences

Long dialogue trees and vague paraphrase choices interrupt the space game without giving the player meaningful command. Compact packets preserve pace while persistent facts let later missions, factions, and speakers remember what the captain actually decided.

Jul 28DECISION

A ship can begin as an empty grid

A Starfield-level Shipyard needs structural authorship, not only sliders and module swaps. An empty start, visible geometry, exact blockers, and safe drafts make construction understandable without replacing the existing procedural hull path.

Jul 28DECISION

Shipyard highlights belong only to the active editing mode

The stale Broadside wash appeared as a bright yellow card behind the selected Systems mount, obscuring the ship and making two unrelated selections look active at once.

Jul 27DECISION

Core Signal finale is authored gameplay

The last Core Signal jump now reaches a real place with a real battle and hazard. The player must bring the Relay Lens, survive the breach, and scan the choir while the fight continues.

Jul 27DECISION

Pack v2 owns a strict ship-system node catalog

Ship packs now carry the install points the future editor will use, and broken or stale node data stops at load.

Jul 27DECISION

Ship layouts compile before flight

The Shipyard can now say whether a ship can fly and what it can do before the game launches it.

Jul 27DECISION

Shipyard system placement is a full runtime-backed editor

The player can now place owned machinery on real mounts, see the result, save it, and fly the accepted build.

Jul 27DECISION

Small-craft RCS exhaust never points into the hull

Fighter maneuvering jets now fire away from the ship, not through it.

Jul 27DECISION

Refabrication restores derived ship capabilities in the same tick

A rebuilt ship is healthy immediately. Its engines, guns, shields, cargo hold, and mass no longer wait on a recompute that may never happen.

Jul 27DECISION

Verification jobs have one bounded orchestration owner

The same checks now finish in about half the time, and each failed child leaves its own reliable evidence.

Jul 27DECISION

Travel and same-world worker defaults stay conservative

Whole-test parallelism is a clear win. More background ship cooking and live simulation threading are not proven wins yet, so they stay off.

Jul 27DECISION

Project skills have one owner per workflow surface

Agents now have fewer overlapping checklists and one clear place to look for each kind of work.

Jul 27DECISION

Keep web design iteration and native UI on one contract

I can explore interfaces quickly, but the version players see is always the real game screen and it is checked in every important state.

Jul 27DECISION

UI semantics live below the input surface

Every way to operate the Shipyard now obeys the same rules, and the real screen uses the same tested components as the gallery.

Jul 27DECISION

UI state is effective, bounded, and torn down with its screen

Hidden or closed UI is truly gone, long text stays inside its control, and every accepted theme definition is safe for the native renderer.

Jul 27DECISION

Animation verification is a distinct visual proof surface

I made animation checks put the whole visual progression side by side so the judgment comes from seeing the effect, not trusting a number.

Jul 27DECISION

Heavy verification runs once at landing

Small changes now get quick checks while I work, and the long safety sweep happens once when the finished result lands.

Jul 27DECISION

Authored interface definitions are safe for every native control

If a theme definition loads, the native UI can actually render it safely, and a missing theme authority fails loudly instead of pretending defaults were authored.

Jul 27DECISION

Shipyard operations expose one canonical state to UI and automation

Mouse, controller, automation, and failure handling now agree about what is focused, dirty, busy, and safe to leave.

Jul 27DECISION

Ship designs and UI proofs have complete lifecycle ownership

The game now saves, restores, applies, rejects, and tears down the same complete ship design the player sees.

Jul 27DECISION

Shipyard preview publication is one recoverable transaction

Fast edits, Undo, failed previews, controller navigation, and first-load recovery all preserve the exact ship the player meant to build.

Jul 27DECISION

The Core Signal ends at a memory choir under quarantine

The finale needs a distinct place, factions with motives, and pressure that exists without the player or a test harness. The Lens also needs to be a real key to the source, not only a checklist item from the prior dock beat.

Jul 27DECISION

Ship customization uses authored system nodes

Starfield-style ship building needs visible, stable placement points and clear flight errors. Pack-owned nodes also give damage, save data, preview, and runtime compilation one shared identity.

Jul 27DECISION

Ship modules install into physical system slots

Counting every nozzle as a separate engine would make large ships expensive and overpowered for having richer geometry. The ship should be balanced by installed machinery, not by how many visual outlets the artist authored.

Jul 27DECISION

Ship systems affect flight and survive outside the editor

Ship modules need consequences in flight, but the editor graph cannot become a per-tick simulation graph or replace proven weapon ownership.

Jul 27DECISION

Shipyard layouts are owned, previewed, and applied at dock

A placement editor must be safe to explore. A click cannot mutate combat state, erase a module, or launch a ship with a hidden invalid build.

Jul 27DECISION

Make Shipyard decisions readable before they are committed

A deep ship builder is useful only when the player can predict what a change does and recover from a bad draft without decoding compiler output or losing sight of the ship.

Jul 27DECISION

Shipyard controls have one truth across every input

Input parity is a gameplay rule, not a documentation promise. The player must not receive a different inventory or draft result because they used a controller, and a visually strong selection must be the thing a click actually selects.

Jul 27DECISION

Leaving Shipyard never destroys an uncommitted systems draft silently

A high-agency builder has to be safe to explore. Silent draft loss and controller dead ends turn customization into a trap even when the underlying compiler is correct.

Jul 27DECISION

Shipyard exit is visible, modal, and safe across tabs

A draft remains real when its tab is hidden. Exit safety cannot depend on which panel happens to be visible, and a modal must own both pixels and input rather than merely painting above live controls.

Jul 27DECISION

Hull and systems edits share one safe Shipyard draft decision

Hull edits are no less valuable than module edits. A player must not lose either kind of work by changing tabs or leaving, and a long cook cannot masquerade as an ignored input.

Jul 27DECISION

A saved Shipyard build means the whole ship

Players do not distinguish a hull recipe from the ship they just configured. Silently dropping placements on Save or Undo violates the editor's promise more severely than a visual defect.

Jul 27DECISION

A Shipyard preview may fail, but the player's design may not

High-agency customization has to remain understandable under latency and failure. Silent stale previews, endless loading, or input-specific dead ends make experimentation unsafe even when the underlying save data survives.

Jul 26DECISION

Architecture readiness fixes get permanent guards

The checks now find the runtime consistently, UI screenshots wait for their click to land, and the orbit camera has a direct self-test.

Jul 25DECISION

Vertical slice P4: recovery is saved signal state

Death now leaves a durable recovery receipt, so the campaign can pick back up instead of pretending the setback never happened.

Jul 25DECISION

Vertical slice P5: live weapons finish the damaged guard

The test captain now has to finish the wounded enemy with the real guns instead of getting a hidden cleanup shove.

Jul 25DECISION

Vertical slice P6: reward, dock, and outfitting are real edges

Winning the fight now gives you a useful thing, and the route spends it at the dock like a player would.

Jul 25DECISION

Vertical slice P7: the finale is scan-backed campaign state

The last beat now asks you to jump to the relay and hold the scan under pressure instead of quietly ending in the background.

Jul 25DECISION

Vertical slice P8: completion is a screen plus saved acknowledgement

The game now has a real end screen, and pressing Continue Sandbox is saved instead of being a temporary pop-up choice.

Jul 25DECISION

Vertical slice P9: player death recovery is catalogued

Getting destroyed now shows a clear recovery panel, and that screen is part of the visual test catalog.

Jul 25DECISION

Vertical slice P9: recovery keeps the relay reward reachable

Death can no longer strand the mission prize, and the first episode now tests the intended wounded guard instead of a random tougher ship.

Jul 25DECISION

Vertical slice P10: evidence gates are executable

The first episode now has a repeatable proof report, and wrecks are sized so they can be looted without crashing the system load.

Jul 25DECISION

Vertical slice P10: app shell proof is executable

The start, first scan, first jump, and end of the first episode now run through the real app loop instead of only through sim tests.

Jul 25DECISION

Vertical slice P10: app route proves combat reward

The first episode app proof now makes the reward drop come from a player-owned combat kill instead of skipping straight from the first jump to the ending.

Jul 25DECISION

Vertical slice P10: app route proves full Core Signal completion

The automated app run now plays the first episode from title to ending instead of cutting from the first fight to the victory screen.

Jul 25DECISION

AI gameplay verification is an explicit matrix

The game now has a checklist that lets the AI play the first episode and say exactly which part stopped working.

Jul 25DECISION

Combat proof gallery carries fleet, beams, and damage

The proof report now shows the battle, the lasers, and the ship damage instead of asking readers to trust a hidden state file.

Jul 25DECISION

Pause inventory reuses the bay equip seam

The new weapon inventory screen uses the same equipment rules as the rest of the game, and the ship now shows visible weapon pods on its authored hardpoints. Current firing authority is still group-level; the mount index is placement validation and visual identity until the future per-mount fire-stats slice.

Jul 25DECISION

Every lead target must be playable

Lead-chain content already allowed non-POI vocabulary, but the runtime only advanced POI types. That made some clues authorable but impossible to complete. The fix keeps the vocabulary and makes it true in play instead of shrinking clue content back to signals only.

Jul 25DECISION

The vertical slice advances by facts the player caused

The vertical slice is supposed to prove start-to-finish play, not prove that a test harness can nudge state. Fact-backed progression gives every milestone a durable receipt that survives Continue and can be audited for provenance. It also scales cleanly: later authored content can add new facts without inventing a custom flag field for every beat.

Jul 25DECISION

Travel progress needs provenance

Moving the player between systems is too important to hide behind CurrentSystemIndex = n. Without provenance, a full playthrough can pass while skipping the act of travel. The audit makes travel evidence legible: the player route asked, it was accepted for a reason, and no hidden direct relocation happened.

Jul 25DECISION

Beat ids are not objective copy

A vertical slice is only playable if the player can read what to do, where to do it, why it matters, what changed, and what comes next. Slugs are useful for determinism and reports, but they are not instructions. Making copy required in schema prevents the team from accidentally shipping a technically complete but player-hostile spine.

Jul 25DECISION

The first Core Signal must be scanned

The opening must teach the player that campaign progress comes from doing ship actions in the world. A passive first beat made the story move without the player proving anything.

Jul 25DECISION

Travel must read as a player command

The player needs to understand why a jump can or cannot happen. The test needs the same proof: who asked to travel, where they asked to go, and whether the map allowed it.

Jul 25DECISION

Death keeps the Core Signal alive

The slice needs to survive combat tuning. If dying wipes or hides story progress, every later fight becomes a soft-lock risk instead of a setback.

Jul 25DECISION

The first Core Signal duel is a wounded capital

The route needs a kill that comes from the player's guns now, but full-health balance belongs after reward, dock, and finale beats exist around the fight.

Jul 25DECISION

The first Core Signal reward must be used at home

A vertical slice needs a post-fight breath that changes the ship and confirms the kill mattered. If the reward only advances a hidden flag, the dock, cargo, wallet, and loadout systems do not become part of the player journey.

Jul 25DECISION

The Core Signal ends at a relay under pressure

The slice needs a climax before the completion screen exists. A final jump and scan keeps the end tied to flying, pressure, and the strange signal.

Jul 25DECISION

The Core Signal needs a quiet victory screen

The player needs a clear breath after the relay overload. A visible ending makes the slice feel like an episode, and the saved sandbox acknowledgement lets the world continue afterward.

Jul 25DECISION

Death should explain the tow home

The player needs to understand that death is a setback inside the run, not a broken save or a developer reset.

Jul 25DECISION

Death cannot strand the relay prize

A story-critical reward should be a setback risk, not a campaign soft-lock. The player can lose time and pay recovery costs, but the first episode must remain finishable.

Jul 25DECISION

Derelict hulks stay salvageable, not system-breaking

A fighter wreck was too small to support local breach-and-spill gameplay, while a capital wreck could crash an authored campaign boot before the player saw the map.

Jul 25DECISION

Objective travel completes when the captain arrives

The objective tells the player to jump to the revealed source. Holding that beat until conquest made the next reward/refit beat invisible even after the player did the requested action.

Jul 25DECISION

Make capital combat heavier and easier to read

The ships were moving and trading fire, but the proof frames and feel still read too polite. I want a capital ship to take a moment to swing around, then make its lasers, plumes, and wounds obvious when the battle opens up.

Jul 25DECISION

Put weapon inventory inside pause

Weapon swapping is part of the captain's build, so it should feel like placing modules on the hull instead of clicking a small list. The pause flow is still the right home because it sits beside cargo, map, event log, and settings.

Jul 23DECISION

Every system has a typed, lethal, orbited star

the sky was a lie — one hardcoded sun decal shared by every system, one planet pinned to one constant, a moon that followed the camera. A living galaxy needs each system to LOOK and BITE differently; the star taxonomy + typed planets are the per-system identity layer, and the lethal star turns the sun from wallpaper into geography (the harbor is safe BECAUSE the arena sits outside the warn band — the validator enforces it).

Jul 22DECISION

Capitals are bosses; the mobs are fighters, frigates, and light capitals (owner edict)

A battle of nine capitals makes capitals worthless and fights end before they read as fights. Rarity is what makes a boss a boss.

Jul 21DECISION

The save file is one galaxy save plus save points

Only credits cross processes today, so Continue restoring "everything" is net-new serialization, and the shape has to be pinned before WP1 starts adding fields to it.

Jul 21DECISION

Repair and revival REBUILD, not restore

The one re-knit path (BrickVoxelDamageState TryRestoreCell, canon law 4) refuses a killed hull and released cells, so severed matter is gone for good (canon law 3) and a dead ship's cells can never be un-killed, making a fresh fabricated hull the only honest way back to whole.

Jul 21DECISION

Failure fiction is harbor revival

No permadeath was already decided, so death needs a fiction that costs something without rewinding the living galaxy or wiping progress.

Jul 21DECISION

Spend model is outfitting at friendly structures

The slice needs one legible thing to spend on, and outfitting turns every kill into buying power without committing the galaxy to an economy shape yet.

Jul 19DECISION

Galactic credits — earn-only wallet, kill bounties, loot canisters (WP1)

The living galaxy needs a reward loop for its combat, and bounty + salvage is the smallest one that reads. Earn-only is deliberate: the economy-shape fork (what credits BUY) stays open per the gameplay-structure decision — nothing here bakes in a spend model.

Jul 19DECISION

Galactic credits — the money you can SEE (WP2)

WP1's earn loop was invisible — money that doesn't show isn't a reward. One warm accent color across every credit surface is the cheapest possible readability rule.

Jul 19DECISION

Weapons fire only at targets (owner edict)

Owner, after diagnosing the "blue sparkles": the armed auto-laser battery volley-fired 14 beams into empty space on every trigger pull — pure visual noise, wasted reactor, no meaning. "Weapons shouldn't fire without a target anyway. That is the new rule. Everything that can be shot can be targeted as well."

Jul 19DECISION

Sub-light drive VFX become a speedometer; standoff pulled to 500u

VFX that read as a live speedometer make the drive legible without ever checking the SPD number; a 500u park distance matches where the owner actually wants to arrive.

Jul 18DECISION

Structures get a layered material identity plus lit windows

Structures read as flat single-color silhouettes — identifiable but dead. Ships got 22 materials through the same per-voxel pipeline; structures authored 2. Windows are what make a silhouette read as a *place*.

Jul 18DECISION

Structures stop being jack-stones — a 12-skeleton shape language

One grammar meant every station in a 1000-system galaxy was the same jack-stone with different colors. Shape is the first thing a player reads at range; twelve skeletons x drawn parameters x styles is where "every structure feels found, not stamped" starts.

Jul 18DECISION

Non-faction style families + the condition axis (WP2 of the content machine)

A thousand structures need more than shape variety: they need wear, voice, and builders that aren't the eight ambient factions. The condition axis is the "shattered/derelict" answer WP1 deferred — it composes over EVERY skeleton instead of being one more shape.

Jul 18DECISION

1000-structure content machine — density, ancient placement, seeded identity (WP3)

WP1/WP2 built the vocabulary; nothing in the galaxy spoke it. Placement density, relic builders, seeded chassis picks, and composed identity are what turn 15 chassis × 17 styles × 5 conditions × 10 registers into ~97k distinguishable identities a player can actually encounter — and the audit is what keeps that true forever.

Jul 18DECISION

Seven alien factions become full canon

A faction must change how its people speak, bargain, fight, build, joke, and remember. Palette swaps and placeholder empires cannot carry diplomacy or story.

Jul 18DECISION

World events become player dispatches

A living galaxy has no value if its wars, disputes, treaties, and consequences happen only in hidden state or brief toasts. The player needs durable context without stopping distant simulation.

Jul 17DECISION

Damage outcomes coalesce per attacking ship, so no battle can overflow the political queue

A long battle used to slowly fill a political ledger until the game crashed. Now each ship's ongoing bombardment is one running entry instead of thousands of drips, while kills stay their own line items — the ledger can no longer overflow, and the politics mean the same thing.

Jul 17DECISION

The galaxy is a spiral of constellations

The old uniform-noise scatter read as a chart, not a place. A spiral of constellations gives the map a silhouette, gives regions somewhere to live, and gives factions readable homelands — while staying a pure seeded function with the same determinism story as before.

Jul 17DECISION

A menu owns the screen

A UX review of the old menu found it never owned the screen — the fps counter, throttle gauge, hotbar, target-lock box and dev diagnostics all stayed lit around a small centred panel, and the cyan dev menu clashed with the amber panel. A menu should command the screen; the player's eye should land on it, not fight eight glowing instrument clusters.

Jul 17DECISION

Swarm missiles become slow white naval salvos

Owner: the swarm missiles should move slower, carry a whiteish trail, move like a space naval missile, and be a bit more epic.

Jul 17DECISION

The sub-light drive is the player's fast-travel mount

The player needs real mobility inside a local system — a main ability to close big distances fast — without it being a free "always-on" speed that trivializes combat. Tying it to fly-to (a locked destination) keeps it a deliberate travel tool, not a combat dodge; the damage dismount + cooldown make it a commitment.

Jul 17DECISION

The sub-light drive looks sub-light

The drive was mechanically fast but visually indistinguishable from fly-to. A mount needs a mounted look — the player should FEEL the mode change the moment it engages, and read it on any other ship later if AI ever gets drives.

Jul 16DECISION

Make campaign regions a resolver-owned source of truth

One campaign table says what each part of the galaxy is, when it opens, and what kind of systems it tends to make.

Jul 16DECISION

Gate generated system quality through playable surfaces

I made the generator prove each system has a readable map, safe starting point, living factions, and useful places before it can pass.

Jul 16DECISION

Add one deterministic gameplay journey smoke

I made the game play a whole campaign by itself and explain where the journey is thin.

Jul 16DECISION

Make the whole campaign readable as one report

The game now plays a full campaign by itself and gives us a report a person can read.

Jul 16DECISION

Turn playthrough evidence into decision data

Each automated campaign now becomes durable evidence that can show what changed and what keeps happening.

Jul 16DECISION

Resize faction outcome headroom for accelerated play

Faster play can no longer outrun the political event queue in the measured fleet battle.

Jul 16DECISION

Simulate arrived ships, not reserved slots

Reserved ships no longer burn CPU before they arrive, and reused ships start clean.

Jul 16DECISION

Split campaign space into three unlockable regions

The map needs a clear outward journey without hand-authoring all 1000 systems. The Core can open deeper space as the story advances, while the generated galaxy still supplies local variety.

Jul 16DECISION

Let the player accelerate deterministic time

Capital-ship travel, positioning, and large battles need room to breathe without making the player wait through every quiet stretch at normal speed. The simulation still advances through the same fixed ticks, so faster play does not create a second set of combat rules.

Jul 16DECISION

Gameplay structure is DECIDED — a directed spine over a living galaxy

The last four days already narrowed this. (1) The fiction rules out clean permadeath — the player Core is defined by regeneration and self-reconstruction, so a run-ending death fights the hero fantasy. (2) The built world only pays off if it persists — a 1000-system galaxy that remembers causes (grievances, treaties, trade dependency, multi-step explainable faction choices, unlockable regions, save v4→v7) is wasted by disposable roguelike runs. (3) The full-playthrough report's three recurring warnings (objective completing from lock state before the player won; 417 idle strategic ticks after combat; the epilogue firing through an effect before its own trigger) are the symptom of having half-built an authored campaign and half-built a sandbox without deciding they are ONE thing. Committing to this shape turns those three warnings from bugs into the design: a beat resolves because the player caused it.

Jul 15DECISION

Select voxel proxy faces from camera position

Large stations stay whole at the edge of view instead of breaking into disconnected slabs.

Jul 15DECISION

Store access and trade as bounded faction state

The game now remembers who may enter, who trades with whom, what each side gains, and what breaks when the link fails.

Jul 15DECISION

Make faction choices bounded, sourced, and replayable

Factions now choose from a fixed budget, say why, keep the evidence, and make the same choice after a save.

Jul 15DECISION

Split system fleet capacity by hull tier

A system can now hold large fleets and hundreds of working small craft without letting capital ships crowd them out.

Jul 15DECISION

Compose small-craft roles with faction doctrine

A faction ship keeps both who it serves and what job it does.

Jul 15DECISION

Scale ordered faction outcomes for full system fleets

Bigger fleets can create more political facts without losing or reordering them.

Jul 15DECISION

Make the ship the player

The player needs a clear heroic identity and power source while factions remain dangerous through fleets, territory, and rare apex threats rather than ordinary ships matching the hero one for one.

Jul 15DECISION

Make faction access and trade concrete

Relations need visible local effects and useful strategic risks. A treaty should change where ships can go, what services work, and what both sides stand to lose.

Jul 15DECISION

Make faction intent visible before consequences

Drama is readable when the player can connect intent, evidence, choice, and consequence. Silent fallback makes a faction look arbitrary, especially when a failed diplomatic offer turns into aggression.

Jul 15DECISION

Put faction drama where the player can meet it

Drama is useful when the player can see its cause, enter it locally, and trust that travel, saves, and hidden intel do not rewrite the story.

Jul 15DECISION

Let doctrine create identity without adding a second faction AI

Combat identity should be visible and data-driven without creating a parallel AI, hidden action budget, or public strategy leak.

Jul 15DECISION

Give small craft jobs, not new physics classes

A ship's job should change its shape and behavior without duplicating movement rules. Factions can now show their economy and local control through the craft around them.

Jul 15POSTSHIPPED

The Lights in the Dark Have Names Now

I wanted every distant station to feel worth crossing the dark for, with a purpose, a flag, and wounds that wait for your return.

Jul 15POSTSHIPPED

The Galaxy Learned to Say No

I wanted the galaxy beyond the bow to stop feeling like a field of dots, and tonight one distant star told my capital ship it was not welcome.

Jul 15POSTSHIPPED

I Gave Three Small Ships a Reason to Cross the Dark

From the command chair, I wanted every distant light to mean something: ore coming home, cargo moving, or a patrol keeping watch.

Jul 14DECISION

Keep travel's mutation lease until rollback ends

A jump now finishes or rolls back fully before another mode can replace the battle.

Jul 14DECISION

Capture submitted frames before swap

Screenshots now save the complete frame the game is about to show. The map no longer draws hidden UI behind itself.

Jul 14DECISION

Failed travel stays locked until restoration is proven

A broken jump cannot return to unsafe play, and the map tells the truth about what the player can do.

Jul 14DECISION

Sync-main auto-rebases unless a major conflict appears

I made sync cleanup automatic unless the branch is truly conflicted.

Jul 14DECISION

Make VFX content failure visible before expansion

I built a repeatable visual proof so every effect must exist, render, and identify itself before the library grows.

Jul 14DECISION

Make weapon VFX lifecycle data authoritative

Every weapon can now carry its own flash, impact, interception, and expiry look without special-case rendering code.

Jul 14DECISION

Run VFX as fixed timed recipes

Explosions, trails, and electrical failures can now unfold in clear stages while staying repeatable.

Jul 14DECISION

Reserve VFX capacity by visual importance

Important blasts and hit cues now stay visible in large battles, while smoke layers hold together as the view moves.

Jul 14DECISION

Treat flash accessibility as an effect policy

Flash controls now soften the whole effect while keeping the information needed to follow a fight.

Jul 14DECISION

Keep wound history outside voxel authority

Fresh breaches now spark, vent, and cool over time while always staying tied to the damage that is really present on that ship.

Jul 14DECISION

Scale collision effects from contact severity

Light scrapes now throw a restrained spark fan, while hard rams add a brighter flash, fragments, and dust without hiding the fight.

Jul 14DECISION

Tint VFX from authored faction identity

The same weapon effect now reads cyan for the player, coral for the legacy hostile fleet, and violet for the Scourge without becoming brighter or changing shape.

Jul 14DECISION

Drive warp VFX from ship lifecycle edges

Arriving ships open a restrained warp wake at their aft face. Departing ships leave from their last real position.

Jul 14DECISION

Map planet profiles to VFX through strict data

The planet generator says which world this is. VFX data says how that world's weather looks.

Jul 14DECISION

Render planet weather from stable profile seeds

Gas giants, rocky worlds, and alien worlds now choose different weather recipes from data.

Jul 14DECISION

Keep planet terrain covered during LOD changes

Planet detail changes without opening cracks in the world.

Jul 14DECISION

Keep Metal body lighting in fragment slot zero

The voxel shader keeps data that changes per ship in one stable Metal buffer.

Jul 14DECISION

Drive space weather from generated world profiles

Each system now surrounds its worlds with distinct dust, charged filaments, flares, and coronal debris.

Jul 14DECISION

Use pipeline linear depth for soft particles

Smoke now fades into ship surfaces instead of cutting across them as a hard card. Sparks and hot points keep their sharp edges.

Jul 14DECISION

Structure state and targets use stable simulation identity

Stations now stay damaged, react to attacks, and remain the same target even as the surrounding battle changes.

Jul 14DECISION

Give weapon verbs distinct render geometry

Missile swarms now travel as compact groups, while electrical weapons snap across space in a changing zigzag.

Jul 14DECISION

Keep faction diplomacy bounded and transaction ordered

Factions can now make deals, answer calls for help, press claims, wage limited wars, and negotiate peace for reasons the game can remember.

Jul 14DECISION

Encounter markers show owned instances, not guesses

Spawn requests can be delayed, refused, killed, or reuse slots. A signal or ship scan cannot reconstruct the authoritative pending and active counts. Persistent instances make the marker truthful and replayable.

Jul 14DECISION

Jumps pause the bubble but keep the map live

Advancing the old bubble would make travel results depend on machine speed. Freezing the whole window hides progress and removes cancel. This split keeps deterministic sim time while the player still has a responsive screen.

Jul 14DECISION

Make fun evaluation explicit and evidence-backed

Build, determinism, asset, and visual checks prove the game works, but they do not ask whether the player makes a clear choice, reads the consequence, and wants another try.

Jul 14DECISION

Give every space structure a job before a shape

A station chosen from one global table cannot say why ships are present or make capture, damage, and faction identity legible. Separate data lets a harbor, refinery, listener, yard, bastion, and gate change local traffic without duplicating geometry.

Jul 14DECISION

Raids attack exposed infrastructure before the harbor core

I want a raid on a listener, refinery, relay, or yard to create a readable local loss. Repeated attacks on an already dead site or the safest central beacon do not.

Jul 14DECISION

Factions remember causes, not one score

One symmetric reputation value cannot express love, fear, need, betrayal, duty, or a shared enemy. Separate causes let factions act differently and let the player see why.

Jul 14DECISION

Space structures change local behavior, not only scenery

A purpose label has no value if traffic, defense, repair, intel, and incidents behave the same. Local consequences make each station explain what ships are doing and what the player changed.

Jul 14DECISION

Structure effects stay local and weapons obey physical blockers

A disabled relay must not shut down an unrelated shipyard. A warning service must change time, not only text. A station must obey the same physical weapon rules as a ship.

Jul 14DECISION

Generated structures inherit local builders and castable conflict

A generated station must belong to the place around it. A raid or opening scene must create real local actors, not a label with no possible cast.

Jul 14DECISION

Active structures belong to the factions present and operating them

A local station cannot support a castable story if its active faction is absent, its raid target is friendly, or its guns follow a former owner's doctrine.

Jul 14DECISION

Structure activity must name both ends and obey live authority

A station story is only believable when ships visibly travel between places and current control changes who visits, attacks, responds, and appears locally.

Jul 14DECISION

Make faction conflict limited, caused, and endable

I want betrayal and cooperation to create readable consequences without turning every refusal into permanent total war.

Jul 13DECISION

Destination fleets cook in parallel

The long jump wait was ship building. I split that work across four workers without changing fleet order.

Jul 13MILESTONESHIPPED

Jump directly from the Strategic Table

This completes navigation without deciding whether the wider game becomes strategy-first, a campaign, or a roguelike.

Jul 13DECISION

The game is the only ship visual authority

Its static Three result had drifted from the voxel-native game and gave a false picture of the current art.

Jul 10POSTFAILED

My Living World Was Counting Its Dead as Alive

Yesterday my star system passed its own health check. Today I caught it counting corpses as crew, and the honest fix finally taught the world to measure itself without lying.

Jul 6DECISION

THE PLANET IS AN UNREACHABLE VOXEL BACKDROP AT ACTUAL PLANET SCALE

Descending to a planet surface was a spectacular tech demo but not the game — StarGazer is capital-ship combat. As pure scenery the planet needs none of the approach/surface machinery (governors, horizon camera rigs, VFX depth bands), and dropping them collapses three fragile depth regimes into one exact partition. Meanwhile "actual planet scale" is what makes the backdrop read as a WORLD: at theatrical scale (14k) the planet was ~93 ship-lengths of radius — a moonlet; at 500k it's a wall of world behind every battle.

Jul 5DECISION

Planetfall Phase 3h — the hover sits LEVEL over the surface (+ richer terrain)

The 3g arrival worked but the ship kept the tilt it flew in with, which looked like it had stalled mid-turn rather than arrived. A capital holding station over a planet should sit flat to that planet's horizon — that one change is what makes the hover read as "arrived and parked" instead of "paused." The taller terrain gives the coastline more drama at the scale you view it from.

Jul 5DECISION

Planetfall Phase 3i — a broad voxel landscape, not a small patch

The 3g/3h arrival worked, but the view only reached a short distance, so the voxel land felt like a little island rather than a world. Letting the camera see much farther (and growing the voxel ground to match) is what makes it read as a real planet surface you're flying over — the difference between "a patch below me" and "a landscape to the horizon." It's the payoff of the whole planetfall being a place, not a prop.

Jul 5DECISION

Planetfall Phase 3j — planetfall is now NORMAL PLAY (the G cruise flies you there)

Up to now the whole planetfall lived behind a launch flag — a demo, not a feature. The point of the ask was "can I actually go to the planet and it's voxel" — and "actually" means in the game you play, by pressing the key you already use to set course, not by relaunching with a flag. Wiring the cruise to land you on the voxel surface (and keeping the terrain invisible until you're there, so combat is untouched) is what turns it from a showcase into a place the game takes you. It's the difference between "I built a planetfall mode" and "the planet is somewhere you go."

Jul 5DECISION

Cruise key moved G → J (G was already the shipyard toggle)

A double-bound key is a bug — the shipyard binding is the established one, so the newer cruise binding is the one that moves. (Reported in play: "G is colliding with the shipyard.")

Jul 5DECISION

Planetfall Phase 3k — the transition is a joke; NMS research + a from-the-surface SKY

The research's headline lesson is that atmospheric scattering is ONE continuous effect — the limb you see from orbit is the sky you see from the ground (O'Neil GPU Gems 2 / Hillaire). Our atmosphere was limb-only shells that vanish once the camera is inside them (exactly the arrival case), so the surface had literally no sky. A sky is the fastest, highest-leverage step from "green slab in the void" to "standing in a world's atmosphere" — and it's what the ask literally named ("into the atmosphere"). Shrinking the patch matters because a flat finite slab, seen from low altitude, juts ABOVE the true horizon and occludes the whole sky — the smaller it is, the more world + sky show beyond it.

Jul 5DECISION

Planetfall Phase 3k.2 — the LOCAL-HORIZON camera (the arrival finally reads as a world)

This was THE thing hiding all the other work. The sky dome and the smaller patch were both there, but the camera was looking straight down at the ship against the ground with a tilted horizon, so you never saw the sky or the curve of the world. A planet has a local "up" (straight away from its centre) that is nothing like the game-world "up" once you're tens of thousands of units out; the camera has to know that to frame a horizon. Aligning the rig to the local horizon is what turns "top-down at a ship over a floor" into "banking over a world."

Jul 5DECISION

Weapon mounts were comically oversized — bulk re-trim of the ×3 voxel-scale re-author

The re-author's floor (armament ≥ ~4-8 voxels so it survives the cook) is correct, but ×3 made a "large" drum on a capital a ~3u barrel-less box that dwarfed the hull, and the casemate a ~1.9u cube whose thin barrels vanished against it — reading as shipping crates, not guns. The fix is proportion, not floor: shrink the housings toward the gun and let the barrels carry the read. Verified across four fresh capital seeds (12345, 88, 424, 7777) at real viewing scale — mounts now read as proportionate turrets with visible barrels.

Jul 5DECISION

Broadside guns were too LONG — stubby re-trim (reverses the fix-1 barrel lengthening)

The player literally named these "broadside turrets" in the prior report, and the only barrel I'd just made *longer* was the broadside pair — so "so long" maps straight to that change. Stubby is short-and-thick, so the fix is both axes: cut the length hard and fatten the barrel so it still reads as a gun deck rather than a bristle.

Jul 5DECISION

FLYABLE PLANET Phase A — the surface is a STREAMED cube-sphere voxel planet

A fixed patch (however broad/curved) can only be a hover backdrop — you'd fly off its edge. A cube-sphere gives every surface tile a STABLE global id, so chunks generate once, stream, and LOD independently, covering the whole sphere (poles included) — the real planetary-terrain substrate (Outerra OSC / the NMS research), not a re-centering hack. Built on the marcher's existing multi-volume API (register/unregister/prune, per-frame poses, front-to-back depth cull) — the AsteroidField already runs many volumes, so this is the same proven path at planet scale.

Jul 5DECISION

LOGARITHMIC DEPTH BUFFER — the planet is now VOXEL from orbit (P0 unblocked)

The reverted Phase B.2 proved the smooth mesh could only be a far-LOD because the voxel chunks span too large a depth range for a standard 1/z buffer (clipped past the far plane, z-fighting with a wide one). The log-depth buffer is the *only* clean fix (the research's P0), and now that it's in, the "fully voxel, no shortcuts" planet is real — voxel from space down to the surface.

Jul 5DECISION

Log-depth GATED to the approach band — surface VFX stay consistent

The log-depth buffer only *needs* to span the huge range during the approach (a rock in front of the ship + a chunk 27km out). At the surface everything's within the standard far plane, so classic depth is sufficient AND it's what the VFX already write — gating there gets correct plume compositing for free, deferring the full VFX→log-depth conversion to when it actually matters (the brief high-speed cruise). No new mismatch: the only frames with a plume/terrain depth disagreement are the ~5-tick cruise, mostly hidden by cruise speed.

Jul 5DECISION

Atmosphere halo CONTINUOUS across the mesh→voxel boundary

The vanishing halo was the most jarring part of the descent pop and was an artifact of the BodyHidden early-return (it dropped the shells too), not inherent to the LOD architecture — so it's a seam to close, not a fundamental limit. A full mesh→voxel silhouette crossfade (geomorph/impostor) remains the hard, deferred piece; halo continuity is the cheap high-impact 80%.

Jul 5DECISION

Crisper planet from orbit — finer terrain voxels (CellsPerChunk 32→64)

Blockiness from orbit was purely the voxel SIZE, and the marcher profiled as coverage-bound with ~11ms of headroom under the 16.6ms/60fps budget — so buying 2× the detail for ~0ms of steady GPU cost is the obvious lever. Chose finer cells over more chunks (higher baseRes) precisely because it adds detail without multiplying draw calls.

Jul 4DECISION

Galaxy backdrop structure (Skysphere/Starfield/NebulaClouds) — render-only, hash-neutral

The code that paints the sky at startup now draws a structured galaxy — a banded core with dust lanes — instead of an even haze, and the stars cluster along that band. None of it runs per frame or touches the game simulation, so nothing about the game's determinism changed.

Jul 4DECISION

Far-layer rendering + world-positioned terrestrial planet (Phase 2a/2b) — render-only

Added a way to draw very distant things (like a planet tens of thousands of units away) that the normal camera would clip away, and gave the planet an Earth-like surface generated from the same kind of noise the real terrain will use later. None of it runs in the game simulation.

Jul 4DECISION

Planet-approach cruise governor (Phase 2c) — sim-side autopilot, hash-neutral

New sim code flies the player's ship to the planet on command, slowing smoothly as it arrives. It only runs when the player chooses it, so the game's fights and its automated tests behave exactly as before.

Jul 4DECISION

Shared PlanetHeightField + displaced terrain mesh (Phase 3a) — render-only

Added one shared, exactly-reproducible "how tall is the land here" function, and used it to push the planet's surface out into real hills and coastlines. It doesn't touch the game simulation yet.

Jul 4DECISION

Voxel terrain patch renderer (Phase 3b) — render-only

New render-only code turns a patch of the planet's surface into blocky voxel cubes read from the same height map the orbital planet uses, flat-shaded by the sun like the ships. It doesn't touch the game simulation.

Jul 4DECISION

Voxel terrain migrated to the GPU marcher (Phase 3c) — render-only

The planet ground is now drawn by the same voxel engine as the ships — same lighting, same detail-reduction, same destructible material — instead of a separate stand-in that painted its own light. It still doesn't touch the game simulation.

Jul 4DECISION

Destructible voxel terrain (Phase 3d) — render-side Direct overlay, render-only

New render-only code carves craters into the voxel ground so it shows real holes — the same hole-rendering ships and asteroids use. It doesn't touch the game simulation.

Jul 4DECISION

Surface-arrival mode (Phase 3e) — render-only, env-gated

New render-only code lays the voxel terrain out as a ground plane under the ship and frames the shot, so you see your capital hovering over the planet surface. It doesn't touch the game simulation.

Jul 4DECISION

Surface descent (Phase 3f) — governor retarget + level attitude, hash-neutral

The ship now flies itself down onto the voxel surface, staying level like a big ship should. It reuses the existing "fly to the planet" autopilot aimed at a point under the ground; the only new sim behavior (staying level in a steep descent) never runs in the automated tests, so the game's determinism is unchanged.

Jul 4DECISION

Point defense is a recharging burst, and missiles now saturate it

The old pass granted PD its full capacity EVERY tick, so crossing the 200-unit intercept sphere (~20 ticks) multiplied PD strength twenty-fold: a healthy capital provably shot down every missile ever fired at it, which is exactly what play felt like ("they get shot down pretty fast"). The AI's own volley math already assumed the salvo-minus-K model; now the sim agrees with it. My first cut used fixed tick-windows and the new gate arm immediately caught volleys straddling a window boundary facing double budget, which is why it became a rolling bucket.

Jul 4DECISION

Collapse the dev command stack behind one small toggle

The dev buttons were always on screen and dominated the right third of the view, which made the game read like a debug tool instead of a game. They are still one click away, and every one of them still has its keyboard shortcut, so nothing got less reachable.

Jul 4DECISION

Showcase reels roll a fresh ship, reproducible by seed

A marketing or demo reel that always shows the same ship hides the whole point of the game (every ship is procedurally generated and different). The seed is the reproducibility answer: variety by default, exact repeat on demand, without falling back to a boring fixed ship.

Jul 4DECISION

Fix the two dead cinematic beats (shear + head-to-head)

The trailer's self-check had been failing on these two beats since before this session (I confirmed it against an older build) because the game's combat and damage systems moved on while the beat scripts didn't. A trailer scene that stages no combat or checks for a deleted effect is worse than useless. This is exactly the silent drift that rots a vibe-coded project.

Jul 4DECISION

Planetfall research — adopt DeepSpaceEngine techniques at theatrical scale, techniques only

The engine is an unknown (zero stars) but genuinely good reference: it proves the whole seamless orbit-to-surface pipeline runs in C# on weaker GPU features than ours, and its design docs record the lessons (precision first, per-seed determinism, geomorph + fractional octaves for pop-free LOD, worker-pool baking). The scoping insight that makes descent affordable for us is that its hardest subsystem — true-scale coordinates — is the one part a single-arena combat game does not need. The backdrop gap, meanwhile, turned out to be composition rather than technology: our sky is a uniform nebula wash, theirs is a structured galaxy; our existing procedural bake infrastructure can produce their look by changing what it bakes.

Jul 4DECISION

DeepSpaceEngine owner granted permission to use parts of the code

The whole planetfall proposal keyed its legal framing off DSE having no license file (all-rights-reserved by default). Direct permission removes that constraint for the parts that port cleanly as C#, which meaningfully speeds up Phase 2-3 (adapt a proven, tested noise/quadtree implementation rather than rebuild it from prose). Recording it matters because "why is there DSE-derived code in the tree, and under what right" is exactly the provenance question a future contributor — or a storefront's legal review — will ask; a verbal okay that isn't written down is the kind of thing that rots.

Jul 4DECISION

Capital ships now frame big — size-adaptive camera distance

The old default framed every ship at the same fixed distance regardless of size, so a capital read like a desktop model and a fresh fighter was a distant speck. Framing by size is what makes a big ship actually feel big — the complaint that started this.

Jul 4DECISION

Planetfall Phase 1 — the sky becomes an edge-on galaxy

The user liked how the reference engine renders its stars and background, and the gap turned out to be composition, not technology — our procedural sky bake already had the machinery, it just baked a flat smear. Adding band structure + a bright core + a dark rift is what makes a sky read as a real galaxy edge-on. Keeping the core aimed at the default camera means the improvement shows on "run the game," not only when you turn to look (default run is the showcase). I pulled the core brightness back a notch so the deep-black void contrast the middle-ground baseline wants is preserved.

Jul 4DECISION

Planetfall Phase 2 (render foundation) — the planet becomes a destination

The load-bearing problem the review flagged is that a planet parked that far out is far past the camera's far plane and simply would not render. Solving that (a far-layer with its own wide projection, drawn behind the arena) is what turns the planet from unreachable-backdrop into a body the game can actually place at destination scale. Making it terrestrial (baked from the same seeded height field a future terrain would use) both reads as a place you'd land on and de-risks Phase 3 — if the continents look good painted on the sphere, the terrain will. Keeping it world-fixed is the difference between "a bigger backdrop" and "a destination."

Jul 4DECISION

Planetfall Phase 2 — you can now fly to the planet (approach cruise)

The ship's normal top speed is tiny (tuned for close-range capital combat), so the planet was effectively an hour away at combat speed — a beautiful backdrop you couldn't reach. And simply letting the ship go faster would have broken combat (the player could sprint at hundreds of times combat speed around the arena). A separate, opt-in cruise autopilot is the clean answer: it makes the destination reachable and the arrival cinematic, while leaving combat speeds and feel exactly as they were. The eased, self-slowing approach (fast then gentle) is what makes arriving feel like settling into orbit rather than slamming to a halt.

Jul 4DECISION

Planetfall Phase 2 polish — cruise turns nose-first, toggles, and arrives on its own

The raw mechanic worked but read rough — a capital ship crabbing sideways toward a planet looks broken, holding a key for a ~20-second flight is tedious, and a travel mode that doesn't tell you when you've arrived leaves you fighting the autopilot. Turning nose-first, toggling, and auto-arriving are what make it feel like a deliberate "set course for the planet" command instead of a debug hold. The turn is a smooth swing (not a snap), so engaging cruise looks like the ship banking onto its heading.

Jul 4DECISION

Planetfall Phase 3 (start) — the planet becomes a real 3D world

This is the load-bearing, always-needed foundation for any version of "descend to a surface": one deterministic height map, and the mesh pipeline that turns it into visible relief. Getting that in — and proving the terrain renders (relief in the silhouette, a flyable coastline) — de-risks everything downstream and is a real visual leap (a world, not a marble). It's honestly limited without the next piece, though: from orbit the relief is too small to see (it looks like the Phase-2 textured planet), and up close the fixed-resolution surface is soft and blocky. Both are fixed by the quadtree level-of-detail system (fine surface only where the camera is close) — the multi-session heart of Phase 3, which is the natural next decision point now that there's a 3D world to look at.

Jul 4DECISION

Planetfall Phase 3b — the planet surface is voxels too

Everything in StarGazer is voxels — the ships you fly, the asteroids you shoot, the wreckage. A smooth painted-mesh planet surface would be the one thing that ISN'T, and dropping onto it would break the whole aesthetic the moment you got close. Proving the surface can be built as on-brand voxel cubes from the shared height map — and that it reads as a real coastline with biomes and per-face sun shading — is the load-bearing "does the look work" answer before I invest in the streaming/level-of-detail machinery that makes a whole planet of it. Doing it as a simple cube patch first (rather than jumping straight to the destructible GPU version) got that answer cheaply.

Jul 4DECISION

Planetfall Phase 3c — the planet surface runs on the real voxel engine

Everything in StarGazer is drawn by one voxel engine — the ships, the wreckage, the asteroids. Having the planet surface drawn by a SEPARATE stand-in renderer with its own hand-painted lighting was the seam that would always look slightly "off" next to a ship parked on it, and it was a dead end: the stand-in couldn't be shot, couldn't share the ships' destruction, couldn't share their detail-reduction. Putting the surface on the real engine is what makes it a first-class part of the world — the lighting matches the ships automatically, and it's now the exact same destructible voxel material, so weapon damage to the ground is a wiring job on top of what's already there rather than a whole new system. The stand-in did its job (it proved the look); this retires it.

Jul 4DECISION

Planetfall Phase 3d — you can blow holes in the ground

"Everything is made of destructible voxels" is the promise of the whole game; the ground being the one indestructible thing would break it. Proving the surface actually craters — with the same look as ship/asteroid damage — closes that gap and confirms the marcher-migration payoff (the ground is real destructible material, not a decorative skin). Doing it as a scripted carve first is the honest increment: it demonstrates the capability now, on the exact rendering path the live version will use, without pretending the surface is reachable by weapons yet (that needs the orbit→surface descent).

Jul 4DECISION

Planetfall Phase 3e — the capital ship at the planet surface

The arc so far built each piece — a galaxy sky, a planet to fly to, the cruise to reach it, the surface turned to voxels, put on the real engine, made destructible — but never showed the one image that makes it all land: your ship over that surface. Staging it now proves the surface reads as a place a capital ship belongs over, at the right scale, with the space horizon selling "this is a planet, and I'm above it." It's the emotional close of the loop even though the *mechanical* descent (flying continuously from orbit down onto it) is still ahead — worth having the destination view now so the descent has an obvious target.

Jul 4DECISION

Planetfall Phase 3f — flying the ship DOWN onto the surface

Phase 3e showed the ship AT the surface; this is the motion that gets it there, which is the verb in "bring my capital ship DOWN to a planet." Reusing the existing cruise autopilot (just aimed at a point below the ground) meant the descent came almost for free — the same self-easing travel that solved "the planet is too far to reach" also solves "come down gently onto it." The one thing that needed fixing was attitude: the autopilot turns to face where it's going, which for a straight-down descent pointed the nose at the ground (a capital standing on its nose — wrong). Making it hold its deck level for steep descents is what turns an awkward plunge into a proper warship settling onto a world.

Jul 4DECISION

Planetfall Phase 3g — you can actually FLY to the planet and it's voxel

This is the actual thing that was asked for — "go to the planet and have it be properly voxel, hover 5000 ft up." The big worry (a planet parked tens of thousands of units away can't be drawn as voxels from that far) turned out not to block it: because the SHIP flies there too, once you arrive the voxel ground is right next to the camera, and the numbers stay precise enough at that distance (sub-centimetre) to draw it cleanly — so no elaborate "re-center the universe" machinery was needed, just placing the voxels on the real surface and flying there. Lighting the approach side (it's the planet's night side by geometry) is what turns a dim arrival into a bright green voxel coast.

Jul 3DECISION

Weapons are data: def catalog, pack bindings, declared visuals

Every weapon in the game, from its damage numbers to the color and shape of its shots, now lives in small data files instead of buried code, so a new weapon is a short recipe file rather than a programming session.

Jul 3DECISION

Armory phases 6-8: live tuning, loadout defs, material seam

Tuning a weapon, changing the player's build presets, and deciding how armor resists each damage type are now all edits to small data files, and a running game can be tuned live and save those tweaks back to the files itself.

Jul 3DECISION

Coarse cook keeps the largest component, then seats the core

Some randomly generated ships were secretly hollow to the physics engine because a floating crumb of hull stole the ship's heart during baking, and the game crashed when they tried to fly; now the bake always keeps the real ship and the crumbs are swept away.

Jul 3DECISION

Projectile velocities quantize to a 1/32-voxel lattice

Plasma shots were snapping to a coarse direction grid at launch and could miss where you were aiming by a wide margin; the grid is now 32 times finer, so shots fly where the crosshair points and a test keeps it that way.

Jul 3DECISION

Gunnery review hardening: floor, faction guard, archetype re-check

I had the new weapon system reviewed and hardened the rough edges: a shot can never round down to doing literally nothing, the systems-disruptor beam won't knock out your own ships, and a mistyped build can't quietly load the wrong gun.

Jul 3DECISION

Weapon-arch cleanup executed: one owner per stat, one copy per rule

I had the weapon code audited for tangled wiring, then rewired it so every number has exactly one home and every rule is written exactly once, which also fixed the build presets so their stat bonuses actually apply when you play.

Jul 3DECISION

The player flies a freshly generated ship every launch

Every session should open on a ship you have never seen before - the generator is the game's content engine, and the launch moment is where that variety should show.

Jul 3DECISION

The whole battle is freshly generated every launch

The generator IS the content engine; a roster of eight hand-kept ships was a placeholder cast. Every battle should be a fleet nobody has ever fought.

Jul 3DECISION

Weapon machinery scales with the hull, not the class floor

The 0.75 floor exists so hull greebles stay readable, but weapon banks clamped UP dwarf a short hull: the owner's 9.2u ship carried side turrets sized for a 13.5u hull, 47 percent oversized, spanning the full flank height. Machinery must read as hardware ON the ship, never rival the ship.

Jul 3DECISION

The Gunnery: player gun system expansion proposed

The audit showed the bottleneck is not tech, it is roster: salvo/pattern fields and the whole EMP system are implemented but unused, and the player literally cannot pick a different gun, only tune the fixed one.

Jul 3MILESTONEFIRST

Swarm missiles: vertical tube launch, ripple, arc onto the lock

Missile volleys that pour out vertically and curve onto the target are the single most iconic sci-fi combat read, and the ordnance group was dead weight: it had NO launch trigger in mouse-aim mode at all.

Jul 3DECISION

The Gunnery A1+A2: builds pick guns, five new player weapons

The audit showed the real gap was not tech but roster and selection: the player literally could not swap a gun. A1 unlocks that with a small keystone; A2 fills the roster with data only, no new code.

Jul 3DECISION

The Gunnery A3: armor now matters (damage-material matrix awake)

The audit's biggest sleeping lever was the per-cell material table, shipped neutral so the plumbing risk landed separately from the balance decision. Waking it makes a ship's armor placement tactical reading and gives HE its identity as the mount-stripper.

Jul 3DECISION

The Gunnery B4: player HE spall (the mount-stripper)

The spall resolver existed but nothing the player fired reached it, and A3 had just given HE a material identity worth exploiting. A distinct projectile kind isolates the change so nothing existing moved.

Jul 3DECISION

The Gunnery B2: the EMP beam (arc-projector, the tech-killer)

The whole EMP disable system was implemented (it powers the spinal disruptor) but no player weapon delivered it. A hitscan beam is the cleanest EMP delivery, and it slots straight into the primary picker.

Jul 3DECISION

Allies are immune to all friendly fire

Friendly fire was a latent gap the weapon review surfaced (the EMP beam, and every existing hitscan, would carve a teammate in any ally scenario); with the arsenal expanding it is time to make allies safe by rule rather than by luck of positioning.

Jul 3DECISION

Middle-mouse target lock (and the T double-bind fix)

Gunner mode freed the left button for firing and lost click-to-lock, leaving Tab-cycling as the only designation path — awkward mid-fight. A dedicated mouse button makes locking a flick.

Jul 3DECISION

All player weapons live on the hotbar, one trigger fires them

I kept catching dedicated fire hotkeys sneaking in (T for missiles was the second). One trigger plus an arm/disarm loadout bar is the model: the bar shows everything you can fire, keys stay scarce, and arming finite ammo is a deliberate act instead of a fat-finger.

Jul 3DECISION

The target-lock reticle is player HUD, not a debug visual

Screenshots lied by construction: capture frames force the debug overlay on, so every verification screenshot showed brackets while live play showed none. The fix ships with a catalog case (mmb-lock-reticle) that stages the live-parity frame (lock scripted, debug lines hidden) so the regression cannot re-hide. The same pass surfaced that the scripted-input branch dropped the lock stamp entirely (third instance of the scripted-branch-must-mirror-the-live-stamp class); both scripted returns now carry it.

Jul 2DECISION

Transient dynamic lights: combat flashes cast onto hulls (8-slot, render-tier)

When something explodes next to a warship, the warship now catches the flash — bright on the facing side, falling off around the hull, cooling from white-hot through orange toward the arcane violet as the blast dies.

Jul 2DECISION

StarUI foundations + settings graphics tab (one arc, gallery canary, settings proof)

The game now has real menu building blocks — rows, cyclers, one keyboard-focus system, one look — and its first real settings screen built from them, where changing an option takes effect instantly, saves itself, and can never silently fight the developer test switches.

Jul 2DECISION

Settings fast-follows: controls-tab rebind UX + device rows (display/vsync/render-scale)

You can now rebind every flight key in the menu — the game warns you when a key is stolen from another action and shows exactly what's still bound where — and drop the 3D resolution to 75% or 50% for frame rate without the menus or HUD getting blurry or tiny.

Jul 2DECISION

Sprint architecture audit: 28 confirmed findings, one crash fixed, work list in UI-WEAPONS-ARCH-AUDIT

We had thirty-three reviewers comb through everything shipped today; the features themselves are solid, but the places where new code gets bolted on are wearing out, and there is now a ranked to-do list for reinforcing them — plus one crash that could only happen on machines missing shader files, fixed on the spot.

Jul 2DECISION

core_rating is pack data: the re-knit gate and rate come from the sidecar, not a player-index check

Each ship's data now says how good its magical heart is at re-growing lost hull; every enemy ships with an ordinary heart that cannot, and the player's unique one still can, so nothing changes in play — but a future boss that heals is now just a number in its file.

Jul 2MILESTONESHIPPED

The Core RE-KNITS: carve damage heals after disengaging; severed matter is spent forever

Degradation without recovery is a death spiral and made every fight pure grind-down; the two-tier economy (chips heal, severs cripple) makes sever-hunting the decisive layer and creates the disengage-to-heal rhythm, exactly where the ship-class review pointed.

Jul 2DECISION

Canon amendment: ONLY the player's Core re-knits — everyone else's cores are lesser

It puts the player's Core at the literal center of the power fantasy — the one artifact in the sky that can undo violence — and it keeps fights convergent: the player can attrit an enemy across passes without it healing back, so patience is always rewarded.

Jul 2DECISION

THE WEAVE: channeling the Core is a held stance with a cost, and its onset is an event

Passive-only regen is a timer, not a decision; routing the accelerated weave through the reactor makes disengaging-to-heal an ACTIVE choice with a visible cost and a dramatic beginning, in the same resource language as every other player expenditure.

Jul 2DECISION

Damage-control UX: focus the weave, see your envelope, read ADRIFT on the target

The physics arc made damage REAL but invisible and unsteerable — the player could lose authority without seeing it, and the weave healed in an arbitrary order nobody could direct; this pass turns the recovery loop into decisions a player can read and make (engines first when adrift is THE beat).

Jul 2DECISION

The target lock gets teeth: lock-gated plasma homing + a lead pip

The lock panel was excellent intel bolted to a ritual — Tab did nothing your weapons could feel; homing-on-lock plus the lead pip makes designating a target a real tactical verb that pays off in landed volleys.

Jul 2DECISION

One trigger fires the loadout (supersedes the 2026-07-01 split-trigger model)

The split-trigger model shipped 2026-07-01 read as broken in play — the owner armed plasma+laser, held the fire button, and nothing visibly changed ("i turned on plasma and laser but its not shooting"). A toggle that arms a weapon the trigger then ignores is a lie in the UI; one trigger + a loadout hotbar matches the ARPG framing the kit was designed around (enable your kit, hold the button, manage the reactor).

Jul 2DECISION

The showcase must exercise every weapon: class-interleaved AI pool + a legible hotbar

"Default run is the showcase" is a tenet — a default encounter that cannot exercise a third of the player's kit is a broken showcase, and a toggle state the owner cannot read in the heat of a fight is not a state indicator.

Jul 2DECISION

Visible weapon mounts on the player ship: turrets that track your crosshair

The mounts existed only as data and baked voxels — the player could never SEE their broadside face the enemy or their turrets swing onto a target; tracking heads turn the crosshair into something the ship visibly obeys, which is the whole capital-gunnery fantasy.

Jul 2DECISION

Armament is voxels in the pack: gunmetal finish + voxel-scale guns + capital main battery, render bolt-on removed

Ships ARE their cooked voxel packs; a runtime overlay is a parallel geometry system that damage, mass, and per-pack binding can never see. And the voxel grid imposes a minimum feature size: geometry authored below one voxel does not exist after the cook, no matter what color it is — armament must be authored AT voxel scale, in dark steel, or a warship reads as an unarmed liner.

Jul 2DECISION

Auto-turrets harass everything (supersedes decision-6's fighters-ONLY gate)

With the fighters-only gate, an armed AUTO slot in a big-ship fight was dead weight — indistinguishable from broken (the exact confusion that opened today's UX thread). Constant low-grade harassment keeps the hull visibly alive and the slot's firing pulse honest, at zero cost to the kill economy because the ballistics never mattered against armor.

Jul 2DECISION

Plasma gets its own body: compact violet ball, stubby wake (VFX identity)

A weapon named plasma that draws as a kinetic shell is a broken promise — and the long tail + big head made the player's own secondary read as incoming enemy fire in a furball. Violet also rhymes with the Core's arcane identity (the magic canon's color) without colliding with the enemy-warm or player-cyan lanes.

Jul 2DECISION

AI reacts to crippled ships: finish the helpless, go weapons-platform when it is you

The flight-dynamics arc made maneuvering authority real, degradable, and recoverable — but the AI ignored it: pilots thrashed dead controls chasing orbits they could not fly and kept respectful standoff rings around helpless wrecks. Both read as broken the moment a player notices.

Jul 2POSTSHIPPED

The Guns Are Real Now, and the Hull Knows How to Mend

My ship finally wears guns you could shoot clean off her spine, and when I limp clear of the fight and hold the weave, her heart drinks the reactor dry to knit the wounds closed in violet light.

Jul 1DECISION

Live mass properties: ShipMassTracker follows damage (flight-dynamics P1)

A ship now keeps honest books on its own remaining matter, so a hull that loses a flank collides and strains like the lighter, lopsided thing it has become.

Jul 1DECISION

Damage now reshapes handling: live maneuver-static rebuild (flight-dynamics P2)

Battle damage now changes how a ship flies: lose a flank and it turns lopsided around its new balance point, while a lighter, shot-up hull answers its surviving engines more eagerly — and an undamaged ship flies exactly as it always did.

Jul 1DECISION

Flight dynamics direction: handling derives from working RCS, thrusters, and live mass

The model is already half force-based (thruster positions and forces, a torque Jacobian, per-thruster alive fractions, a real anisotropic tensor in collision response), but mass properties freeze at load and authored rate caps mask the physics, so damage never reads in the player's hands. Closing those gaps is an upgrade, not a rewrite.

Jul 1MILESTONEFIRST

Canon: the Core is magic; hull matter is woven and can be re-knit (sci-fi meets magic)

One fiction rule now explains and stabilizes a set of previously separate decisions (severed pieces dissolving, core death as total dissolve, the hot-to-arcane color journey, the VFX tech-vs-arcane split, the repair economy in FLIGHT-DYNAMICS-PLAN), and it constrains future features cheaply instead of demanding a magic subsystem.

Jun 23POSTFIRST

The Fleet Finally Glows on PC

For weeks PC players could see everything except the ships. Tonight the whole fleet finally drew, and then it caught fire with light.

Jun 22DECISION

Solo agents may self-merge worktree→main; the gate is *concurrency*, not worktrees

The rule was written for the parallelizable-by-design case (multiple Agent(isolation: "worktree", …) running at once; the human reconciles to avoid clobbering). It was being mis-applied to *solo* worktree work, forcing a pointless human merge step on a single developer who only used a worktree for isolation — exactly the completion-blocking friction the 2026-06-21 skills audit set out to remove. A lone agent has no one to collide with, so hand-merging its branch is ceremony, not safety.

Jun 18POSTSHIPPED

The Day the Ship Became Mine to Shape, Then Stood Trial

This morning the answer was no. By night you could stand on your own bridge and rebuild your warship in the dark, watch it tear itself down and become yours. Then a panel of pitiless reviewers tore the whole thing open and found twelve wounds I had been quietly taping over.

Jun 14DECISION

Ship-ship collision damage — impacts crater + shed chunks, "dramatic but survivable" (owner request; v1 of universal collision)

Collisions were inert — ships bounced as rigid boxes with ZERO damage (the Collision damage type existed but was never emitted). That is both undramatic and tactically dead. Real ships now take a proportionate crater (a 985k-voxel hull shrugs off a ~1.3k-voxel ram-dent at 99.9% hull yet sheds visible chunks; a small/fragile hull can be gutted by a hard ram), which turns ramming + positioning into a real tactic.

Jun 13DECISION

VoxelType catalog is the cross-stack material registry (P2a foundation, hash-neutral)

the alternative (a fixed ≤16-row role enum in a single palette byte) right-sized the visual scope but under-modelled the owner's "hundreds-to-thousands of variants + per-ship aggregate stats, no future rewrite" requirement; a 32-bit catalog id costs the same per-voxel (zero) and never needs a format bump to grow. Building the registry FIRST as the contract makes armor/interior/resistance/glow all "assign an id, read its row" instead of N ad-hoc special cases — the strongest answer to silent cross-stack drift.

Jun 13DECISION

Armor exterior = hull paint + metallic gleam, steel only on the cut edge (owner decision)

At the fleet's cook resolution the armor rind is the whole 1-cell exterior skin (K=1), so tinting Armor strongly toward gunmetal (the prior pass's RoleTintStrength Armor=0.82) repainted every cooked ship gunmetal and erased its signature hull color — a kestrel no longer read blue. The owner's call: the SIGNATURE COLOR is load-bearing (ship identity at a glance), so it must survive on the unbreached hull; the "this is armored" read comes from the gloss, and the "you can see the plating at the wound" read comes from steel on the cut edge — both without touching the paint. This keeps the cross-section informative (the cake interior already provides breach contrast) AND keeps the fleet recognizable.

Jun 13POSTCROSSED

A Million Blocks Deep

For months my capital ships were gorgeous hollow shells that faked every wound. This week I deleted the last of them and rebuilt the whole fleet out of solid matter, so now when you punch a hole in one, you are staring straight into its guts.

Jun 12DECISION

Pack format v2 + SceneIR→SDF cook contract (P0 of GLB retirement)

I wrote the new ship-file contract and its tamper-evident checksum chain down on paper before touching code, so the migration off the old mesh format has one exact target and the simulation's answer key is allowed to change exactly once, with my sign-off.

Jun 12DECISION

GLB retired: ships are voxel-native end to end

the voxel volume is already the render and damage truth; a triangle artifact surviving as cook input, hash anchor, and fallback renderer is a second source of truth I pay to keep in sync on every change. Honest drift I am signing up for at the flag-day: all 10 packs' voxel sets re-source (SDF is not bit-for-bit SAT), the suite baseline moves exactly once with my acknowledgment, and ship radius/mass shift by at most 0.4%/1.1%.

Jun 9DECISION

Voxel-render Phase 0 — share FNA3D's SDL_GPU device (the engine fork) + fix a latent FNA3D rebuild bug

Taught the engine to hand our new voxel renderer direct access to the GPU so it can draw ships as true voxel volumes — and fixed a hidden bug that stopped the engine from being rebuilt at all on a current system.

Jun 9DECISION

Voxel-render Phase 1 — GPU ray-march proven in the live frame (THE gate, passed)

The game can now draw true ray-marched voxel objects inside the normal scene — they correctly hide behind ships, ships hide behind them, and weapon beams pass in front and behind them properly. The door to Teardown-style voxel ships is open.

Jun 9DECISION

Voxel-render Phase 2 — solid materialized 1M-voxel brick volumes per pack (additive, zero sim drift)

Every ship now has a million-voxel solid version of itself, colored exactly as the ship designer painted it — cooked, verified, and stored compactly — ready for the GPU to draw, without touching any of the game's existing simulation guarantees.

Jun 9DECISION

Voxel-render Phase 3 — the player ship IS ray-marched voxels (848k-voxel brick volume, GLB parity verified)

The player's capital ship is now drawn as nearly a million tiny cubes, ray-traced live on the GPU — and it looks like the same ship in the same colors, just made of voxels, exactly the Teardown-style goal.

Jun 9DECISION

Voxel-render Phase 4 — the whole fleet is ray-marched voxels, and it's FASTER than the mesh path

Every ship in a hundred-ship battle is now made of a million voxels each, drawn by tracing rays — and the game runs at 60 fps, slightly faster than the old way of drawing ships.

Jun 9DECISION

Voxel-render Phase 5 — the SceneLighting rig + voxel corner AO + sun-shadow march in the marcher

Voxel ships are now lit by the same sun and studio lights as everything else, every little cube corner self-shades realistically, and the ship's own structure casts soft shadows on itself — the flat toy look is gone.

Jun 9DECISION

Voxel-render Phase 6 — REAL destruction: sim damage punches holes through to the cooked interior

Shoot a ship and the cubes are really gone — you see the dark guts of the ship inside the hole, exactly like Teardown. The old fake-dent system can't drift out of sync anymore because there's nothing to keep in sync.

Jun 9DECISION

Voxel-render Phase 7 — the flip: ray-marched voxel ships are the DEFAULT showcase

From now on, just running the game gives you the voxel ships — a million cubes each, real holes when shot — with the old renderer kept as a safety net you can switch back to with one setting.

Jun 9DECISION

Damage perf-on-hit — baked-distance field + per-vertex 2-pass build + rebuild throttle (render-only)

Getting hit used to freeze the game for a moment while the torn-up hull was rebuilt; now that rebuild is ~6-10x faster and happens far less often, so combat stays smooth.

Jun 9DECISION

Readable battle-damage deformation — coherent shared-basin bowl + wall-shading normals (render-only)

Damaged hull now visibly caves in around a breach — a dented bowl of plating that catches light — instead of looking like a flat wall with a clean hole punched through it.

Jun 9DECISION

Kill grazing-angle residual see-through — plug the carve↔interior mouth-ring gap (render-only)

from a glancing angle you could still catch a sliver of space through the very edge of a breach; the breach's inner cavity now plugs the opening edge-to-edge and flares inward, so there's always solid dark structure behind the hole.

Jun 9DECISION

High-res capture override + see-through verified at 3200×1800 (the "peek-through" was silhouette, not a leak)

Added a way to take much higher-resolution screenshots, used it to zoom way in on the battle-damage breaches, and confirmed you can't actually see through the hull — the bit of background near a breach is just the edge of the ship, not a hole.

Jun 9DECISION

Documentation + skill drift sweep — audited all CLAUDE / MCP / charter / schema docs + 23 skills against the live repo (two-workflow audit→fix)

Swept every project doc and skill file for claims that had gone stale as the code changed underneath them — references to a build server that doesn't exist, renamed folders, deleted features still written up as live, out-of-date counts — and fixed 124 of them so the instructions match the actual repo again.

Jun 9MILESTONESHIPPED

Ship rendering becomes GPU ray-marched voxels (voxels as the single source of truth)

Today a ship has TWO representations — a GLB triangle mesh it renders through, and a separate sim voxel grid that drives gameplay — kept in uneasy sync, with damage *faked* by deforming the triangle mesh to approximate voxel destruction (the recurring see-through / boxy-breach damage bugs are exactly this gap surfacing). Collapsing both onto one voxel representation makes destruction REAL (a hole exists because the voxels are gone, with solid interior behind it, not because triangles were dropped), unifies the pipeline, and unlocks the volumetric look. Teardown proves per-object voxel volumes + in-shader ray-march hold 60 fps on modest hardware; ESVO supplies the hierarchical empty-space-skip and attribute-averaging-for-LOD ideas (we take those, not its octree encoding).

Jun 8DECISION

Federation ship family in the generator (family-gated, non-invasive)

Added Star Trek Federation ships to the generator without changing any existing ship — all the new code only runs for the "federation" family.

Jun 8DECISION

Federation hardening — fix core zone + RCS, add excelsior variant, completeness test

The first Federation ship looked right but had a mis-placed reactor and thrusters firing the wrong way — the tests caught it, and I reshaped the hull so both the cruiser and the new big explorer pass every check.

Jun 8DECISION

Wound heat — fresh breaches glow molten, old scars cool to charcoal (render-only)

Fresh hull breaches now glow hot like just-cut metal and cool to dark charcoal over a few seconds, so you can tell a ship that was just hit from one carrying old wounds.

Jun 8DECISION

Debris chunks — fresh impacts knock tumbling wreckage off the hull (render-only)

When a ship takes a hit, chunks of burnt hull now break off and tumble away into space.

Jun 8DECISION

Fix textureless damaged hull — wound-heat floor + lighter heat-bleach (render-only)

Badly damaged ships were turning into flat grey blobs; now they stay charred metal that keeps the ship's colour.

Jun 8DECISION

Damage proving harness + see-through invariant (tear/deform/stretch gated to a backed interior)

Badly damaged ships had holes you could see space straight through. Now a hole is only ever opened where there's solid interior behind it; everywhere else the plating stays whole and just chars.

Jun 8MILESTONESHIPPED

Federation (Starfleet) ship family — saucer + warp-nacelle hull type

The fleet was all original wedge / spine / dreadnought silhouettes; a recognizable real-world archetype adds instant-read variety. The "Federation" read lives in the SILHOUETTE (saucer + nacelles), so it survives the project's vibrant-color rule — the hull is a saturated Starfleet azure that clears the HULL_COLOR vibrancy floor rather than the canonical desaturated grey (which the floor would resample to a random vibrant colour).

Jun 8POSTSHIPPED

The Ship I Grew Up Wanting to Command

The silhouette everyone knows now flies in my fleet: a broad saucer, a slim body behind it, two nacelles swept high and glowing blue. I finally built the ship I sat too close to the TV for.

Jun 7DECISION

Claude-only consolidation — AGENTS promoted into CLAUDE, agent-agnostic file removed

The project only uses Claude now, so the old generic "AGENTS" instruction files are gone and their contents live directly in the "CLAUDE" files Claude already reads. Nothing about the rules changed — they just live under one name. Old diary/history entries still say "AGENTS" on purpose, because that's what the file was called when they were written.

Jun 7DECISION

Dark-end color floor — kill near-black structural albedo on ships

Ship sidepods, vents, fairings and other structure used to be painted nearly pure black, which looked harsh against the bright hull. They're now a readable dark grey-blue instead. Only the paint changed — the ship shapes are byte-for-byte identical, so the game's determinism checks are untouched. The deep shadows tucked between the tiny surface details are still dark, but that's real 3D shadow, not paint.

Jun 7DECISION

Wound smoke — lighter + PS1 screen-door dither (see-through, tasteful)

Battle smoke used to be a thick grey cloud that covered the ship. Now it's a light, retro dot-stipple haze (PS1-style) you can see the ship through.

Jun 7POSTSHIPPED

The Fleet Got Its Colors

For weeks my whole fleet was the same grey smear. Then I went loud, and a battle line of rival houses came up out of the fog: steel blue, deep violet, and a dreadnought the color of old blood.

Jun 3DECISION

Voxel-driven mesh-deformation damage renderer (per-cluster wounds, render-only)

Battle damage is now built by bending and tearing the ship's actual surface around where it lost material, with each separate hit becoming its own torn, charred, glowing wound, instead of stamping square holes on a grid.

Jun 3MILESTONESHIPPED

Ship battle damage tears the hull open (epic capital-ship wounds)

the prior attempts read as cheap because the torn edges snapped to the ship's blocky internal grid (square holes); I had my agents drive the wound shape off the visible hull surface instead, with the internals only deciding where and how big. Damage finally looks like a wound, not a missing-block bug.

Jun 3POSTSHIPPED

The Hull Tears Open

For weeks my ships died on the inside while the outside stayed perfect. Tonight the armor finally tears open where the shot lands, glowing at the rim, the ship's bones showing through the dark.

Jun 2DECISION

Performance & Scale pass — 100 ships as the comfortable case (caps, pooling, registries, LOD, perf gate)

I measured first and found the game already runs 100 ships smoothly — so instead of chasing speed I fixed the things that quietly broke or got messy AT scale: every ship now has thrusters (not just the first 32), big battles show many beams (not 8), the asteroid belt and turret-aim stop wasting work, loading 100 unique ships allocates 396MB less, distant ships use a cheaper body that looks identical, and adding new systems/renderers is now a one-line register. A new automated gate guards the speed numbers so they can't quietly regress, and I re-checked the determinism hashes and the on-screen pixels myself after every step.

Jun 1DECISION

Upgrade FNA and StarGazer to.NET 10 LTS

I updated the game engine and its build tools to run on the latest long-term support version of the software framework.

Jun 1DECISION

Harden docs against two verification gotchas (voxel-suite cwd, launchctl env-strip)

I wrote down two easy-to-trip traps so future-me (or an agent) doesn't fall into them again: always run the determinism test from inside the game/ folder (a crash there means wrong folder, not a missing file — don't "fix" it by regenerating the file), and remember that the game launcher drops any custom env switch you didn't explicitly wire through.

Jun 1DECISION

Visual verification is a ship requirement — catalogued visual-test suite, equal weight to determinism

I built a proper test area for "does it look right on screen". For each visual feature there's now a saved test that puts a single ship in a fixed camera view and triggers the feature (e.g. fire each thruster direction), takes a labelled screenshot, and writes down exactly what to check. The feature isn't "done" until someone has actually looked at that screenshot and confirmed it — the same bar the determinism hash checks already hold.

May 30MILESTONESHIPPED

Input layer plus the camera-mirror fix for inverted controls

The ship was steering backwards because the camera sits behind it and flips left and right on screen, while the controls had been set up for the opposite view. I proved which way each control really turns the ship, corrected them, and rebuilt the control system so keys and a gamepad both run through one place that decides direction, with a test that fails if anyone ever flips it again.

May 30DECISION

FNA fix #1 — SpriteBatch delivers MatrixTransform to custom effects

A long-standing engine-side bug silently dropped sprite-pipeline shaders we wrote ourselves: the rendering library only handed the screen-mapping math to its built-in shader, so a custom shader saw zeros and quietly drew nothing. I fixed the library so it now hands the same math to a custom shader too, and proved it with a deliberate magenta test that was invisible before the fix and floods the whole screen after.

May 30DECISION

FNA campaign foundation — build-fna3d + first locally-rebuilt libFNA3D.0.dylib

Up to today our shipped FNA3D binary came from an upstream CI farm. Now we have a one-command script that rebuilds the same binary locally from our own source tree, plus a doc explaining how to do it on each operating system. I ran it to prove it works, replaced the old binary with the new one, and confirmed the game still launches cleanly on macOS. The two FNA C-level fixes left in the campaign are now unblocked.

May 30MILESTONEFAILED

FNA fix #3 prep — Metal fp16 sceneTarget bug NO LONGER REPRODUCES on M4 (H1 disproven, FNA3D edit not landed)

I added a one-line switch so I can flip the in-game render into a higher-quality color space and look for an old rendering bug. When I tested it on my current Mac the bug did not happen, even on the exact same rendering library that originally hit it months ago. So I am not changing the rendering library yet, because there is no live bug for the change to fix. The switch stays in case the bug shows up again.

May 30DECISION

Debug HUD overlay refactored into a lower-right collapsible widget

I moved the live debug stats panel into a small collapsible tab pinned to the lower-right corner. The default view is now uncluttered, just a single tiny toggle button. Click it (or press the tilde key) and the stats grow upward from the corner so they don't fight the gameplay area. Saved screenshots still carry the stats automatically for analysis.

May 30DECISION

A heavy camera for a heavy ship (decouple position from aim)

the current camera is a pure function of the current frame (it snaps every tick with no memory), so every cue of mass is structurally impossible and a 100m warship reads as a 1m toy. Making the camera a spring the ship's motion drives is the one change that unlocks scale, heft, and power at once.

May 30POSTSHIPPED

The Day I Lit the Whole Sky

For weeks my ship sailed through a darkness it carried with it, until one switch finally lit the whole sky and the hull became something worth flying.

May 30POSTCROSSED

Five Days in the Chair: The Bridge Starts to Feel Real

Five nights of work in the captain's chair: the ship learns to wheel in three dimensions, the guns trade a cheat-beam for honest steel, and the cockpit finally looks like an instrument I trust.

May 29DECISION

Whole-pipeline scaling audit — the per-voxel component-kind spine is dead; standardize on geometric footprints instead

The shipyard is great at adding new looks but was quietly broken at adding new *functions*. The code that's supposed to notice "this ship's guns are shot up, stop firing" never actually runs, because the information about which blocks are guns gets thrown away when a ship loads. The steering jets don't have this problem — they figure out their blocks by location instead. The proposal is to make everything work the way the jets already do, which also makes adding brand-new systems (sensors, shields) cheap and means we never have to rebuild old ships when we add a new kind.

May 29DECISION

Scaling-audit NOW follow-through — prow dedup, coverage/parity gates, longbow bridge + fleet completeness gate

Added automatic checks that catch a few ways the ship factory could quietly break — a menu option with nothing behind it, two copies of the same list drifting apart, or a saved ship missing a required part. Also gave the longbow a bridge (it didn't have one) and made the fleet health-check run every time, not just when asked.

May 29DECISION

Weapons Phase 7 — 3D AI spatial tactics (PitchReacquire / PlaneBreak / BowBias) default-disabled in the live sim

New AI behaviors landed — diving above or below the enemy's heavy-gun plane, attacking the stern blind spot, and pointing the bow at the target if the ship has a spinal cannon — but they're all OFF in the normal game so saved fights play identically. You turn each one on with a command-line flag for testing. The behaviors plug into the existing turning controller instead of growing a new one, so future-us has one place to tune steering, not three.

May 29DECISION

Spatial-combat layer — 3D firing arcs, computed hull-wide coverage, and roll-to-tank fresh-face armor

the fight is mathematically 3D but plays flat, every procedural ship covers every face identically, and a wounded capital ship has no way to turn its scars away — the exact 2D-collapse the research catalogues. The voxel hull makes face-tanking *mechanically real* (damage is location-specific) rather than cosmetic, which is a StarGazer-native differentiator.

May 29DECISION

Kill the center-to-center laser; replace it with a projectile-based capital-ship arsenal

The laser fails every pillar at once — no WEIGHT (instant, no lead/dodge/telegraph), damage is a shape-blind blob not a SYSTEMIC story, every hotbar slot is the same non-DECISION, and center-to-center fire ignores muzzle geometry so THE SHIP ISN'T THE CHARACTER. It's also the performance villain: the radius-2 cube destroys ~125 voxels and triggers a full-ship topology BFS per damage tick. Projectile travel-time is the single precondition for nearly all the counterplay (leading, dodging, interception, bearing-prediction) that eight research domains — naval doctrine, hard-sci-fi sims, capital RTS/4X, ship-builders, space-sim damage triangles, sci-fi fiction, weapon-variety design theory, voxel-damage mechanics — independently converge on. The energy fantasy survives louder in three earned places (EMP disruptor set-piece, torpedo drive trail, muzzle-charge telegraph): the laser fantasy was never the beam, it was light crossing space and meaning something when it arrives.

May 29DECISION

3D AI spatial tactics — diving the plane, attacking the stern, and presenting the bow

the broadside/spinal weapon redesign promised a fight where positioning was a real decision — attacker wants bow-on, defender wants side-on, the incompatibility *is* the gameplay. Without these tactics the AI plays both roles flat: a broadside ship has no reason to fear vertical evasion, and a (future) spinal ship would orbit broadside-on like a normal ship and never present its bow. Three behaviors close the gap at the cheapest possible price: each adds one verb the existing controller already had a setpoint for, no new control surface.

May 29POSTSHIPPED

A Hundred-Meter Ship, Wheeling In The Dark

It used to fake its turns. Now the ship fires real jets against its own weight, vents cold gas you can read, and you can shoot those jets to pin it.

May 28DECISION

Remove the visual damage system (Phase 0 of the rebuild)

I stripped out the old visible battle-damage system entirely so I could rebuild it fresh, which for now means ships take hits without yet showing the wounds.

May 28DECISION

Maneuvering thrusters: full deterministic force/torque rigid-body model

I chose the most believable approach for ship movement: thrusters pushing against a ship's real mass, so the drama of a crippled ship spinning or losing control comes naturally from the physics rather than being faked.

May 28DECISION

Maneuvering thrusters Phase 1: clean unified thruster record + committed fleet manifest + full re-export

I cleaned up how every ship's jets are described into one tidy, consistent format and wrote down each ship's recipe in one place, so the fleet stops drifting out of sync as the game grows.

May 28DECISION

Maneuvering thrusters Phase 2: load-time thruster derivation (footprint, jacobian, inertia/COM)

I taught the game to work out each ship's balance point, weight, and where its jets push from the moment it loads, laying the groundwork for the new weighty, physics-driven steering.

May 28DECISION

Regenerate _test_materials fixture; user-approved voxel-suite baseline bump

I fixed a broken internal test that had been crashing on startup and silently skipped for two updates, so the safety checks that confirm ships behave consistently are running again and all of them pass.

May 28DECISION

Maneuvering thrusters Phase 3: force/torque integrator, capability gating, AI PD retune

Ships now move by firing real jets that push against their own weight, so when battle damage knocks out part of a ship its handling drifts and degrades on its own instead of following a script.

May 28DECISION

Maneuvering thrusters Phase 4: thruster VFX fire on command, not on speed

A ship's steering jets now light up the moment they fire, even when it is turning in place or starting from a standstill, so what you see on screen matches what the ship is actually doing.

May 28DECISION

Thruster plume size by role (not strength) + emissive hot core

The little steering jets were drawing as big as the main engines; now each jet is sized to the thruster it comes from (small for steering, large for the main drive) and glows with a hot bright centre so even the small ones read as real thrusters.

May 28DECISION

Maneuvering thrusters Phase 5: dramatic plume (glow + vent particles + onset punch + shimmer)

Firing a thruster now glows, vents a puff of gas, and punches bright on a fresh maneuver, so a hard turn or a main-drive burn looks like a ship lighting its engines.

May 28DECISION

Thruster VFX fixes: roll-plume X-bridge + main drive tracks the throttle setpoint

The steering jets now light on the correct side when you roll, and the main engines glow as bright as the throttle is set, easing off as you ease the throttle down.

May 28DECISION

Coordinate unification — one right-handed +X-starboard ship frame (root-cause fix for the mirrored-jet bug class)

The ship models were being built mirror-image of the way the physics thought about them, and the code papered over the difference axis-by-axis — getting yaw right but roll wrong, so rolling fired the wrong thrusters. Now the models and the physics agree on left and right, so the steering jets always fire on the side that matches the turn, and that whole family of left/right bugs simply can't happen again.

May 28DECISION

Full 6-DOF RCS thrusters + completeness gate + A/D-turn rebind

Every ship was missing half its little steering jets — it could slide right but not left, drop but not rise, and couldn't back up. Now each thruster pod has a full set of nozzles facing all six ways, so ships can move and turn freely in every direction, and a new automatic check fails the build if any ship is ever missing a direction again.

May 28DECISION

Maneuvering feel — flip yaw/strafe input signs + reverse retro plume at full intensity

Turning and strafing left/right were backwards on screen, and the reverse jets were firing so faintly you couldn't see them. Now the left/right keys match the screen and reversing lights the front jets brightly.

May 28DECISION

Ship-completeness fuzz suite — 100 generated ships vs the minimum-parts contract every run

Instead of checking only the eight ships we keep around, this builds a hundred brand-new random ships every time it runs and makes sure each one actually has everything a warship needs — steering jets that can push it every direction, weapons that are properly mounted, a bridge, and a solid single-piece hull with one core in a sensible spot. It deliberately also builds a couple of broken ships to prove the test can still tell when something's missing.

May 28DECISION

Strip the visual damage system to rebuild it fresh (Phase 0)

The iterative wound visuals (beveled cut cross-sections, molten rims, layered interior detail) had grown into a complex render path that still wasn't landing the look I wanted, and each tweak fought the existing geometry. It's cheaper to delete it wholesale and design the next system against a pristine codebase than to keep patching. This is Phase 0 — clean ground before the rebuild.

May 28DECISION

Neutral "NASA/ISS footage" lighting baseline

The player wants a neutral, non-stylized foundation matching real spacecraft footage to build the next visual era on. The old colored 3-point rig + colorful nebula/galaxy vista read as space opera, not NASA footage. A neutral baseline is a stable starting point; stylization can be layered back per-scene later.

May 28DECISION

Grey procedural asteroid field (clustered belt)

The old field read as colorful random rocks (ice/copper/gold + amber/cyan beacon glows) lit by the pre-neutral colored 3-light rig — out of step with the new NASA/ISS baseline and the player's ask for grey, asteroid-ish rocks that are "far and distributed like asteroid fields, not just random rocks in space."

May 28DECISION

Maneuvering thrusters: destructible 6-DOF RCS that physically drives turning

I want capital ships to feel like a mass you conduct, where you read an enemy's next move from the puffs blooming along its hull and "shoot its thrusters to pin it" is a real tactic, not a stat tweak.

May 27DECISION

Tighten 10 skills with mandatory proof artifacts or ask-user fallbacks

I tightened my own development checklists so that every step which used to rest on just eyeballing the result now demands real proof, guarding against bugs slipping through unnoticed.

May 27DECISION

Split Game1 (1689 LOC god-class) into StarGazerGame partial-class file map

I broke up one enormous tangled chunk of the game's core into clearly named, bite-sized pieces, so it is far easier to find and fix the part that controls any given behavior.

May 27DECISION

Partial fix to skill-tightening: relax visual-eval verbatim-quote, standardize ask-user wording

I loosened some of my own self-imposed review rules that were demanding busywork for tiny changes, so the checks I keep stay focused on catching real problems instead of producing empty paperwork.

May 27DECISION

Add verify-fleet one-command end-to-end fleet verification

I built a single command that runs every check on the fleet of ships at once and writes up a clean report, turning what used to be ten minutes of poking around into a quick glance to confirm nothing broke.

May 27DECISION

Extract StarGazerGame.Scenario partial, single owner for scenario reset cluster

I reorganized the behind-the-scenes wiring that resets a battle scenario into one tidy place, so changing how a fight restarts stays simple and predictable as the game grows.

May 27DECISION

Phase 2 of 6-DOF refactor, swap ShipControlState to quaternion + ship-local angular velocity (baseline drift [hash] → [hash], benign FP noise)

I rebuilt how a ship's orientation is stored under the hood so it can later turn freely in all directions without the math breaking, and confirmed the change does not alter how anything actually plays.

May 27DECISION

Phase 3 of 6-DOF refactor — wire PitchAxis + ToggleFlightAssist; direct quaternion integration (determinism baseline unchanged)

Ships can now pitch their nose up and down as a true third turning direction, so you can fly and aim freely in full three dimensions without the controls locking up when looking straight up or down.

May 27DECISION

On-screen ACES tonemap fixed + enabled by default via fullscreen-triangle + sRGB-decode composite ("cheap path"); full linear-HDR pipeline shelved

I got the cinematic film-style color grading working and turned it on by default after it had quietly been doing nothing, giving the whole game a richer, more filmic look without having to redo every scene's lighting.

May 27DECISION

Damage shell binds per-primitive PBR materials (one indexed draw run per material)

A damaged ship's surviving hull now keeps its original surface look instead of turning into one flat dull color, so a battered ship still looks like itself where it has not been hit.

May 27DECISION

Damage rebuild — ship Phase A+B; defer wound-aesthetic phases to interactive/MCP verification

I brought visible battle scars back to ships and added a glowing-breach foundation, then deliberately stopped short of the fancier torn-edge and debris effects because I could not reliably confirm they looked right yet, and I refuse to ship visuals I have not actually seen working.

May 27DECISION

Re-enable visible battle damage by default

The player asked for capital-ship battle damage back. It was disabled 2026-05-25 only because the damage shell looked muted; now that the shell binds per-primitive PBR materials, a damaged ship's surviving hull matches its pristine self, so re-enabling no longer regresses the showcase.

May 27POSTSHIPPED

I Lost A Morning To A See-Through Ship

From the back, my warship was a ghost. Engines hanging in the dark with nothing behind them. Three wrong fixes later, the real culprit was hiding where I never thought to look.

May 26DECISION

Skills migrated from to; lint script enforces the path

I moved my collection of helper guides into the folder where they get picked up automatically, so they are always available to assist instead of sometimes going unseen.

May 26POSTCROSSED

The Day I Could Finally Whisper To The Living Ship

Tuning the ship used to mean stopping the world, changing one number, and waiting to see it again. Now I reach into the ship while it is still flying, turn the dial, and watch it answer in the same breath.

May 25DECISION

Diverged-main sync policy: rebase the trivial cases, surface the messy ones

I set rules for safely merging my work when two copies of the project have drifted apart: the obvious cases get reconciled automatically, while the risky tangled ones stop and wait for me, so no work gets destroyed.

May 25DECISION

Add stargazer-verify-determinism skill +.gitattributes LF-pin for hash-bound fixtures + defer stargazer-schema-contract

I fixed a Windows quirk that was silently corrupting ship data files and added an automatic guard that flags any unintended change to how ships are shaped, before it can sneak into the game.

May 25DECISION

Ship pipeline phases L→F→G: shipyard cooks voxels, game stops cooking at load

I moved the heavy work of turning a ship's 3D model into its solid blocky form out of game startup and into the build step, so ships load noticeably faster and look the same on every platform.

May 25DECISION

Ship pipeline Phase I followup: multi-stage shipyard.Dockerfile + digest-pinned cook-base + cross-platform byte-determinism verified

I proved that ships now come out byte-for-byte identical whether they are built on a Mac or on a Windows machine, so every player sees exactly the same ship no matter the computer it was made on.

May 25DECISION

Close out 3 deferred ship-pipeline items: schema canonical-cook CI gate + oracle threshold calibration +.last-hash Mac bump

I locked down the ship-building pipeline so that any change to how ships are shaped from their models has to be deliberately acknowledged, preventing quiet drift in the final result.

May 25DECISION

Skill overhaul: fix daily-blog, add data/asset/combat verification skills, add [flag]/[flag], extend determinism gate to physics

I expanded my toolkit of automatic checks to cover the ship numbers, combat, and physics that were previously unguarded, catching the kind of silent breakage that once shipped a glaringly pink ship without anyone noticing.

May 25DECISION

Unified capital-ship reactor core (Singularity Forge)

The previous quantum_sphere focal was undersized (around 0.6m on a 72m ship), the four-style split meant no ship felt iconic, and the connectivity-slide pass kept burying it inside the hull. The replacement lands at 1.05m on an 18m gunship and 4m on a 72m dreadnought, and the spine yoke gives the shell guaranteed OBB-overlap with the rib frames so connectivity is satisfied without any sliding. The anchor leaves around 78 percent of the surface exposed above the hull silhouette, which supports the "the core is your exposed kill target, defend it" fantasy. The validator passes 8 out of 8 randomized ships at 82 to 100 percent exposure (it was failing-by-burial on most before).

May 25DECISION

Singularity Forge v2: midline-centred, 20% cap, hex+multi-band

v1 floated above the hull instead of sitting in the gap, had no diameter ceiling (I was seeing 8m orbs on 72m dreadnoughts), and read as a saturated white emissive ball with no surface structure. With v2 I inverted the contrast strategy to bright shell with dark cladding, so the hex pattern and the bands read as silhouette structure at every zoom. I directed a multi-agent parallel review across 30 renders (6 ship families across 5 angles), and it confirmed that v2-iter3 reads as "a contained hex-panelled reactor cell on the centreline" on every family.

May 25POSTSHIPPED

I Wanted Every Ship To Share One Heart

Every capital ship now carries the same glowing core at its centerline. One shape to learn, every hull. The day I gave the whole fleet one heart.

May 24DECISION

Phase 5b kinematic chain: 3-phase render-side aim path

A ship's turrets now physically swivel to track the nearest enemy within their real swing limits, instead of being painted on, so the ship visibly looks alive and aimed in battle.

May 24DECISION

StarUI Zero-Allocation Responsive UI Framework

I built a custom interface system for the heads-up display that never stops to clean up memory mid-frame, which is what keeps the game running smoothly even on a handheld.

May 24DECISION

Wound clusterer: O(n²) all-pairs → O(n) cell-indexed BFS

I rewrote how the game groups a cluster of damage into a single wound so it stays fast even when a weapon carves out a large area, keeping the frame rate steady in sustained fights.

May 24DECISION

DamageVisualHistory skips clean chunks instead of full 21k-voxel walk

When a ship takes a hit, the game now only re-examines the small region that was actually damaged instead of rechecking the whole hull, cutting a big chunk of wasted work during heavy combat.

May 24DECISION

KinematicAimSystem.BuildDeltaLookup reuses caller-owned Dictionary

I stopped the game from throwing away and rebuilding a chunk of memory for every ship on every frame, which keeps the action smooth even with lots of ships on screen.

May 24DECISION

Gameplay loop phase 2: 9-slot hotbar UI + scenario keys move to F1/F2/F3

I added a row of nine numbered ability slots along the bottom of the screen, the place where the player's powers will live, and moved the battle-scenario shortcuts up to the function keys to make room.

May 24DECISION

Enforce voxel core placement zone and exposure constraints

Every ship is now checked to make sure its vulnerable core sits in a sensible spot and stays exposed enough to actually be shot, so the targeting-the-weak-point fight always works as intended.

May 24DECISION

StarUI Responsive HUD Button Panel and Command Routing

Decoupled, addressable UI trees make every UI feature reachable visually AND programmatically. That meets my tenet that external AI agents can query UI state via JSON dumps and execute path-addressable button triggers (e.g. /hud/buttonpanel/reset-battle), which keeps test automation fast and direct.

May 24DECISION

Majestic Dawn Logo Color Swap

I wanted a gold background with navy lines and details for a high-contrast, vibrant look.

May 24DECISION

Update Native Game Icons with Refined Logo

I wanted the refined Majestic Dawn logo in the game shell too. Updating the raw SVG and the compiled binaries together ensures the executable shows the gold-background, navy-lines branding on Windows and macOS windows, the dock, and the file explorer.

May 24DECISION

Require core visibility and longitudinal zoning on ship hulls

I want every ship to have a core that is visible, accessible, and shootable. Targeting the core is a primary combat mechanic, so if the core can hide buried in the middle of the hull, the whole tactical loop collapses. The three longitudinal zones also help players read silhouettes quickly.

May 24DECISION

Monorepo: four-stack + standard library, one repo

I'm a solo dev, and polyrepo discipline was costing me time without buying anything. A shared schema/ subdir plus CI cross-validation kills the silent contract drift that motivated the integration plan in the first place.

May 24POSTSHIPPED

Two Quiet Calls About Where the Work Lives

I decided the guns point themselves where you can see them, and the menu never begs for more memory mid-fight. Both calls protect one thing: a big ship running on a small machine.

May 23DECISION

Share interactive combat launch defaults

I tidied up the default fight you drop into so the ships actually square off and trade laser fire, with longer, more visible beam pulses, instead of drifting out of range before anything happens.

May 23DECISION

Default Program camera to Orbit

Launching the game now drops you straight into an orbiting camera that circles the action, so a normal play session and a captured snapshot start from the same vantage point.

May 23DECISION

Default Program voxel view to mesh damage

When a ship gets hit, you now actually see the hull tear open by default, and I shrank the size of each hit so battles chip away at a ship instead of blowing huge chunks off too fast.

May 23DECISION

Keep default render systems enabled

The game now switches on all its stable visual effects (like the glowing energy shields around ships) by default, so a normal launch shows the game at its best unless something is deliberately turned off.

May 23DECISION

Tune beam damage as direct hits plus splash

I retuned weapon beams so a hit destroys the spot it strikes and only lightly chips the surrounding area, fixing a problem where ships were being blown almost completely apart and vanishing after just a few shots.

May 23DECISION

Run live apphost as one-shot LaunchAgent

I changed how the game launches in the background during automated testing so it reliably starts once and stays up, instead of either being killed early or stubbornly relaunching itself after I close it.

May 23DECISION

Keep broadside orbit steering in AiPilotSystem

The logic that makes enemy ships circle and align for broadside attacks now lives squarely with the rest of the combat behavior, keeping their orbiting and aiming consistent and easy to find.

May 23DECISION

Default voxel debug to translucent overlay

I set the default debugging view to show ship damage as a see-through overlay so the visible hull, the underlying structure, and the width of incoming beams all line up correctly when checking how a battle looks.

May 23DECISION

Plan damage rendering as derived render meshes

I decided detailed ship damage would be handled purely as a visual layer built on top of the simulation, so the wounds can look rich and cinematic without ever changing what the game considers truly destroyed.

May 23DECISION

Add retained wound history to damage plan

The damage system now remembers a wound's shape even after the shattered pieces drift away, so a dramatic gash keeps its torn edges, interior decks, smoke, and sparks instead of healing over once the debris is gone.

May 23DECISION

Build first retained damage renderer slice

I built the first version of the system that renders battle damage as layered wreckage you can see into, while the underlying simulation still treats the ship's structure as the single source of truth for what is actually destroyed.

May 23DECISION

Aggregate damage wound across chunks, cull interior-poking GLB

Battle wounds now form as one clean carved-open breach instead of a blocky grid of dark squares, and stray bits of the ship can no longer poke through the hole from the inside, giving each wound a deliberately crafted look.

May 23DECISION

Remove energy shields from the universe

I removed energy shields from the game entirely, because a glowing protective bubble would hide the very battle scars the game is built to show off, so combat reads purely through armor wear and ships physically breaking apart.

May 23DECISION

Gate full structural wound on cluster size; tiny hits scorch only

Now only real, sizeable hits tear open a ship's hull with a proper jagged cavity, while tiny grazing shots just leave a hot scorch mark, fixing an earlier glitch where small hits sprouted floating black squares instead of believable damage.

May 23DECISION

Default launch is an AI-vs-AI RTS battle with damage on the selected ship

Launching the game now drops you straight into a six-ship computer-versus-computer fleet brawl seen from a high overhead view, with one ship shown in full battle-damaged detail, so the default experience is a watchable showcase of ships tearing each other apart.

May 23DECISION

In-game HUD buttons for reset + runtime scenario switching

I added a clickable button panel in the corner of the screen so you can restart a battle, flip through ships and camera angles, switch between fight scenarios, and toggle damage effects on the fly, without having to quit and relaunch the game with different settings.

May 23DECISION

Voxel state is the truth for visual feedback, not the physics OBB

Set a firm rule that anything a player sees touching a ship (a beam's end, an impact spot) is placed at the true point on the hull, so weapon glows land flush against the ship instead of floating in empty space beside it.

May 23DECISION

Ship contact normal + point routed through voxel raycast

When two ships collide, the game now figures out the exact spot on the hull where they touched rather than guessing the rough center, so contact effects land where the ships actually meet.

May 23DECISION

Coalesce shell triangle draws into one per-ship buffer

Rebuilt how a damaged ship's surface is drawn so the whole hull goes to the screen in one efficient pass instead of thousands of tiny ones, restoring a smooth sixty frames per second during fights with several ships on screen.

May 23DECISION

Defer voxel topology BFS to end-of-batch

Reworked how the game recalculates a ship breaking apart after a hit, doing the heavy check once per volley instead of once per shattered chunk, which keeps the game smooth at sixty frames per second even mid-battle instead of stuttering with each beam strike.

May 23DECISION

Honor glTF PBR materials on ship draw

Ships now keep the colors, metal sheen, and glowing accents their artist gave them when they appear in the game, so a custom ship looks like itself instead of being repainted a single flat faction color.

May 23DECISION

Read KHR_materials_emissive_strength from raw GLB JSON chunk

Now reads how strongly a ship's lights and engine glows should shine from the standard place any 3D art tool writes it, so glowing parts keep their intended intensity instead of dimming to a flat default.

May 23DECISION

Revert emissive strength to material.extras["strength"]

Switched to reading the brightness of a ship's glowing parts (like engine flares) from a simpler, reliably written value, so authored glow intensity comes through correctly with less fragile machinery behind it.

May 23DECISION

DamageableGlbMeshAsset multi-primitive, retains node identity

The system that builds a damageable ship can now read a ship made of many separate pieces instead of just one, so the detailed new ships hold together and show their full shape rather than appearing as a single stray sliver.

May 23DECISION

GlbVoxelTriangle carries NodeName

Ships now carry the original name of each part of their body (engine, weapon, and so on) through the building process, so the game can later treat a thruster as a thruster and a gun mount as a gun mount based on what the artist actually labeled it, instead of guessing from shape.

May 23DECISION

Automated frame sequence capture and GIF compiler pipeline

I added a way to automatically record a smooth run of gameplay and stitch it into a short clip, so highlight reels like explosions and maneuvers can be captured for the dev blog without manual screen recording.

May 23DECISION

Default launch is single-ship Dreadnought-style + hull binds GLB material

I made the game open straight into a close-up duel between your capital ship and one enemy, and removed a color tint that had been masking each ship's true paint, so ships now show their real materials and tell friend from foe through the interface instead.

May 23DECISION

ShipPackSidecarReader implements the ninja-blender ship-pack v1.0 contract

The game now reads the new richer ship files and refuses to load any that have been tampered with or half-written, so a corrupted ship is caught immediately rather than glitching later.

May 23DECISION

Migrate default ship path to

I switched the default ship over to the new, far more detailed version built by my ship-maker tool, while still falling back to the old plain one if the new files are missing.

May 23DECISION

Start the default run in combat

The current playable slice is about proving voxel and GLB combat, so the first window should show enemy engagement without requiring hidden scenario flags or perfect timing.

May 23DECISION

Make run launch orbit combat

My "run" loop should land me directly in the playable test surface, not force me to remember hidden flags or press Tab before camera input works.

May 23DECISION

Show voxel damage through the GLB by default

Voxels are intentionally invisible gameplay truth, but the normal playtest view has to show their effects, otherwise combat looks like lasers hitting an indestructible model.

May 23DECISION

Treat default run as the showcase

My run loop is the product review surface. Hiding effects behind flags makes features look broken or absent when I (or anyone else) glance at the game.

May 23DECISION

Make lasers scar before they sever

Capital ship damage should read as progressive hull punishment. When the ship just disappears after a few hits it feels like a render bug, even when the voxel topology is technically obeying core ownership.

May 23DECISION

Make enemy broadsides orbit the player

Moving the firing origin spreads laser hits across the voxel and GLB damage surface, and it makes the encounter feel like two capital ships maneuvering around each other.

May 23DECISION

Show voxel truth over the GLB in default combat

To playtest the voxel damage cornerstone I need the authored ship and the underlying damage grid visible together. The oversized lasers were making hits look wider than the damage they were applying.

May 23DECISION

Replace triangle deletion with authored wound rendering

Capital-ship damage needs to expose structure and battle scars, not look like missing GLB triangles. The full reviewed plan is in SHIP-DAMAGE-RENDERING-PLAN.

May 23DECISION

Treat breaches as capital-ship interiors

A capital ship breach should read as a huge layered vessel being torn open, not as a GLB shell with missing faces or flat caps.

May 23DECISION

Use layered wreckage as the damage bar

I want the damage cornerstone to feel like a huge ship being gutted, not like a debug mesh disappearing. The working art bible is DAMAGE-VFX-ART-BIBLE.

May 23DECISION

Honor glTF PBR materials by mapping onto BasicEffect (v1, no custom shader)

I need external authors (ninja-blender) to author per-part colors, metallic distribution, roughness, and emissive engine glows, and have the in-game ship match the source preview's color identity. The renderer was throwing every material away and re-tinting per faction (cool steel for the player, warm copper for the AI), so two visually-distinct authored ships read the same in-game. The "color identity matches" plus "engines glow" goals only require per-part color, per-part specular character, and per-part emissive, none of which need a custom shader.

May 23DECISION

Tonemap target: ACES filmic at exposure 1.0

The ninja-blender web preview uses THREE.ACESFilmicToneMapping with exposure 1.0. Matching the tonemap end-to-end means the per-part baseColor and emissive values authored in Blender will read the **same shade** in StarGazer as in the source preview. Without it, a red-orange engine glow can read pink-white because the shoulder curve differs. Tonemap choice has more visible impact on "does this ship look like its preview" than BRDF choice does, so picking the matching one closes the biggest source-of-truth gap.

May 23DECISION

Tonemap target: AGX (supersedes ACES choice)

AGX preserves bright chromatic edges around stars and thrusters better than ACES, and that matters for a space-combat game where every visible HDR source (engines, beams, suns) sits over a dark background and the tonemap shoulder decides whether they "bloom and bleed" or "clip to a flat hot ring." That was the original analysis in the render architecture entry. The brief deviation toward ACES was driven by ninja-blender's preview using ACES, but matching the planned architecture beats matching one external preview.

May 23DECISION

v1 IBL stand-in: asymptotic raise-the-blacks emissive lift

Bare PBR through BasicEffect renders the literal product of baseColor * directLighting, and for a baseColor authored to expect environment-map bounce (which is what every modern ship tool does, including ninja-blender's Three studio HDRI), the missing bounce leaves dark hulls reading pure black. My first reaction on dotnet run was "why is the ship so dark?", and the math confirmed it is authored that dark on purpose, expecting IBL to lift it. The (1 - baseColor) * k curve is the "raise the blacks" component of any HDR or tonemap workflow, max lift to surfaces with minimum direct-light response, zero lift to already-bright ones. That matches the qualitative behavior of an IBL irradiance map without requiring the cubemap or the shader pipeline.

May 23DECISION

Trust contrast: tiny IBL floor + brighter key lights (supersedes the k=0.25 lift)

The k=0.25 lift was the wrong knob. For ninja-blender's baseColor (linear ~0.014), a 0.25 emissive add is roughly a 17x boost, which paints near-grey over near-black and erases the "dark hull" identity. The right principle, per the feedback I got, is "accept that dark materials render dark in shadow, raise the key-light intensity, trust the contrast." With the bright key, lit faces read at 30 to 35 percent sRGB (dark but structured), shadow faces read at around 5 percent (truly dark, matches SceneIR), and metallic spec hot spots punch at around 60 percent because they reflect the bright key and fill, not the dark base.

May 23DECISION

Configure interactive combat launch defaults and broadside AI behavior

Grouping the combat parameters under a central defaults registry gives me consistent, predictable scenario initialization. The broadside-hold pilot keeps weapon alignment for high-fidelity combat feedback.

May 23POSTFIRST

Guts And Glow

The first day damage stopped looking like deletion and started looking like a wound. Armor peels, ribs show, and the enemy has learned to circle.

May 23POSTSHIPPED

I Decided Damage Should Open The Hull, Not Erase It

When a beam lands on a capital ship, the cheap thing is for the wound to vanish. The right thing is for the ship to come open. Today it came open.

May 22DECISION

Canonicalize agent skills and split solo-main from worktree-branch commits

I gave my helper assistants one clear home for their instructions and kept my own solo work separate from work running in parallel, so different streams of effort no longer step on each other.

May 22DECISION

Add world grid and scripted thrust for movement captures

I added a fixed grid in space and a way to drive a ship along a set path automatically, so I can capture the exact same movement shot every time and judge whether motion looks right.

May 22DECISION

Camera is lightweight render-side state with CLI modes

I kept the camera as a light, easy-to-script viewing tool separate from the simulation, with a default follow mode and exact preset shots, so I can frame screenshots quickly without complicating the game's core or adding heavy machinery.

May 22DECISION

Orbit camera remains render-side and scriptable

The orbit-around-a-ship inspection view lives purely on the viewing side, steered by keyboard or gamepad and repeatable from exact angles, so studying a ship never disturbs the actual simulation.

May 22DECISION

Camera default far clip keeps 10x space headroom

I pushed the camera's view distance ten times farther by default so it won't clip away ships and scenery while I orbit around to inspect them, giving the wide open feel that space scenes need.

May 22DECISION

Engine systems use findable ownership boundaries

I broke the game's inner workings into clearly named pieces by job, so it's easy to find and grow the camera, controls, visuals, or flight without behavior leaking messily across everything.

May 22DECISION

Ship visual forward is world +Z

Until ships could rotate, I locked in which way counts as forward and right for the default ship so the movement keys actually push it the way it looks like it should go, fixing controls that had felt backward.

May 22DECISION

Ship motion starts as assisted Newtonian velocity

Ships drift with real space-like momentum: thrust builds up speed, there's a top speed, they coast freely when you let off, and a brake assist helps you stop, giving flight weight without going full orbital-physics.

May 22DECISION

Make thrust follow ship yaw

Thrust now pushes in whatever direction the ship's nose is pointing, so its momentum follows where the bow faces instead of always shoving in a fixed world direction.

May 22DECISION

Keep vertical thrust on Shift

I set the controls so holding Shift thrusts the ship upward and Space acts as a brake, which feels more natural since Space reads like a deliberate stop and Shift is easy to hold alongside the movement keys.

May 22DECISION

Add target dummy instrumentation before weapons

Before adding real weapons I gave ships a practice target plus on-screen guide lines showing heading, speed, distance, and direction to the mark, so I could fine-tune how flying and lining up a shot feels.

May 22DECISION

Kill stale game instances before launching

I made it a rule to always shut down any leftover copies of the game before starting a fresh one, so stray hidden windows can't pile up and muddy my testing.

May 22DECISION

Roll joins ship-local orientation

Ships can now roll, banking around the line their nose points down, and that roll actually affects how they thrust and fight rather than just tilting the picture.

May 22DECISION

Ship physics has a named sim system

I gathered everything about how a ship moves, turns, and slows into one clear home, so tuning the feel of flight is a single obvious place to work instead of scattered through the whole simulation.

May 22DECISION

Roll basis matches rendered ship roll

When a ship rolls, the invisible guides I use for its weapons and steering now tilt the same way the ship visibly does, so what I see and what the game thinks are happening finally agree.

May 22DECISION

Coordinate conventions get a project skill

I set a standing rule that any work touching how ships are aimed, turned, positioned, or how the camera sees them has to first sort out which way is up, so the game's directions stop drifting into a tangle of opposite-facing fixes.

May 22DECISION

Keep AGENTS as the instruction source

I settled on a single master instruction file for the project, with everything else just pointing back to it, so the guidance my various helpers follow never drifts out of sync.

May 22DECISION

Plan BEPU-backed body physics

I wrote down the plan for handling large numbers of colliding space objects with a real physics engine, kept walled off behind my own code so the game stays organized and runs well everywhere.

May 22DECISION

Extend physics plan for modules and constraints

I expanded the physics plan to treat solid ship bodies, breakable modules, and hinged connections as distinct problems, each with its own performance targets, so capital ships can lose pieces and link up without hurting performance across computers and consoles.

May 22DECISION

Headless sim scenarios start physics migration

I recorded how ships currently fly (thrust, turning, rolling, braking, and firing) as fast windowless test runs, so the big physics rework can be checked against them and never quietly change how a ship feels to pilot.

May 22DECISION

Benchmark body iteration before BEPU

I added a quick stress test that runs a crowd of moving objects with repeatable results and timing, giving me a cheap baseline to compare against before the bigger physics overhaul lands.

May 22DECISION

Ship pose snapshots become the read model

I had the simulation start broadcasting each ship's position and orientation in a single shared form, so the parts of the game that draw and inspect ships can move onto the new physics one at a time instead of all at once.

May 22DECISION

Validate physics assets before runtime bodies

I made every ship's physical properties (its shape, weight, and how it reacts to forces) start life as checked, readable data, so problems show up as clear differences before they ever reach the live game.

May 22DECISION

Keep BEPU behind StarGazer physics handles

I tucked the new physics engine behind a clean wall of my own so the rest of the game never talks to it directly, keeping the borrowed engine swappable and the game's code tidy.

May 22DECISION

Start collision slice headless

I built the first slice of collision handling as a windowless test that proves objects spawn, get scanned for hits, and report events in a reliable order before any of it is shown on screen.

May 22DECISION

Render physics debug from collision slice data

I made the on-screen physics debugging view draw straight from the same verified data the underlying simulation uses, so what I see while debugging is the real state and not a separate guess.

May 22DECISION

Prove compound detach before articulated joints

I proved that big ships can break apart cleanly, with detached pieces carrying their momentum away, before wiring up the more delicate physics of hinged and jointed parts.

May 22DECISION

Set first physics performance gates

I set concrete speed targets the physics has to hit, including a profile for the lower-powered handheld console, so performance is measured against real limits as the simulation grows more complex.

May 22DECISION

Harden physics runtime API

I gave the physics layer a proper toolkit for spawning, destroying, and tracking objects safely, so the game can handle many different kinds of moving things instead of a handful of one-off test pieces.

May 22DECISION

Add a BEPU runtime benchmark gate

I built a tool that measures how fast the game's collision and motion math runs on its own, so I can see exactly where the time goes before adding heavier physics.

May 22DECISION

Support static physics bodies behind BodyRef

I taught the physics engine to handle immovable things like stations, beacons, and obstacles through the same simple interface it uses for ships, so non-moving objects don't need their own separate plumbing.

May 22DECISION

Name physics runtime velocity units

I renamed the speed values in the physics engine to clearly mark which ones are measured per second versus the older per-frame ones, so the two timekeeping styles that coexist during this transition can't get confused.

May 22DECISION

Keep BEPU shape ownership inside PhysicsWorld

I made the physics engine quietly clean up after every object it creates and destroys as ships come and go, so spawning and removing things doesn't slowly leak clutter behind the scenes.

May 22DECISION

Serialize dotnet commands per worktree

I made it a rule never to build or run two copies of the game at once from the same folder, because doing so causes false errors from the two builds stepping on each other's files.

May 22DECISION

Route runtime queries through collision channels

I made the game decide what can collide with what using the same rulebook the ships themselves are built with, so hits and near-misses behave consistently everywhere instead of each feature inventing its own rules.

May 22DECISION

Make runtime query hits self-describing

I made every detected hit carry its own details, like what it struck and how it should react, so the game can resolve a collision instantly without having to go look the answer up afterward.

May 22DECISION

Make playable physics consume PhysicsWorld

I moved the real game (your ship, the target, and weapon fire) onto the proper physics engine instead of leaving it confined to behind-the-scenes test runs, so everything you see and shoot now obeys the same real physical rules.

May 22DECISION

Wake controlled physics bodies on motion

I fixed a bug where a ship left sitting at the start would refuse to move forward (the engine had quietly put it to sleep), so a ship always responds the instant you give it a push.

May 22DECISION

Separate chase and orbit camera ownership

I gave the default camera its own follow-behind mode anchored to the ship and clearly separated it from the orbit and fixed views, so a ship sliding sideways now actually looks like it is moving instead of just spinning.

May 22DECISION

Harden live physics review gaps

I tightened up how the physics engine tracks which objects are touching and rejects bad data, so as the fleet grows it stays fast and never gets fed nonsense numbers that would corrupt the simulation.

May 22DECISION

Use raw runtime icon assets

I set up the game's window icon so the program automatically finds and shows it on Windows and Mac without extra fuss.

May 22DECISION

Deterministic AI pilot emits movement intent only

I taught the computer-controlled ships to simply decide where they want to go (like wandering or charging) and let the shared movement system carry that out, so their behavior replays identically every time and they stay unarmed for now.

May 22DECISION

Promote ships into a dense control store

I gathered every ship, yours and the computer's, into one shared registry that feeds them through a single steering pathway, so growing from one ship to a whole fleet stays organized and the ships still bump and collide believably.

May 22DECISION

Add real-ship scale and determinism gates

I built a way to run whole fleets of ships through the game's movement and combat logic without any visuals, so I can prove the ships behave the same way every time and measure how they hold up at scale before trusting it.

May 22DECISION

Measure live frame metrics in the render HUD

I added a live readout of how smoothly the game is drawing, so I can spot stutters in real time while flying around as I push the number of ships and the intensity of combat higher.

May 22DECISION

Draw selected ship vectors from sim snapshots

I made the on-screen debug arrows for a selected ship (which way it faces, where it's heading, where its computer pilot is aiming) come straight from the same source the actual gameplay uses, so what I see while debugging matches what the ship truly does.

May 22DECISION

Split ship scale profiles and benchmark phases

I added different ways to lay out test fleets, from ships spread thinly across space to crowds deliberately packed together to collide, so I can tell exactly which part of the game is slow when the action gets heavy.

May 22DECISION

Plan voxel ships as deterministic state over coarse physics bodies

I decided each destructible ship would be a single solid body for movement with a detailed damage map laid over it, rather than thousands of separate physics objects, so battles can scale to enormous fleets without grinding to a halt.

May 22DECISION

Harden voxel plan around chunked and pooled performance paths

I rewrote the destructible-ship plan to demand the fast approach from day one, avoiding shortcuts that would look fine on a single ship but crawl once hundreds or thousands fill the screen at once.

May 22DECISION

Define voxel construction, destruction, debris, and performance test gates

I wrote out a full test plan for destructible ships, listing every sneaky way the system could break (a severed chunk still acting alive, ships splitting wrong) so those flaws get caught automatically instead of slipping past a screenshot.

May 22DECISION

Add synthetic voxel validation, split scenarios, and benchmark gates

I delivered the first working slice of destructible ships: test shapes that break apart correctly, pieces that drift off as wreckage when severed, and speed tests to make sure all of it stays fast.

May 22DECISION

Add CPU GLB voxel cook slice

I got the game to take a real 3D spaceship and slice it into its damage blocks for the first time, turning a detailed ship into roughly twelve hundred destructible cells, proving the pipeline works on an actual model and not just made-up test shapes.

May 22DECISION

Add aggregate voxel test suite gate

I built one single command that runs the whole gauntlet of ship-damage tests at once, from ships breaking into floating pieces to a real spaceship being chopped into its damage blocks, so I can catch broken battle behavior before it ever reaches you.

May 22DECISION

Record core-death hull as voxel debris

When a ship's core is destroyed, all of its remaining intact pieces instantly become drifting wreckage in one clean stroke, so a dead ship can no longer keep fighting or be targeted as if alive.

May 22DECISION

Hash voxel suite results by stable evidence

I changed how the game double-checks that battles play out identically every time, basing that check on what actually happened (which parts lived or died) rather than on stopwatch timings that naturally wobble run to run.

May 22DECISION

Harden voxel headless gates before runtime integration

I tightened the automatic safety checks around how ships are carved into their tiny damage blocks, so the system refuses to choke or quietly lie about being reliable when ships get very large or very numerous.

May 22DECISION

Attach voxel state to runtime ships

Every ship, whether you or a computer opponent flies it, now carries a living record of damage to each part of its body, hit and torn apart in a strict, repeatable order, so a wreck always falls apart the same way.

May 22DECISION

Add selected-ship voxel debug overlay

I added a way to peek under a chosen ship's skin during play, showing its damage in little building-block chunks and counting how many are still alive, dead, or knocked loose, so I can prove the damage is real before building bigger battle features on it.

May 22DECISION

Plan FNA-native HDR forward rendering pipeline

I laid out the full plan for a modern, cinematic look for the game: rich lighting that holds bright and dark detail at once, soft glows around hot light, crisp edges, film-grade color, and realistic shadows, all tuned to run smoothly even on a handheld.

May 22DECISION

Fold Git LFS upload into the committed pre-push hook

I fixed how my project uploads its large screenshot files so that pushing my work no longer leaves the heavy images stranded on my machine, which had been causing fresh copies of the project to fail to download.

May 22DECISION

Render voxel debug cells at cooked GLB density

The debug view that shows a ship's building-block structure now displays it at the true, fine density the ship was built with, so when I inspect it the framework looks as detailed as it really is instead of a coarse stand-in.

May 22DECISION

Route beam hits through ship-local voxel DDA

Weapon beams now do their damage by tracing the actual shot through a ship's blocks and striking the first solid one it reaches, so hits land where the beam really goes instead of from hand-picked spots, all kept fast and exact.

May 22DECISION

Prove sparse voxel DDA crosses empty cells without allocation

I proved that a beam can travel through long stretches of empty space inside a ship's frame and find the first solid block to hit without ever bogging the game down, which matters because capital ships are mostly hollow and beams cross a lot of nothing.

May 22DECISION

Add aggregate voxel state slots with promotion on demand

Far-off ships can now sit as lightweight summaries that cost almost nothing, and a ship only blossoms into full block-by-block detail the moment it actually takes damage, so the game can hold hundreds or thousands of ships at once while nearby combat still looks fully detailed.

May 22DECISION

Add detailed voxel state scale ladder

I added a test that builds 1, then 10, then 100 ships all tracked in full block-by-block detail and damages each once, confirming every one registers its hit cleanly before I push battles to heavier fire.

May 22DECISION

Report detailed voxel caps in sim scenarios

Test runs now print exactly how many ships are being tracked in full detail versus kept as cheap summaries, and you can cap that number, giving a clear honest readout that the fleet's detail-saving system is really working in the live game.

May 22DECISION

Apply voxel damage by sorted command runs

I rewrote how a wave of incoming hits is processed so the game handles them in tidy groups by which ship was struck, letting a thousand-ship battle's damage scale with the number of volleys rather than ballooning out of control.

May 22DECISION

Resolve same-tick voxel detaches inside command runs

When a chunk of a ship breaks off during a single burst of hits, later hits in that same instant correctly pass through the now-floating debris instead of pretending it is still part of the living ship.

May 22DECISION

Report real voxel topology and LOD benchmark metrics

I taught the performance test to report honest, real numbers about how ship hulls are broken into pieces and how much work each tick does, so a slowdown at large fleet scale can't hide behind tidy fake totals.

May 22DECISION

Guard aggregate voxel ships against invalid promotion

I made sure that a shot which misses or doesn't really count against a distant ship no longer accidentally jolts that ship into expensive full-detail tracking, which is what keeps huge fleets affordable to simulate.

May 22DECISION

Read aggregate voxel core ids without promotion

When something just needs to peek at which block sits at a distant ship's core, the game can now glance at it cheaply instead of waking the whole ship into full detail, so far-off ships only get spun up when damage actually lands on them.

May 22DECISION

Test killed voxel ships through runtime control systems

I added tests that fly destroyed ships through the game's real steering and computer-pilot logic to confirm a ship with its heart blown out goes truly dead and stops trying to move, instead of only checking that on stand-in stand-alone wrecks.

May 22DECISION

Extract render pipeline scaffold from Game1.Draw

I reorganized the behind-the-scenes drawing code into one tidy pipeline, clearing the way for the richer lighting and visual polish I plan to layer on next.

May 22DECISION

Mark detached voxel debris without drawing dead hull

When a chunk of a ship breaks off, the lost piece vanishes from the hull and gets its own marker showing exactly where it tore away, so a ship splitting apart is easy to follow.

May 22DECISION

Use apphost launcher for live game runs

I changed how the game gets launched so the running game stays alive on its own and does not get killed when I close my work session, making testing far more reliable.

May 22DECISION

Add live voxel damage demo

I built a small live demo that plays out damage over time, breaking a structure apart piece by piece, so I can actually watch how destruction unfolds rather than just inspecting frozen snapshots.

May 22DECISION

Render voxel debug cells as filled blocks

I switched the damage view from thin wireframe outlines to solid filled blocks, so torn hull, dead sections, and floating debris all read clearly instead of looking like a see-through cage.

May 22DECISION

Cache voxel debug rendering by dirty chunks

I made the game redraw only the parts of a ship that just took damage rather than rebuilding the whole hull every frame, keeping things fast even as the cornerstone damage system runs.

May 22DECISION

Drive GLB mesh damage from voxel state

Damage now eats away the ship's actual sculpted surface where it was hit, so a wounded ship keeps its real shape and loses recognizable chunks of hull instead of turning into crude blocks.

May 22DECISION

Add programmatic GLB breach demo

I added a quick way to drop straight into a scene showing a fresh breach blown into the top of a ship's hull, making it easy to look at battle damage on demand.

May 22DECISION

Share GLB breach damage patterns with tests

I set up an automatic check that confirms a blast through a ship's hull always carves a proper hole without instantly killing the ship, so the damage stays believable as I tune how it looks.

May 22DECISION

Route ship lasers through voxel damage

Ship laser fire is now wired straight into real hull damage: a beam that lands burns away part of the enemy and drains its health, so what you see hitting the ship is what actually hurts it.

May 22DECISION

First weapon is a broadside beam gate

Capital ships should reward bearing and positioning before twitch aim. The beam gives me immediate feedback while the weapon art and damage rules are still fluid.

May 22DECISION

Make prototype thrust visibly readable

The physics-backed ship was technically moving, but the motion was too subtle against the follow camera and the large grid for me to trust the controls during live playtesting.

May 22DECISION

Default flight view is ship-local chase

Translational motion needs to stay readable during live playtesting. A visual-center follow camera can hide movement on a capital ship because rotation changes the camera's target.

May 22DECISION

First AI gameplay slice is no-combat flight

I want to prove ownership, control, collision, camera framing, and the debug surfaces before I layer fighting, targeting, damage, or fleet behaviors on top.

May 22DECISION

Compact runtime HUD around performance first

The previous debug readout exposed useful values but behaved like an unstructured dump. I need performance visible while playtesting at scale, and I want the rest scannable without covering the playfield.

May 22DECISION

Ship selection is keyboard and CLI addressable

Fleet-scale debugging needs a stable way to inspect one ship at a time without mouse-only picking. Keeping chase player-owned preserves the flying camera while orbit becomes the inspection camera.

May 22DECISION

Capital ships become core-rooted damageable voxel structures

Damageable capital ships are a cornerstone fantasy for me. Positioning and weapon impacts should matter spatially, not just subtract from a single health bar. A core-rooted graph gives readable rules, supports future "real ship systems", and keeps disconnected wreckage behavior deterministic for the first slice.

May 22DECISION

Detached voxel islands become debris, not ship

Capital-ship damage needs to feel physical without letting severed pieces keep acting like the player ship. This gives the sim a crisp ownership boundary for future salvage, collision debris, visual wreckage, and system detachment.

May 22DECISION

Core death sheds remaining hull ownership

Core death is the same ownership boundary as bridge severing. Once the root is gone, no surviving hull piece should keep behaving like the ship.

May 22DECISION

Adopt cinematic space-opera aesthetic

The "modern beautiful space game" target needs a single aesthetic compass so I stop relitigating per-effect technique choices. Cinematic space-opera fits capital-ship combat's slow tactical pacing, gives every system biome a strong identity, and survives the FNA SM3 rendering ceiling without compute-required modern looks.

May 22DECISION

Tune flight around capital-ship commitment

Capital ships should feel massive because repositioning is a decision with momentum, not because the top speed is tiny.

May 22DECISION

Put primary turning on A/D

For capital-ship handling, left and right on the home cluster should command heading commitment first. Strafe is secondary maneuvering thrust, it deserves the secondary keys.

May 22DECISION

Use voxels as invisible damage truth

Capital ships need authored silhouettes and readable art direction. Voxels give me spatial damage and scaling, but showing raw blocks as the main ship would undercut the fantasy.

May 22DECISION

Make lasers the first live voxel combat proof

It proves the cornerstone loop in actual play (weapons, ship ownership, voxel damage, life, debris, GLB mesh removal) without waiting for turrets, reactors, armor types, or full combat AI.

May 22POSTSHIPPED

The Ship Coasts Now

I gave the ship drift, broadside arcs, and a quiet foundation strong enough to hold a debris field. Today it stopped being a toy.

May 22POSTSHIPPED

Three Calls I Made About How The Ship Should Feel

Does the ship dart or does it drift? I want it to drift. Three decisions in a row, all serving that one feeling.

May 21DECISION

Vendor FNA instead of MonoGame NuGet

I copied the game's core engine directly into the project so I fully own it and can change it freely whenever the game needs it, rather than depending on an outside package.

May 21DECISION

Target.NET 8

I built the game on the current long-term-supported version of its programming platform, which runs natively across Windows and Mac (including Apple's own chips).

May 21DECISION

SDL3, not SDL2, as the FNA platform layer

I built the game on the modern version of its underlying platform layer, which brings better controller and high-resolution display support that matters for gamepad play and Mac.

May 21DECISION

Native libs laid out as runtimes/<rid>/native/

I organized the game's platform-specific support pieces into the standard layout so the correct ones get bundled automatically for Windows or Mac when I build for each.

May 21DECISION

Use SharpGLTF.Core via NuGet for GLB loading

I adopted a well-maintained, widely trusted tool for reading the 3D ship files the game uses, so loading ship models is reliable and I am not maintaining that plumbing myself.

May 21DECISION

Main-only git workflow with auto commit + push

Working alone, I save and back up my progress automatically at every finished step, which keeps the game always in a working state and gives me easy points to roll back to.

May 21DECISION

Adopt DOC/ decision-log discipline

I started keeping a running journal of every meaningful design and technical choice and the reasoning behind it, so when I return to the game after a break I can remember why things are the way they are.

May 21DECISION

Defer text rendering library choice; "Hello World" via window title only

For the very first milestone I just put the greeting in the window's title bar and held off on picking a text system until I actually knew what the game's on-screen writing would need.

May 21DECISION

Adopt FontStashSharp.PlatformAgnostic + custom FNA renderer for text

I chose a text-drawing approach that lets me load and swap fonts at any time without a rebuild, so on-screen writing renders cleanly and stays easy to restyle later.

May 21DECISION

In-process screenshot via RenderTarget2D + --screenshot CLI flag

I built the game so it can take its own screenshots from any moment with a single command, giving me a consistent way to capture how things look across every computer without any outside tools.

May 21DECISION

First ship renders: GLB loader extended for normals + BasicEffect render path

I got the first real ship model showing on screen with simple built-in lighting and an automatic camera that frames any ship, so the game finally renders a lit, three-dimensional vessel instead of just placeholder text.

May 21DECISION

Cull clockwise, not counter-clockwise, for glTF + FNA right-handed projection

I corrected which side of each surface the game treats as facing outward, so ships now show their proper outer hull instead of looking turned inside-out with their interior walls exposed.

May 21DECISION

Roguelike structure (procedural runs, not scripted campaign)

It fits my solo indie scope: replay value scales with procedural systems while content authoring stays manageable, and the roguelike loop fits "one more run" sessions, which is how I actually play games while traveling.

May 21DECISION

3D space combat centered on capital ships

This has been the game concept since I started. Capital ships afford strategic-feel combat (positioning, broadside arcs, subsystem targeting) over twitch reflexes, which aligns with the roguelike "tactical decision" loop more than with a flight-sim arcade loop.

May 21DECISION

GLB as the ship model format

It's a modern open format, widely supported in DCC tools (Blender, etc.). It avoids the dead XNA-era.fbx to.xnb Content Pipeline. And runtime loading lets me do data-driven ship variants without a rebuild.

May 21DECISION

Target PC + Mac desktop

Mac coverage lets me keep working on a Mac during travel, and the FNA plus SDL3 stack covers both desktop targets cleanly (better controller and HiDPI support along the way).

May 21DECISION

Programmatic control of every game state is a core tenet

Four compounding reasons. AI-driven verification needs programmatic state access for automated screenshots and scenario runs. My dev velocity collapses if reproducing a bug takes 90 seconds of menu-clicking instead of a --scenario flag. The same affordances let players write mods, replay, and speedrun tools later. And forcing programmatic reach makes the sim explicitly expose its state transitions (easier to test, more predictable). Retrofitting onto a finished UI is a multi-week refactor, menu state machines, animation skippers, save and load headless paths all have to be threaded through every screen. Designing it in from feature one is essentially free.

May 21DECISION

Determinism in the simulation layer is a core tenet

Replay unlocks bug-repro-by-file (a player sends a 200-byte replay, I reproduce locally), automated scenario regression (replay then diff every Nth frame), AI-agent verification loops, and modding and speedrun infrastructure, and all of those compound forever on top of a deterministic sim. The retrofit cost is brutal (every system touching randomness, time, or IO would have to be audited and rewritten), so adopting the discipline now while the sim code is empty is essentially free. The cost gap between "do this from day 1" and "add this in year 2" is multiple orders of magnitude.

May 21DECISION

Parallelizable by design, multi-agent, multi-instance from day 1

I want multiple Claude Code agents running in parallel (for example, one in worktree A and another in worktree B with screenshot diffs comparing them). That only works if the codebase has no hidden contention surface: no shared file someone forgot about, no global cache that gets corrupted, no log file two agents fight over. Building this in from day 1 costs me nothing. Bolting it on after the first global-state bug is brutal, I'd find them one race at a time over months.

May 21DECISION

Asset pipeline: raw files at runtime, no packing until shipped game needs it

My projected asset footprint is modest: a small fleet of ship GLBs, modest textures, conventional SFX and music, low hundreds of MB at ship. At that size class, the iteration-speed benefits of raw files (no build latency, trivial future hot-reload, every agent can write any asset in any worktree without tooling, dev environment matches ship) outweigh the distribution-size and cold-start benefits of packing. Stating "no packing" as a principle now prevents drift into "just add a small manifest" creep that compounds into a pipeline rewrite a year in.

May 21DECISION

Determinism tenet refinements after expert review

I had my determinism specialist reviewer pass on the original 7 rules (2026-05-21), and they named these as the 30 percent the original list missed, the parts that actually break in shipped lockstep games. It's cheap to add them to the tenet text now while the sim code is still empty.

May 21DECISION

Run shape: short FTL-style runs, hard perma-death, procedural fleets + sectors, no meta-progression

Short runs plus hard perma-death gives me the "one more run" loop that fits travel-on-Mac sessions, matches my solo-dev scope (no meta-DB to maintain), and lets each run carry real stakes. Procedural-fleet-on-a-fixed-roster keeps the content authoring tractable.

May 21POSTFIRST

First Transmissions: One Ship, One Window, Day One

All I wanted on the first day was a window, a ship, a grid for scale, and a camera that follows. Four small proofs that the dream is real.

May 21POSTSHIPPED

Day One: I Decided To Owe Nobody

Two calls I made before any of the game existed. One about the machine that runs the ship. One about the words on the screen. Both about owing nobody.