Commit graph

3,905 commits

Author SHA1 Message Date
soul
d76563dd5a NakovalnyaPackageTests: every mount takes its gear through Takes; rows inside the shape and disjoint; no footprint-count pin (red)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 01:25:22 +02:00
soul
f7314b2661 ShipProductTests: stats --top-speed refuses a hull with two VelocityLimits and leaves it untouched
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 00:41:12 +02:00
soul
07bd57d9e1 ConsumablesFirstSetTests: the vent's smallest cloud holds every sold ship hull
Ruling vapour-cloud-sold-hulls; the radius is unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 00:41:12 +02:00
soul
bc53361ff9 Census tests: sold hulls are LoadoutGenerator.SoldHulls; a hull's asset is its Prefab or its mod-ship Visual record
Ruling census-tests-read-the-owners.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 00:41:10 +02:00
soul
9ac8f23307 RunStartTests: the own-maker and factionless reach claims hold for every product LoadoutGenerator.IsOffered offers
Ruling census-tests-read-the-owners.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 00:41:09 +02:00
soul
85e539af2b NakovalnyaPackageTests: import System.Collections.Generic
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 00:29:47 +02:00
soul
95f89a38a6 NakovalnyaPackageTests: the package composes, its Zhestokost product is never offered or drawn, and its layout is the brief's
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 00:28:59 +02:00
soul
7cb6fb0c9d Mods: aetheria.nakovalnya, the Zhestokost boss hull package (hull.scad, ship.cc, ship.glb)
Built from hull-bench Nakovalnya B by the Starfire job: New Ship --like Djinni, ship-authoring stats (mass 60000, durability 8000, armor 40, drag 0.35, top speed 25), price 60000000, a not-offered Zhestokost product, Build, Rasterise (19x30), 27 layout rows, Package. The validator accepted it and compose excludes nothing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 00:28:31 +02:00
soul
0bccb395a4 ShipProductTests: compare the stats hull by its MessagePack bytes (Newtonsoft loops on Shape)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 00:22:44 +02:00
soul
2fd8cbe8e9 AetherDb: ship-authoring stats sets a package hull's mass, durability, armor, drag and top speed, judged before the file opens
Ruling ship-authoring-stats-command. --top-speed writes a fixed top speed (Min = Max) on the hull's one VelocityLimit and refuses a hull with none.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 00:17:59 +02:00
soul
3efc8cddd7 Merge remote-tracking branch 'origin/master' into eureka/aetheria-arena-determinism-ledger 2026-10-22 00:01:30 +02:00
soul
ad05486388 Zhestokost kit: zh_z keys a donor's zones 'zhestokost:<zone>' when HULL_DONOR is zhestokost
zh_key in ewanhart.scad's form, not AU's either-name match: a Pirate hull's own zone named like a Zhestokost
zone no longer receives Zhestokost geometry. Closes the gap in follow-up zhestokost-kit-donor-routing.

Spec: aetheria-release:cut_spec:cut-zh-kit-landing.r1

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 23:41:15 +02:00
soul
2fe4129777 Zhestokost kit: land the hull-bench kit; zh-ammo-tender fixture rebuilt from Oboz A with one defensive mount
factions/zhestokost.scad is the bench draft byte for byte (battered masses, typed mates, five zones with cream
marking), its lang comment naming the maker element. The fixture is bench Oboz A plus Gun.D on T[2]'s deck
centreline aft of its hatches; the smoke's palette, shadow colour and turned-mount pair follow.

