From afae0c6b9763adc8be0843a860be75fba479f083 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Sat, 17 Oct 2026 06:25:48 +0200 Subject: [PATCH] ew map: cut 3 probes at ae300c6a (B1-B3, S1-S6); model page for allegiance belief at track entry Co-Authored-By: Claude Opus 5.5 --- docs/aetheria-ew-map.md | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/docs/aetheria-ew-map.md b/docs/aetheria-ew-map.md index da7efa268..2d565f2e8 100644 --- a/docs/aetheria-ew-map.md +++ b/docs/aetheria-ew-map.md @@ -76,9 +76,35 @@ a scratch AetherDb command and a scratch test run on Yggdrasil at `0898725f`; K9 | K10 | How long does a suppressor last under fire, with the hull ticking? | Probed as a draft design on a shipped Longinus and Djinni with reactor and radiator, one launch per second for 120 s, four .25 s zone updates between launches, from rest at 280 K. Cell thermal mass 97.9 / 105.2. Strong (Factor .08-.03, HeatPerUnit 1.4-.8, rated 310-330) at mid quality, 1000 flash: Longinus 4 suppressed launches (stored 55) then bright, Djinni 5; 300 flash: 14 / 14. After that the cell cools through the rated line and flickers: 10 of 120 launches suppressed (Longinus), 6 (Djinni) at 1000. Mild (Factor .4-.2, HeatPerUnit .8-.5, rated 310-330) at mid, 1000 flash (stored 300): first 10 suppressed on both hulls, 22 / 13 of 120 in all; 300 flash (stored 90): first 36 (Longinus) and 33 (Djinni), 68 / 41 of 120. Quality moves it: mild at quality 1 and 300 flash lasts 60 / 48 launches, strong at quality 0 and 1000 flash only 3. So the mild design is sustained for light weapons (about half a minute at one launch a second) and a dozen autocannon-class launches, not for ever: a hot cell holds the rated line and lets a flash through about every fifth to tenth launch. | | K11 | Does an opening volley stop for good without cooling? | Direct `SetSignature` calls with no zone update between them (r1's test shape): the cell never cools, so once past the rated temperature every later call is unsuppressed. Strong mid, 1000 flash: removed 945 x 1.1 = 1039 heat per call = 10.6 K (Longinus) / 9.9 K (Djinni); the fifth call on a Longinus (321.7 K > 320) and the sixth on a Djinni are the first bright ones. Margin on the Djinni is under 1 K (319.4 after four calls against a rated 320), so a test must derive its expected count from `ThermalMass` and the authored figures rather than assert a literal. | -## Cut sequence (not yet mapped; cuts 1, 1b and 2 are mapped as specs) +## Cut 3 probes at ae300c6a + +`ew-belief-allegiance` is mapped as `cut-ew-belief-allegiance.r1` (agent imagination-ag4-ew-belief), blocked on question +`ew-telemetry-gate` (recommended: with-the-track). B1-B3 ran as a scratch test class over the `IffAndCombatTests` world on +Yggdrasil at `ae300c6a` (2026-10-17 04:19 UTC, 17 tests green, the 16 existing IffAndCombat tests included); S1-S6 are +source reads at the same commit. Nothing was pushed to origin. + +| # | Question | Result | +|---|---|---| +| B1 | Does the derived branch know allegiance with nothing sensed? | Yes. Zone owned by O, a patrol of O and a stranger of X. At Open: hostile false. Stranger set to Critical: `patrol.IsHostileTo(stranger)` true and `stranger.IsHostileTo(patrol)` true with `EntityInfoGathered` 0, no reveal, untracked. | +| B2 | Does `EntityHostility` follow `IsHostileTo`? | No. In B1's Critical state `EntityHostility` stays false on both sides; tracking the stranger files it in `VisibleFriendlies`, not `VisibleEnemies`; four `zone.Update(.25)` leave it there. Its writers are the zone-entry seeds (Entity.cs:301, :307) and the override subscriptions (:334-341) only; the comment at :62 promises a per-tick refresh that does not exist. So today a trespasser that moves into a Critical area is never an enemy of the patrol, and a Trespass flight's picture (VisibleEnemies) never holds it. | +| B3 | Does a grudge need an act? | No. `a.SetIff(npc, true)` with npc tracking a: npc holds a hostile override on a with zero paints and zero reveals of a (`WatchForGrudge` reads `other.EntityHostility`, Entity.cs:915-944). `PerceivedStanceOf` (:903) reads the same; it has no product reader, only IffAndCombatTests:233-237. | +| S1 | Who reads allegiance? | Through `IsHostileTo`: LockWeapon.cs:98, Weapon.cs:142 (fire gate), ActionGameManager.cs:427, 624, 1484, RememberedHostiles (Entity.cs:1097; ActionGameManager 1280, 1517). Through `VisibleEnemies`: Flight.cs:63 (picture), :139 (seen), TurretController.cs:97, TargetNearestEnemy (Entity.cs:579), ActionGameManager 1106-1136, 1279. Through overrides: Flight.cs:76 (Grudged), :157 (held tracks), RunStart.cs:54-55. Truth by datalink: Sensor.cs:211. Subject truth outside IsHostileTo: Flight.cs:88 (`entity.PresencePermitted`, Trespass). Minion and Combat no longer read allegiance (faction-play-1 moved targeting to Flight). | +| S2 | Is a belief branch equal to today's rule for honest tracked pairs? | Yes, by case: today the recursive call `other.IsHostileTo(this, true)` is true only when `other.Faction` is the zone owner and `this` is not permitted. So owner to subject is `!subject.PresencePermitted`, non-owner or no faction to an owner ship is `!own PresencePermitted`, everything else false, and two owner ships are never hostile (both Beloved). The spec's branch (ally false; unknown false; telemetry faction is owner and own presence forbidden; or own faction is owner and the subject believed trespassing) gives the same four answers once telemetry is received. | +| S3 | What act can provoke? | A lock: `LockWeapon.Execute` calls `target.ReceivePaint(Entity, Item, Track, Lock)` (LockWeapon.cs:111), published with its emitter in `PublishInbox` (Entity.cs:973-986). A shot: `PendingShot` carries `Source` and `Target` (FireControl.cs:1995-1999) to `Apply` (:1124). A blast (`Detonate`, :1577) carries no source. LockWeapon locks only what its ship already holds hostile (:98), so a lock is always a hostile act. | +| S4 | Does Sense allocate? | It must not: ContactRevealTests pins zero bytes over 600 Sense calls (~:1720). `RevealsOf` and `ContactOf` enumerate through `IEnumerable`; the telemetry prune walks the book's `Dictionary` values directly. | +| S5 | Does the filing subscription duplicate? | Yes: every `EntityHostility` Replace adds the subject to `VisibleEnemies` or `VisibleFriendlies` again (Entity.cs:374-381; FlightTests:732 notes it). A per-tick refresh must write only on change. | +| S6 | Which tests lean on the deleted machinery? | Grudge by stance: IffAndCombatTests:160-222 (four tests), PerceivedStance :226-239. Derived hostility with nothing sensed: ContactRevealTests:1744-1746 (docked-stance fixture). Everything else sets overrides directly (FlightTests, ScenarioTests, ConsumableAiTests, the FireControl suites). | + +Model page corrections for cut 3 (target rows Belief and Contact): the Belief row's allegiance part is stored from this cut, +as `_telemetry` on the observer, because it now has a writer (the observer's own track entry) and must outlive the track for +remembered contacts; its profile and `SeenThrough` parts still arrive with the judge in cut 4. It is created at track entry +(under with-the-track), not at identification, ends with the contact, and the subject's claim it reads is the truth until +cut 4 adds `ClaimedFaction`. Contact gains no allegiance field: no reader needs one. Grudges stay the observer's IFF +override, now written only from acts on its side (`Provoke`). + +## Cut sequence (not yet mapped; cuts 1, 1b, 2 and 3 are mapped as specs) Cut 1 is split in two by size: `ew-hide-launch` is the behaviour, the one hook in `SetSignature` and their tests; the catalog authoring follows it as 1b (two designs, six products), mapped above. -Cut 2 `ew-claims-in-the-book` is mapped (above). It differs from the target line in one place: `SeenThrough` and the stored belief move to cut 4 with the judge (C5). Cut 4 also takes the drawn hull model (C7) and needs the target panel settled (C3). The remaining cuts are the target doc's cut sequence (3, 4, 4a `ew-jammer`, 5-10). +Cut 2 `ew-claims-in-the-book` is mapped (above). It differs from the target line in one place: `SeenThrough` and the stored belief move to cut 4 with the judge (C5). Cut 4 also takes the drawn hull model (C7) and needs the target panel settled (C3). Cut 3 `ew-belief-allegiance` is mapped (Cut 3 probes, above). The remaining cuts are the target doc's cut sequence (4, 4a `ew-jammer`, 5-10). Cut 4 also adds `ClaimedFaction` (read by `ReceiveTelemetry`), the silent-transponder case and the policy for an unknown contact in a secure area.