Commit graph Aetheria/docs
Author SHA1 Message Date
Meta Vens
16d8493e0c Cut 9 map: the die is not a die
A Soul pass measured the thing three cuts assumed. FireControl's per-shot seed
feeds CultMath's xorshift32, whose NextFloat returns the top 24 bits of the
FIRST round -- and one round cannot carry ShotId's low-bit variation into the
high bits. Every zone's hit roll spans 0.1249. A shot is a step function whose
threshold is fixed when the zone is created: below the band it never hits, above
it always does. An unaided shooter hit 0 of 18,926 shots.

That is the operator's "no hits registering," and being stable per zone is why
it came and went.

It is this map's own prescription, written by Self in Cut 6b, and the reason it
survived is that no test in the campaign measures a distribution -- every
fixture uses accuracy 1 or 0, and a constant satisfies a determinism test
perfectly.

Also takes pOnHull collapsing to zero above Precision ~4 (no shipped hull's
centre of mass is integral, so a tight sigma underflows every cell weight), and
the LockWeapon crash Cut 8 did not actually fix -- that code only runs on an
active entity, so the _active guard was never what would prevent it. Docking
still reaches it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-22 01:53:41 +02:00
Meta Vens
f446e5c2c2 Cut 8 map: a removed entity is a dead entity
The operator's play smoke crashed in LockWeapon reaching EntityInfoGathered as a
ship vanished. Cause: Cut 5.6 added death removal from the zone but not the
matching Deactivate, so a dead entity kept living subscriptions and stale
references while every survivor dropped it -- and because Zone.Update iterates a
snapshot, it still got one more Update after the world had forgotten it. Nothing
in Entity.Update consults _active.

TryDock has always paired removal with Deactivate; the death path just did half
of it. The fix is that pairing plus an _active guard, not a TryGetValue in
LockWeapon, which would silence one call site and leave every other behaviour
running on a corpse.

Also records the symptoms this does NOT explain -- the heat spike, motionless
ships and shots landing nothing -- as open, with the unclamped dt and the
unguarded division by it as the place to probe rather than patch.

And re-anchors the seven mutations stranded by the diagnostics refactor, which
rewrote the lines four harnesses pin. Two of the seven are no-op controls, so
those harnesses currently defend nothing.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-22 00:17:25 +02:00
Meta Vens
ef223c1d9b Cut 7 amendment: the live-catalog test is the campaign's only readability check
Merging 6b and 6c bricked the catalog -- a new non-nullable float at a new
MessagePack key cannot read records written before it existed, so
AetheriaStores.Open threw and the game could not load its own data. Both
branches were green: one never opened the real catalog, the other never had the
field.

Cut 7's live-catalog test therefore has to enumerate every document type rather
than just look for a design, because a lazy read that never touches
WeaponItemData would have passed the broken merge too.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-19 19:13:04 +02:00
Meta Vens
3bf1e40795 Fire control Cut 6d map: where a hit lands is a dart throw, not a coin flip
Precision is currently a coin flip between landing exactly on the aimed item and
landing uniformly anywhere on the hull, so aiming at a stern thruster scatters
its misses across the bow. Operator direction: misses should cluster near what
you aimed at, like throwing a dart at the grid -- and aiming should therefore be
a real tradeoff, where a thin limb risks missing the ship entirely and centre
mass is the safe play.

One Gaussian kernel over the hull schematic answers both halves: its on-hull
mass prices the stray into HitProbability, so the risk is legible on the HUD
before the trigger, and its per-cell weights place the hit. One function, so the
probability and the placement cannot drift apart -- Cut 3's named risk was
exactly two functions answering where a shot goes.

Records the rejected draft that clamped a stray dart to the nearest hull cell,
which would have quietly removed the tradeoff, and the two consequences worth
catching early: pOnHull may double-charge with the existing pSpread term, and
every AI gates on this number so they will hold fire more once it lands.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-19 17:30:39 +02:00
Meta Vens
c4c241e999 Fire control Cuts 6, 6c and 7 maps
Cut 6b: the combat roll stops drawing from the shared ItemManager.Random stream
and becomes a pure function of (zone identity, shot id), so adding an NPC or
opening a shop can no longer reorder an existing fight's dice. Airburst resolves
in the simulation rather than going back into Projectile, which would be exactly
the presentation authority Cut 3 spent itself deleting.

Cut 6c: reviewing Cut 6a's landed catalog found the premium targeting system
strictly worse than the cheap one, because Resolution reads as a cost while its
name promises a benefit. Operator ruling: fix the formula, not the handle -- it
becomes reciprocal, higher stays better, no rename. Also: both designs ship from
one seller, and galaxy generation draws a random subset of factions, so ship
generation still throws in any galaxy that misses that draw.

