Commit graph Aetheria/docs/fire-control-cut.md
Author SHA1 Message Date
Meta Vens
113164fadb Record fire control batches 5-8 landing and their follow-ups
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 22:24:39 +02:00
Meta Vens
76e78db4b2 Record that a refused round starts no cooldown
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 20:52:21 +02:00
Meta Vens
d3be00c23a Record the all-fuses first-hull ruling and the batch 5 Soul pass
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 20:10:06 +02:00
Meta Vens
96c2f6ba8d Record the literal arming distance and demoted-round rulings
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 18:28:06 +02:00
Meta Vens
d6f1e19251 Record AI per-weapon firing, HUD outcome forecast, and free refusal rulings
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 17:42:49 +02:00
Meta Vens
2d4474f859 Record out-of-arc, arming-distance and pivot-arc rulings
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 16:49:36 +02:00
Meta Vens
e7bb1e14f0 Record the airburst intent ruling
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 14:02:42 +02:00
Meta Vens
187caa7d81 Record the no-lock fuse rulings and their Soul follow-ups (2026-09-30)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 13:11:18 +02:00
Meta Vens
b66ba5246a Restore LF line endings in the fire-control map
c50029d5 committed the file with CRLF endings: the inserted paragraph had
mixed endings, and autocrlf does not normalise a mixed file. Content is
unchanged, and the net diff against c50029d5^ is the 26-line status
paragraph.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 08:00:22 +02:00
Meta Vens
c50029d511 Record fire-control 12.4 closed, and the no-target fuse ruling it needs
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 07:59:29 +02:00
Meta Vens
77be5cf433 Cut 12.4 map: slot 32 for Fuse, inert rule arrives with (b), measured drift
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-26 00:52:16 +02:00
Meta Vens
2bb245bc34 Cut 12 map: Q12-9 ruled A (the blast decides every shield)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-26 00:31:22 +02:00
Meta Vens
27318cb39f Cut 12.4 map: re-anchor at d402283c, areas on the one-path absorption, Q12-9
Imagination pass: every anchor is re-probed; a disc runs armour per cell, then pools
each item through ItemAbsorb; Entity.Absorb dies with Splash; the penetrator's
fuse point reads the same Reach owner as the direct-hit walk; the ledger now
carries actuals for 12.1-12.3; Q12-9 (the host's shield for a blast) is opened.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 18:58:58 +02:00
Meta Vens
d402283c06 Cut 12.3 status: closed
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 18:38:21 +02:00
Meta Vens
0dd16713b6 Cut 12.3 map: record the cycle rule as Self's default
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 18:01:38 +02:00
Meta Vens
14ee2a52ca Cut 12.3: one apply path for all items (operator ruling)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 16:22:44 +02:00
Meta Vens
d1cc047a51 Cut 12.3: shared multi-cell items absorb proportionally (operator ruling)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 15:28:42 +02:00
Meta Vens
2d13541b9f Cut 12.3 status: closed apart from the multi-cell item ruling
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 15:17:25 +02:00
Meta Vens
d301c0fbbd 12.3 map: lanes are disjoint by construction, not by float spacing
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 13:22:09 +02:00
Meta Vens
f2c94c29be Q12-2 amended: spread lanes are spaced by a cell's shadow, so none doubles up
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 11:20:45 +02:00
Meta Vens
c7b6e80c70 Cut 12.2 closed: status, what three Soul passes found, and what 12.3 inherits
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 05:17:10 +02:00
Meta Vens
dc81867998 Cut 12.1 status
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-24 19:57:53 +02:00
Meta Vens
e91ba36976 Pin CultLib per package, as Unity's manifest does
The headless build pinned one CultLib revision for every package. CultMath
0.2.4 needs a newer revision than CultCache's, and bumping the single pin
would have compiled six commits of newer CultCache under the headless tests
while Unity stays on caching-unity-v1.4.0. CultMathRoot/CultMathRevision now
pin CultMath at the 0.2.4 tag; CultLibRoot/CultLibRevision keep CultCache at
45c2f40. Verified: 244 pass with both roots right, and each wrong root is
refused by name.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-24 19:17:40 +02:00
Meta Vens
212121eb88 Cut 12.0 status: the code closes, the release is owed
Records what Soul found (the wrong-signed erfinv edge that would have put hits
on the opposite side of a hull), corrects three stale verification lines, and
sets a cost measurement 12.2 owes rather than assumes.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-22 21:44:27 +02:00
Meta Vens
0984438c6c Cut 12: operator confirms bow is +y on the schematic
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-22 20:20:10 +02:00
Meta Vens
6ee30e1996 Cut 12: scope Q12-8 to warheads; a dumb AP round does damage in a line
The blast radius, not penetration, picks the model: no radius means the lane
walk with cell-by-cell absorption; a radius means the shot reaches fuse depth
and detonates as an area. AP round snipes a component, explosive penetrator
guts a section.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-22 20:18:57 +02:00
Meta Vens
8342e1c528 Cut 12.4: blasts are areas, not rays
Operator: distribute the damage over the affected area. A blast covers the
cells within its radius and each takes the share of the disc inside it;
damage over open grid is lost, so an airburst wastes most of itself and an
internal detonation delivers nearly all of it. A shot has a direction and
keeps the lane model; a blast does not. Q12-6 ruled out, Q12-7 dissolved,
Q12-8 ruled.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-22 20:16:35 +02:00
Meta Vens
30f280a61f Cut 12 map revised: bearing at commit, spread as width, 12.4 detonation primitive, modifiers are labels
Records the operator rulings of 2026-09-22 (Q12-1..4, penetration retune as a
follow-up, WeaponModifiers as labels) and adds sub-cut 12.4, which replaces
Splash with one detonation owner.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-22 19:06:09 +02:00
Meta Vens
50781eafcf Correct the Splash handedness claim: an undefended mutant, not a shipped bug
The line is unchanged since 482c47bf; the operator's wrong-side bug was
legacy Unity code.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-22 18:37:12 +02:00
Meta Vens
122baad04b Cut 12 map: shots arrive edge-on; and correct the Splash handedness claim
The Splash sign flip Cut 11 pinned was an undefended mutant, not a shipped
bug: the line is unchanged since 482c47bf. The operator's wrong-side bug
was legacy Unity code.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-22 18:36:39 +02:00
Meta Vens
e8fbb6a6af Cut 11 status: Stryker progression and the triage of the 43 survivors
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-22 16:40:19 +02:00
Meta Vens
724ec5e7d3 Cut 11.1: retire the hand-written mutation harnesses Stryker replaces
Twenty-three harnesses, 5,816 lines, across the fire control, stats and power,
shield reserve and condition ratio campaigns. Every one targeted code under
Assets/Scripts/ServerShared, which Stryker's pinned scope now covers, and every
one carried the same liabilities: literal-text anchors coupled to code shape, a
restore that could leak a mutant into the tree, a tree-clean verdict that
restored before it measured, and a red result that could not tell a killed
mutant from a compile failure. The behavioural tests they measured all stay.

Kept and recorded, not yet answered: the addressables harness and the three
shield panel harnesses. They target Unity Editor probes that Unity compiles
outside Aetheria.Shared, where Stryker cannot reach.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-22 15:59:45 +02:00
Meta Vens
b305debd49 Cut 11 map: mutation testing moves to Stryker, and the survivors it found
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-22 15:59:06 +02:00
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