Spec: aetheria-release:cut_spec:cut-zh-kit-landing.r1

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 23:40:26 +02:00
soul
462adf2693 determinism-ledger: pin each scatter draw's ordinal and bounds, and the zero item-seed refusal
Three origin drifters, each placed at For(CombatSeed, ScatterStream, k) within half the radius;
a galaxy seed whose ContinueStep item seed wraps to zero is refused.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 23:38:03 +02:00
soul
a46c0536cc release map: ProductWeight's line share counts only offered bins
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 23:25:26 +02:00
soul
25c2a18ab3 Merge remote-tracking branch 'origin/master' into eureka/aetheria-release-product-not-offered 2026-10-21 23:25:16 +02:00
soul
f7cdb766cd LoadoutGenerator: IsOffered reads a bin's line, and BinShares counts only offered bins, so an off-market bin leaves its line the whole weight
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 22:01:41 +02:00
soul
f2cd036890 ProductChoiceTests: rig bins honour the not-offered list; an off-market bin leaves its line the whole weight, and an off-market line's bin is never drawn or stocked
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 22:00:55 +02:00
soul
749bdb09f5 ShipProductTests: the product grammar refuses a misnamed flag or a dangling description, and the on-market line is the off-market one without its clause
Kills the four Stryker survivors of the --not-offered parse.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 20:58:09 +02:00
soul
51a3fd0bc9 Merge remote-tracking branch 'origin/master' into eureka/aetheria-release-delete-muzzle-facing 2026-10-21 20:38:06 +02:00
soul
aea0ce823d release map: AH-P1 checks line no longer lists the deleted nose-ward rule
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 20:37:59 +02:00
soul
0c6f359cb5 ProductLinesCatalogTests: FactionProductData's wire pin covers slot 8, and a record written before it is on the market
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 20:34:50 +02:00
soul
bd5d27c52b test_hull_source: a mount is not paired by another gun's muzzle
Kills the surviving and->or mutant in the kept pairing rule's unmuzzled list.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 20:31:47 +02:00
soul
3d005ab559 LoadoutGenerator: IsAvailable's off-market comment names no boss term
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 20:30:04 +02:00
soul
9cedb4efe6 AetherDb ship-authoring product --not-offered writes the package product off the market
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 20:28:41 +02:00
soul
9c50b7499b FactionProductData.NotOffered: an off-market product is never drawn, stocked, chosen or a gear home
One reader, LoadoutGenerator.IsOffered, read by IsAvailable (ahead of the no-faction
shortcut), the AvailableProducts candidates (so the any-maker fallback cannot reach one)
and SoldHulls. A Loadout that pins the product still builds it. Rulings
off-market-is-unoffered-product and boss-hulls-exclusive.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 20:28:40 +02:00
soul
51e82624d5 test_hull_source: pin that a muzzle facing any way passes the hull source
Muzzles aft of and beside their mounts pass every check, so a reintroduced
facing judgement fails a test.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 20:26:17 +02:00
soul
6f12283dc0 gravity map: laned-belts mapped and admitted; lane host and half-width cells filled
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 20:26:15 +02:00
soul
ee78b85fd0 hull_source: delete the nose-ward muzzle rule; gun facing is HullData's
The Blender scene cannot know which way a hardpoint points: HullData's
hardpoint rotation owns that (ruling aetheria-release:ruling:gun-facing-is-hulldata).
Deletes the forward list and its term in the muzzle check, the two facing
tests, and the smoke's nose-ward require. Pairing stays whole.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 20:26:02 +02:00
soul
0524d3729d determinism-ledger: pin the two-AI digest captured on Yggdrasil (linux-x64)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 19:09:20 +02:00
soul
ced96568bc determinism-ledger: the ItemSeed test's expected values wrap as the formula does
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 19:06:49 +02:00
soul
cc5d498b7e determinism-ledger: tests for the seeds, the scatter, Scenario.Id and the two-AI fight
DeterminismLedgerTests (a RunStartTests partial): ItemManager refuses seed 0;
ItemSeed is the run seed and step; the unpack scatter ignores the item stream
and differs per zone; the SimulationDice streams are distinct; scenario Ids are
unique kebab; a two-AI fight is one history, and its digest is pinned for
linux-x64 (pin lands in the next commit).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 19:04:51 +02:00
soul
9379712c78 determinism-ledger: Scenario.Id, a stable kebab identity for matches and replays
Every scenario, and the test Scripted scenario, names an Id; Name is
display only.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 19:01:43 +02:00
soul
cc0c164574 determinism-ledger: every ItemManager states its seed; scatter on the zone's dice
- ItemManager(uint seed, ...) refuses seed 0 and seeds Random from it.
- RunStart.ItemSeed(galaxy, step) is public (formula unchanged), refuses a
  zero result; named steps ArenaStep, StageStep, ContinueStep and NoRunSeed.
- Continue seeds the item stream from the saved run's seed (ContinueStep);
  a scene with no galaxy uses NoRunSeed.