Cut 7: the mutation harnesses for Cuts 1-3 that the map declared and nobody ever
wrote, plus the fifth mutation Soul left standing.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-19 16:58:22 +02:00
Meta Vens
a44549133c Fire control Cut 5 map: the rules that landed on one path and not its twin
Soul's campaign pass confirmed eleven findings. Seven of them are code defects
of one shape -- a rule implemented on one path and left off the path beside it
-- and belong to this cut. Catalog authoring is Cut 6, alongside airburst and
the shared combat RNG; the missing mutation harnesses are Cut 7.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-19 15:44:36 +02:00
Meta Vens
678c1ea99a Rule fire control's forks: unaided fire is a last resort
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-19 07:01:37 +02:00
Meta Vens
a62d52b64e Map fire control, superseding the playground draft
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-19 06:36:01 +02:00
Meta Vens
8a00fc9235 Place territory after fire control in the order
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-19 06:23:08 +02:00
Meta Vens
41282b05a0 Target faction territory: places with jobs, not just names
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-19 06:20:58 +02:00
Meta Vens
5c2f9bba67 Spec the first content batch, hulls first
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-19 06:06:20 +02:00
Meta Vens
90e83234ed Merge authored design roles: items stop being one-dimensional
32 of 51 designs declare roles, 183 stats point at one, 28 of 37 products
author matching role quality. Adds the validation that refuses a stat
naming a role its design lacks, and roles-migrate alongside the other
catalog tools. Product means are placeholders pending operator review.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-19 05:03:57 +02:00
Meta Vens
c4f6029e5d Cut 7: author roles into the catalog, and the operator review table
roles-migrate apply, run once: 32 of 51 designs now declare roles (183
stats pointed at the role that governs them; the other 19 designs' kinds
either carry no quality-bearing behaviour at all, or every candidate stat
is authored flat with no observable role-vs-workmanship difference). 28 of
37 products authored matching ProductRole quality; the rest sell an
unrolled design or a design no product sells (Core Power, Industrial
Thermostatic Heater, pswarm, plight -- all already flagged unsold in the
Cut 1 census).

docs/stats-power-cut7-roles.md is the legible review table the map's O7
calls for: every design's roles and which stat took each, grouped by item
kind, plus every product's authored mean/deviation and its basis (one real
brand identity -- Arctica/Alakrita on heat efficiency, from
item-provenance-target.md -- the rest generic placeholders flagged for
operator review).

Verified before/after: AetherDb dangling/station-fit/hardpoint-fit output
is byte-identical; `loadout 1` output is byte-identical (no generation
behaviour moved); census reports 0 designs with roles and no matching
product spread; 144 Aetheria.Shared.Tests pass (was 141); the six-mutation
harness in mutation_tests_stats_power_cut8.py all behave as declared.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-19 05:01:43 +02:00
Meta Vens
e6609c45f3 Rule power supply a multiplier, and record Soul's power findings
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-19 04:58:58 +02:00
Meta Vens
08c3bb8c64 Rule the shield reserve authored, with refill and restore durations
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-19 02:14:49 +02:00
Meta Vens
3461eec520 Rule the panel rim held, and record what play showed
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-18 19:04:06 +02:00
Meta Vens
eedd309321 Record Hands' fix-up pass over Soul's Cut 1 findings
S1/S2 re-authored (Tractor Beam plus 13 curve-less designs), S5/S6 validation gaps
closed, S7's four surviving mutants pinned, S8 confirmed already correct, and the
zero-ConsumableItemData answer to Cut 0's question recorded. Also names two designs
outside the operator's named 15 (Earp, The Bat) found while enforcing the new
plateau-clamp rule -- the catalog would not open without touching them.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-18 18:45:44 +02:00
Meta Vens
7204259ac3 Fix a mutation accidentally captured in the previous commit
f4d5659d landed with StatValidation's OptimalTemperature-bounds check replaced by
`if (false)`: the mutation harness was running concurrently against this same file
and a `git add`/`git commit` caught it mid-mutation. Restores the real check. Caught
because the harness's own "not yet reached" scars in doctrine are what prompted a
by-hand recheck of the just-committed diff rather than trusting the terminal output
that said 80/80 green a moment earlier.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-18 18:45:10 +02:00
Meta Vens
14a4051f75 Record Soul's Cut 1 findings and the re-authoring ruling
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-18 17:53:35 +02:00
Meta Vens
38aec5ddf9 Cut 1: rewrite the catalog to terms and authored R-heat
Migrated by a two-phase scratch console (neither kept): phase A dumps the
four retired exponent fields plus a curve fit (peak, optimum, near-peak
band) from the pre-Cut-1 code; phase B applies them as declared StatTerms
and authored OptimalTemperature/PlateauWidth under the new schema, in one
Commit, refusing to write anything if a single record fails to resolve.

