Commit graph Aetheria/tools
Author SHA1 Message Date
soul
fbf88e85c5 ship_cc.read owns its unreadable-path refusal, naming no path
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-22 23:35:07 +02:00
soul
66c38d9506 Build asks for the marks part only when the kit drew lines (OpenSCAD refuses a part that draws nothing); hull_source documents marks
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-22 17:17:40 +02:00
soul
98b4f4f946 Build checks that every kit line is drawn in the frame of its geometry: lp_line's marks part meets its lines part
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-22 17:11:35 +02:00
soul
71b12d594b Kit lines tests: a line drawn outside its geometry's frame fails Build; side-facing fittings emit no line (red)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-22 17:09:04 +02:00
soul
dab415ad87 Package: her art's takeover leaves no retired hull lines in the .cc (state decides the source; the slot is cleared)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-22 16:55:50 +02:00
soul
87dc0f013f Capture Ship Lines frames the ship as Package does, so kit and Grease Pencil lines land in ship.glb's frame
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-22 16:54:13 +02:00
soul
2b053b34c2 Smoke: a retired hull's lines are not hers, and Capture writes the kit's lines in Package's frame (red)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-22 16:52:17 +02:00
soul
c1d55952eb Smoke: Build records the kit lines and retiring the hull source deletes them
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-22 16:31:11 +02:00
soul
4a6ddaa413 hull_source tests: a non-UTF-8 byte in the drawing, an unreadable number
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-22 16:17:00 +02:00
soul
0cb78d2610 hull_source tests: pin style, echo parts, contour area, even-odd and edge tolerance, process refusals, check details
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-22 16:11:53 +02:00
soul
fd1188a797 hull_source: the silhouette is the zones' top view, what Rasterise reads
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-22 16:06:59 +02:00
soul
66c69cdc90 Smoke: sideways-facing kit parts draw no lines (octagon and line counts of the Nakovalnya)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-22 16:06:19 +02:00
soul
5bb4ad5f0f Smoke: the silhouette may be several contours, all before the kit's lines
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-22 16:02:53 +02:00
soul
905074defb Add-on: schematic lines are hers (one Grease Pencil) else Build's from the kit; smoke and C# fact
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-22 15:59:56 +02:00
soul
b982fb9cd0 hull_source: kit lines echo, SVG silhouette projector, SchematicLine, three line checks
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-22 15:57:44 +02:00
soul
28ed24b28e Zhestokost kit and Nakovalnya emit schematic lines from their own frames (outline, step, seam, fitting)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-22 15:54:27 +02:00
soul
bd343b2a4e Kit frames: mates are lp_at placements that track the Ship Root frame; zone OFFs unchanged
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-22 15:53:20 +02:00
soul
a18d3b812f Merge Nakovalnya package head a67711b3 into kit-schematic
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-22 15:50:10 +02:00
soul
c7e85676fe ship_cc: replace_layout refuses on hull_grid.MAX_CELLS, the grid limit's one owner
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 01:28:07 +02:00
soul
da77380a04 Hull source: build refuses a hull type that is not a HullType name, before reading the source
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 01:28:06 +02:00
soul
efeadec265 Blender ships tests: build refuses a hull type that is not a HullType name; the grid limit is hull_grid's (red)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 01:27:38 +02:00
soul
8bfb06ed64 Hull source tests: a Station 32 cells long fits the grid (height bound, not only width)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 01:15:11 +02:00
soul
28496f27df Hull source smoke: HullType gate (refused as Ship, built as Station, Station refused on the grid)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 01:07:54 +02:00
soul
2267d8beec Hull source: language proportions judge Ship hulls only; zones must fit the layout grid
build() takes the hull's HullData.HullType, with no default; the add-on reads
it from the bound ship.cc. A Station or Turret lists no proportion check; every
hull keeps symmetry, length, budget and anchor checks and gains the grid check,
judged over zone meshes through hull_grid.grid_size.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 01:03:27 +02:00
soul
0a70e0cf93 Blender ships: hull_grid.grid_size; ship_cc reads HullData.HullType, pinned to C#
grid_size is rasterise's grid arithmetic without its MAX_CELLS refusal, so a
check can judge the bound; rasterise calls the same private filter and sizing.
ship_cc gains HULL_TYPE_SLOT (Key 25), HULL_TYPE_NAMES and read_hull_type;
ShipSchemaPinTests ties both to HullData.HullType and the HullType enum.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 01:00:06 +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
25c2a18ab3 Merge remote-tracking branch 'origin/master' into eureka/aetheria-release-product-not-offered 2026-10-21 23:25:16 +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
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
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
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
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
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
1ecddc0e69 Merge remote-tracking branch 'origin/master' into eureka/aetheria-release-boss-loadout 2026-10-19 02:45:13 +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
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
soul
a2284391ba Pin the three language maker keys to the catalog; pin product_makers' exact comparison; fix a stale derivation line
ShipSchemaPinTests reads each factions/*.scad maker literal against its Faction
record key in GameData/Aetheria.cc. test_ship_cc pins that Manufacturer keys are
not case folded and that a bare string product body is refused, not read as a
maker. hardpoint-sizes-prior-art.md no longer describes the deleted derivation.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 01:09:12 +02:00
soul
399dc769df Package's maker guard keys on Build's record, not on hull.scad; smoke_hull_source fixes
_refuse_wrong_maker returned early when hull.scad was absent, so a built hull
packaged with any product once the file was deleted. It now keys on
aetheria.hull_maker; only art takeover (which retires both) and a package that
never held a built hull are exempt.

smoke_hull_source: ATTACKS lang literals gain the eighth (maker) element; new
refusal steps for hull.scad gone and for a right-maker plus a wrong-maker
product; a refused Package must leave the scene untouched (guard order).
Unrun at this commit.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 01:09:11 +02:00
soul
8a6816ed3e test_ship_cc: a product body one short of the Manufacturer slot is refused, not an IndexError
Kills mutant short-body-reads-past-end.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 00:25:31 +02:00
soul
7f35c79ecc Package refuses an agent-built hull unless its product is by the language's maker
Language files carry their Faction record key (eighth element of the lang echo);
Build records the maker it judged (aetheria.hull_maker); Package compares it with
ship_cc.product_makers before writing anything (ruling hull-faction-is-product-maker,
finding hull-names-its-own-faction). _art_takes_over is shared with _retire_hull_source.
Unit tests untested at this commit until the Yggdrasil run; bpy smokes not run.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 00:20:00 +02:00
soul
adaa8b8865 Build and Package refuse objects that share an aetheria.id, by selection
One _refuse_shared_ids: a copy of the collider, an emitter, a radiator or a mount
selects the original and the copy and names a count, not an object
(follow-up hull-copy-refusals). smoke_hull_source covers it (not run: bpy smokes).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 00:17:18 +02:00
soul
eaf7b799d4 Package moves no row: delete the schematic-from-model derivation
Remove _plan_mounts/_apply_mounts, _derived_position, CENTRELINE, hull_grid.cell_at,
mounted_position/mounted_cell and their tests (ruling remove-package-schematic-derivation).
Add Weapon makes a default-Position row; Mirror Mount mirrors each space within itself.
smoke_mounts rewritten (not run: bpy smokes are held off Starfire).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 00:16:35 +02:00
soul
5acbaa1b2f Merge eureka/aetheria-release-agent-hulls (head 3c4ea230)
Agent-built hulls, first cut: per-faction form-language files, per-hull sources, Build From Hull Source (rulings hull-art-communicates-form, zhestokost-language-lore-text). Reports cut-agent-hull-source.h1, h2; Soul s1, s2 hold on the fixes (open: question who-names-a-hulls-faction, follow-up hull-copy-refusals). The branch touches only tools/blender, which master did not change since base d28ce42d.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 22:58:46 +02:00
soul
3c4ea230bc test_hull_source: a fingerprint tells nested empty lists apart
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-18 22:36:54 +02:00