- Zone's unpack scatter draws SimulationDice.For(CombatSeed, ScatterStream,
  1-based pack ordinal), never the item stream.
- Loadout's scratch manager and AetherDb's catalog command take fixed seeds;
  every test and Editor construction gains 1u (mechanical rewrite).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 19:01:41 +02:00
soul
c13bb2368e determinism-ledger: delete the clock-seeded item stream and the item-stream scatter
ItemManager no longer seeds itself from DateTime.Now, and Zone's unpack no
longer scatters ships with _itemManager.Random. Deletes before adds: this
commit does not build (the scatter and every ItemManager seed return in the
next commit).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 18:59:52 +02:00
soul
3df3a9549a aetheria-arena target: deterministic headless matches between swappable brains
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 18:48:50 +02:00
soul
d52b50f911 Research: strategic AI arena and living world prior art (persistent faction worlds, bot tournaments, believability, restricted play, fun proxies, off-screen combat models), for rulings arenas-explore-the-metagame and colosseum-feeds-matchup-model
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 18:06:49 +02:00
soul
2f4b617e50 Merge remote-tracking branch 'origin/master' into eureka/aetheria-release-package-agent-hull-guards 2026-10-19 14:25:09 +02:00
soul
a9207abba9 smoke_hull_source: pin H10, H6 all-edited, maker-less record, collider-alone and the unbuilt exit text
Soul s4 survivors: the zone test keyed on hull.scad, an edited-zones exclusion, the maker-None branch, a
collider counted as art, and the unbuilt refusal losing its exit text or becoming the agent state.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 13:45:09 +02:00
soul
2882907f66 smoke_hull_source: pin agent hulls with no zones and no art (1.9a), her art over an unbuilt hull.scad (3.1) and a plain hull (3.2)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 13:11:10 +02:00
soul
82dab50ab5 Aetheria ships: _hull_state is the one owner of a hull's state; Package's guard and retirement read it
Deletes _art_takes_over and _refuse_wrong_maker's hull.scad branch. Her art over a hull.scad Build never ran now ships and retires the source (operator ruling art-over-unbuilt-hull-source-takes-over).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 13:11:09 +02:00
soul
96cb6d20f1 Research: prior art for agent-authored stand-in hulls (render-critique loops, part libraries, self-judging limits)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 13:01:22 +02:00
soul
1ecddc0e69 Merge remote-tracking branch 'origin/master' into eureka/aetheria-release-boss-loadout 2026-10-19 02:45:13 +02:00
soul
3ac185a84e aetheria-release map: hull collection states (HS) and the agent-built row
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 02:07:26 +02:00
soul
f121b46463 Package's art exemption keys on Build's maker record, not hull.scad; case-variant Manufacturer and attack maker keys pinned in smoke_hull_source
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 01:44:15 +02:00
soul
f3719d9943 Boss refusal tests: compare the serialized ledger, not the pack (pack bytes differ between identical runs)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 01:30:10 +02:00
soul
820ec73f76 Boss refusal tests: a mismatch prints both zones and the log
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 01:29:03 +02:00
soul
66510b003f Boss refusal tests: gear projection reads ships only (turrets are not ships)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 01:25:40 +02:00
soul
8ae052bb47 Materialize refuses an unbuildable Loadout before minting or drawing; delete the boss item-stream restore
Materialize now settles what the catalog alone decides, tries the cells on a
throwaway ItemManager (own ledger and stream, designs built unbranded), and only
then asks the chooser and mints lots. ZoneGenerator's copy-and-restore of
itemManager.Random is deleted, and the boss faction's LoadoutGenerator is created
on the first choice instead of as an argument. Resolve keeps its signature and is
Settle then Build.

Tests: an unbuildable boss zone equals the no-boss zone (serialized pack, ledger,
roster and gear, next item draw) for one failure, several failures and design-only
slots, across every faction as boss faction.

Not yet built or run when committed.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 01:22:38 +02:00
soul
70c366b541 smoke_hull_source: update the view layer before comparing world positions around a refused Package
matrix_world is stale after a location edit until the depsgraph runs, so the
scene snapshot taken after moving Ship Root compared stale to fresh.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 01:15:26 +02:00