348/348 stats and 51/51 EquippableItemData records migrated; zero
failures. AetherDb's census/factions/dangling/station-fit/hardpoint-fit/
loadout-1 are byte-identical before and after (captured with the matching
pre/post binary against the matching pre/post catalog, since neither
binary can open the other's catalog shape -- the pre-migration catalog no
longer opens under the new code, confirmed and explained in the report).

37 items fitted from an authored curve; 14 had none and got a full-range
plateau (reproducing the old "always full performance" behavior exactly).
281 of 348 stats evaluate identically at quality .5/full durability/optimum;
67 diverge upward (toward Max), the intended balance change Cut 0 flagged --
max delta ~73 units on a 750000-1750000 stat. Full table:
docs/stats-power-cut1-migration.md.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-18 17:18:24 +02:00
Meta Vens
41514bb571 Make plateau width the operational-lifespan lever
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-18 16:28:23 +02:00
Meta Vens
9d6cc50a9f Record Cut 0's landing and the at-optimum divergence R-heat must settle
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-18 16:21:13 +02:00
Meta Vens
c9eafe1dfa Author heat response as min, max, optimum and plateau width
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-18 15:49:22 +02:00
Meta Vens
4f01eca5d1 Rule stats first, and replace the heat curve with a range and falloffs
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-18 15:43:57 +02:00
Meta Vens
f45fefef75 Map the stats authority and the power bus
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-18 15:07:19 +02:00
Meta Vens
acb2fef930 Record Cut 3's landing, the Penrose floor and the pooling trap
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-18 13:53:00 +02:00
Meta Vens
4f84470d54 Record Cut 2's landing, the measured radii and the space mismatch
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-18 06:46:04 +02:00
Meta Vens
808692b002 Write the negent weapon concept: ammunition is the ship's heat
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-18 06:32:19 +02:00
Meta Vens
3423dfb354 Rule negentropy gear as consumable-fed, wearing through the existing thermal path
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-18 06:26:00 +02:00
Meta Vens
a463028a65 Record Cut 1's landing and the Penrose density question
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-18 06:10:39 +02:00
Meta Vens
e3c9eca2fd Record the pre-impact commit window in fire control's scope
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-18 06:05:29 +02:00
Meta Vens
545f81d58e Rule the commit window as the source of anticipation
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-18 06:05:02 +02:00
Meta Vens
af67ee3466 Contract shield and pickup presentations, anticipation included
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-18 06:01:30 +02:00
Meta Vens
f3a02712e1 Rule the scene rig as operator-driven, with a batchmode check
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-18 05:50:03 +02:00
Meta Vens
70bcdf7617 Rule Penrose sizing into Cut 1 and the envelope as derived
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-18 05:43:34 +02:00
Meta Vens
1ff21f176f Remap the shield as an interceptor spawning panels on the hull envelope
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-18 05:39:25 +02:00
Meta Vens
482229d1e3 Record where the Addressables cuts landed, misattributed moves included
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-18 05:08:53 +02:00
Meta Vens
1fdf815111 Map the shield panel onto the built-in pipeline and the absorb event
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-18 04:47:36 +02:00
Meta Vens
092b745b78 Rule the Aetheria site as the download page owner
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-17 22:21:19 +02:00
Meta Vens
2c2b92579f Map build delivery, and narrow the Idunn invariant to services
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-17 22:00:45 +02:00
Meta Vens
6dc1860770 Target a public build download served from Yggdrasil
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-17 21:42:17 +02:00
Meta Vens
1428ada3cd Repair the Addressables map after a bad sed prefixed every line
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-17 19:33:50 +02:00
Meta Vens
78fd617cdd Restore the escaped dot in the corrected grep
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-17 19:33:24 +02:00
Meta Vens
3744ee16da Fix a control character in the corrected grep
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-17 19:33:06 +02:00
Meta Vens
45406df974 Rule sub-asset references as Addressables guid[name] keys
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-17 19:32:53 +02:00
Meta Vens
dcf1881db7 Rule Addressables Q1 and sweep the settings map onto asset GUIDs
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-17 18:36:59 +02:00
Meta Vens
b6a27e733d Note stale CultLib worktrees carrying the path attribute
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-17 18:26:48 +02:00
Meta Vens
45941f597d Map engine asset references onto Addressables GUIDs
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-17 18:26:26 +02:00
Meta Vens
f13a3356e5 Rule settings-map forks: Addressables GUIDs for engine assets, defaults for the rest
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-17 18:09:42 +02:00
Meta Vens
0c62abb0ea Record the passed play smoke and the master merge
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-17 18:02:24 +02:00