ScenarioStage.Approach(entity, target) states a piloted entity's task as a follow task on the target, passed through Zone.Admit to the flight as the member's baseline task; it replaces Patrol(entity, orbit) and the orbit index, and RunStart's post-admit circuit overwrite. LockOn stages at .6, the quality Crossing and the other RunStart scenarios use (its brief states none), not .8 picked by outcome.
The bearing check keeps well-law r4's intent (measure against the hostile's actual pose, not the staged line) but reads the poses of the tick before the paint was first seen, which is the tick it was stamped in, with a .05 deg limit for float error; the live-pose check at .5 deg spent its budget on the paint inbox's deliberate one-tick delay. LockOnHoldsUnderOnePercentOfEachStagedInput moves hostile x, y and quality by 1% each way.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ScenarioStage.Patrol(entity, near) states a piloted entity's patrol order (the orbit nearest a point) and RunStart applies it over the drawn circuit. LockOn stages its fit at .6 and the hostile on the orbit by the player. Tests: every SimulationDice stream draws independently of every other (they already did: the stream is mixed into the hash), the pilot's sample offset is on its own stream's grid, a patrol circuit does not move with items minted first, Crossing.ProjectorRange is read against the live range.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Combat.SampleDps and Zone.CreateAgent's patrol circuit drew from the item stream, so minting items moved
how a pilot fights and where it patrols. Both now draw SimulationDice.For(CombatSeed, stream, Agent.Id);
Agent.Id is the zone-scoped ordinal Zone.NextAgentId gives a pilot at admission (ruling
ai-sample-offset-off-item-stream).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Hand mutants of the previous head survived in three places: the clamp on a drawn assembly, Loadouts.Resolve ignoring a stated quality for a product or an unbranded design, and Materialize not passing it to the hull. Each now has a test through the production path.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
AetherDb assembly-from-maker apply on master's 0f5def17 catalog, after every product and faction apply: 15 makers of roled products get Assembly = part mean + .1 (capped at 1) and the mean part deviation. Ewan Hart Inc has no roled product and stays unauthored. A second apply reports No changes.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
FusedRounds.StagedQuality (.6) states the shooter's quality so the Cluster Cannon's damage in TheDirectWeaponKillsTheFragileHullWhileASmokeRoundIsStillInTheAir does not ride the item stream. The Faction wire now has 20 slots (Assembly at 19); the Doctrine-at-17 rule is unchanged. LockOn is not staged here: see the question raised on the spec.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The previous commit (30597b0e) wrote real line breaks inside two interpolated strings, so tools/AetherDb did not compile at it. Aetheria.Shared and the test project do not reference the tool.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ScenarioStage.Fit(hull, quality, slots) mints every lot of the fit at the stated quality through Loadouts.Materialize/Resolve, so Crossing's fighter and EvasionTermTests' hand-fitted Longinus and Djinni do not ride the item stream. No seed changes.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Replaces h1's AssemblyMean/AssemblyDeviation floats with one Faction.Assembly (key 19, null = not authored) and adds FactionProductData.Assembly (key 6, null = its maker's). CreateLot(product) draws from product.Assembly, else the maker's, else AssemblyDistribution defaults; CreateLot(product, quality) mints the lot and every fill at a stated quality and draws nothing. assembly-from-maker now seeds part mean + .1 and writes only a null Assembly.
The shipped-catalog test is red until the catalog commit.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The type lost its Rarity field with the roll; Unity would otherwise keep serializing orphan values.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Applies the net diff of eureka/aetheria-release-assembly-from-maker (5187a59d) without its catalog blob and RunStartTests residue, git apply -3, overlaps resolved on master's side. 066fb581's message ('git log --oneline -1') was a heredoc slip; the old branch stays as it is. Drops the Rarity = fixture member from the tests master added since ae300c6a. Faction keys 19-20 here are h1's; the next commit reshapes them to one Assembly at 19.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Regenerated through AetherDb on the merged tree, never a branch's blob (follow-ups catalog-blob-merge-order, catalog-merge-replay-order). Second pass of all four is a byte no-op. Blob sha256 a4ff0effc5b80bbd4edea4c9f3855555d622e6939edfb720d08c4603b61ebee9.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Code only. The branch's GameData/Aetheria.cc is not taken; the catalog is regenerated by replay.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Code only: Aya, Megiddo and Forge as ordinary factions, the Pirates allegiance top-up, ten minor-power products. Also carries the ItemData.ResolveStatField fix: the static stat-field cache is a ConcurrentDictionary (Soul judged ItemData the right owner), because parallel catalog opens raced on it. The branch's GameData/Aetheria.cc is not taken; the catalog is regenerated by replay.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Two test classes opening the catalog at once threw 'concurrent update' from
ValidateStatModifiers; the cache is static.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Run side by side they raced on shared catalog state (concurrent-collection error in the mutation job's baseline at c8deb15b). Builds: yes.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The first full Yggdrasil run at 446c1325 failed these two tests (a design with null Roles; the store refusing Radiator's behaviors once its roles were cleared). Builds: yes.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Output of 'product-lines gear apply' on master's catalog, run on Yggdrasil; second apply reports nothing to do. Builds: yes.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Three factions, 33 allegiance gains, the Pirates topped up to 1.0, ten products;
a second apply of all three writes nothing.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MinorPowerFactionsCommand authors Aya Collective, Megiddo and Orbital Forge as
ordinary factions plus the gains on other factions' Allegiance. pirates-faction on
an existing record now tops up allegiance under its key. Unbuilt here; verified at
the head on Yggdrasil.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Origin branch lagged at c631e09f; merged the closed head d6380ca8 from the shared object store (branch hands/ag4-floater-fix, unpushed).
Spec aetheria-gravity:cut_spec:cut-floater-fixtures-wells.r1; report h1; Soul s1 holds.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
A renderer loading a zone with a sun and a planet needs the planet prefab, the map and a GPU; the check pins the presenters' Place, so the prefabs are bound as LoadFloatingItem and LoadMine bind them.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>