

STATIC CONSTRAINT PROFILE -- problem phobia-topo
generated by tech/constraint-profile.lisp -- NEVER HAND-EDITED


MC  MECHANIC COVERAGE  [grade 1]
--------------------------------------------------------------

  public technologies spliced (8): 8 covered, 0 UNCOVERED
    beam-relay        COVERED    contract (also S6 RC; RL scenario)
    floor-gears       COVERED    contract (also S1 CC; EQ scenario)
    gate              COVERED    extractors S1 S3 S4
    jammer            COVERED    contract (also S1)
    step              COVERED    extractors S2 T6; boarding a fixed floor blower in the floor-blower contract, a gears-mounted fan in the floor-gears contract
    visibility        COVERED    infrastructure -- line of sight; read by S6
    walkability       COVERED    infrastructure -- derives walk-kind facts; read by S3
    wall-blower       COVERED    contract (also S1 S3 RC CC)

  UNCOVERED (0):
    READING: UNCOVERED means no static contract is declared for that technology.  The coverage gate (Problem-Solving Guide, Phase 0 step 2) requires a hand contract in the Briefing, or a component, before going on.  COVERED by extractors or infrastructure means the named components carry its static consequences; it is not a contract.

  contract beam-relay
    controls  the derived COLOR of every relay (connector or repeater), recomputed in each propagation after the crossing set, and each receiver's ACTIVE fact (RECORDING-ACTIVE in the recording view)
    moves     connectors only: PICKUP-CONNECTOR lifts one and deletes every PAIRED fact it owns and every one naming it; PICKUP-CONNECTOR-RETAINING-PAIRINGS keeps them, but a held connector has no location and neither receives nor sends a beam; PUT-CONNECTOR places without pairing; CONNECT-CONNECTOR places the held connector at a location the agent reaches and stores 1 to *max-connector-pairings* outgoing PAIRED facts, to termini structurally visible from any location the agent can walk to, never to a connector at the placement location
    requires  lighting runs in propagation layers from every transmitter (layer 0). A relay settles in the first layer in which any clear link from a lit source reaches it: one hue lights it; two or more hues in that layer leave it dark, and a dark relay feeds nothing; a hue arriving in a later layer is ignored. A connector is also dark when a connector at its location is already lit. Clear link: a stored PAIRED fact in either direction (COUPLED for fixed apparatus), a live sightline in the reading view, and no cut by an active crossing (physical view only). Pairings persist while their beam is blocked or cut; only pickup clears them. Capacity counts a connector's outgoing pairings; incoming links are unlimited. A receiver is reached only by a relay of its hue whose own outgoing pairing (or coupling) names it, visible and uncut; beam-direct may reach it independently. CONNECT-CONNECTOR needs no lit connector of the same recorder layer at the placement location. Layers are propagation order, not travel time or action order
    capacity: 2 outgoing pairings per connector (*max-connector-pairings*); incoming links unlimited
    transmitters by hue: red transmitter1
    receivers by hue: red receiver1, receiver2
    connectors (2): connector1, connector2
    repeaters (0)
    start-state links (0 stored pairings): none
    direct feeds by RC station (2 with a visible transmitter; 0 COMPETING HUES), each transmitter with the gates it requires open:
      location2@1: red transmitter1 ALWAYS
      location12@1: red transmitter1 ALWAYS
    Pairing one connector to two hues settles it in layer 1 with a CONFLICT (dark, feeds nothing). A direct transmitter link reaches a connector in layer 1, ahead of any relayed hue, so a relayed hue lights it only while that direct link is unpaired, blocked or cut. Separately possible per-hue routes are not claimed to compose; a joint arrangement needs REPORT-RELAY-LIGHTING-SCENARIO.

  contract floor-gears
    controls  the gears' CONTROLS aggregate (uncontrolled default on) unless jammed; TURNING is that state. A stream exists only while a fan is mounted and the gears turn: turning gears with no fan lift nothing, and a fan on stopped gears is inert
    moves     a non-fan occupant resting ON the mounted fan, with its stack, to AIMED-AT; when no floor drive aimed there has a fan and turns, an occupant there not ON a support drops back to the gears' location. A loose fan resting on a mounted fan is toppled to the ground at the source
    requires  removal by PICKUP-FAN: empty hands, REACHABLE, vertical reach to the fan, and a clear top (an occupied fan cannot be lifted). MOUNT-FAN: holding the fan, manipulation allowed, the gears' location REACHABLE, no fan already mounted there, vertical reach to the working height; turning gears accept it. A floor-mounted fan is a flush steppable support at the gears' location; a fan on the ground or a box is not steppable. Boarding is a STEP from the ground there onto the clear fan, support use allowed. One fan occupies one mount at a time; any gears type accepts it. Recorder problems reject floor gears
    fans (1); every gears instance accepts any fan (MOUNT-FAN), one mount per fan at a time
      fan1  start MOUNTED on wgears1, WALL-HUNG (no location); compatible mounts fgears1, wgears1
      1 fan for 2 mounts: at most 1 mount can have a stream at once; a fan moved to one mount leaves its old mount without a stream
    mounts (2)
    fgears1  floor gears at location10 -> location11 (level 10); working height 0
      control      uncontrolled default on, unless jammed
      start        VACANT, TURNING, NO FAN: no stream
      mount from   location10 (floor 0: within vertical reach) (engine REACHABLE, start state; floor level only)
      removal (PICKUP-FAN, empty hands, reach to the fan): the stream stops; the gears keep turning; a jam of fgears1 is redundant while no fan is mounted
      arcs gated by its stream (0; clauses in S3), passable while it has no fan or does not turn in the mover's view: none
      installation: the fan becomes a flush steppable support at location10; a fan lying on the ground or a box is not steppable
      boarding: STEP from the ground at location10 onto the fan, top clear, support use allowed; while the gears turn, a non-fan occupant ON it is launched with its stack to location11 (level 10)
      landing: kept only while some floor drive aimed at location11 has a fan and turns; otherwise an occupant not ON a support drops back to location10 -- stand on a support there or leave by an exit first
      exits from location11 (0), by kind; each kind's own predicate is not evaluated
    wgears1  wall gears at location2 -> location1 (level 0); working height 1
      control      uncontrolled default on, unless jammed
      start        fan1 mounted, turning: EFFECTIVE STREAM
      mount from   location2 (floor 0: within vertical reach) (engine REACHABLE, start state; floor level only)
      removal (PICKUP-FAN, empty hands, reach to the fan): the stream stops; the gears keep turning; a jam of wgears1 is redundant while no fan is mounted
      arcs gated by its stream (29; clauses in S3), passable while it has no fan or does not turn in the mover's view: walk location10<->location12, walk location10<->location2, walk location10<->location3, walk location12<->location13, walk location12<->location2, walk location12<->location4, walk location12<->location5, walk location12<->location6, walk location12<->location7, walk location12<->location8, walk location12<->location9, walk location13<->location2, walk location13<->location3, walk location1->location12, walk location1->location2, walk location1->location3, walk location2<->location3, walk location2<->location4, walk location2<->location5, walk location2<->location6, walk location2<->location7, walk location2<->location8, walk location2<->location9, walk location3<->location4, walk location3<->location5, walk location3<->location6, walk location3<->location7, walk location3<->location8, walk location3<->location9
      stream physics: the wall-blower contract
    These rows state compatibility and prerequisites only: not that a fan can be carried between mounts, a mount reached, or a lift used.  A settled state's equipment needs REPORT-EQUIPMENT-SCENARIO.

  contract jammer
    controls  a placed jam overrides a gate open, a blower drive stopped or a gun safe; picking up the jammer removes its jam and support
    moves     carried cargo; PUT-JAMMER places inertly, JAM-TARGET places and jams; placement on a pressure plate can also supply weight
    requires  holding a jammer, reachable placement, no directional JAM-DISALLOWED> exclusion, legal placement/support/view and target sightline from the placed jammer's top. Ground/plate/box sightline rows are candidates only; gate bits are hypotheses
    Survey: ground, fixed plates, staged box tops; physical view, all gates forced open without propagation. No moved/stacked supports, trays or fans surveyed.
    jammer1 -> fgears1: visible sites (location support required-open gates) ((location10 ground nil) (location11 ground nil)
                                                                              (location9 ground nil))
    jammer1 -> gate1: visible sites (location support required-open gates) ((location12 ground nil) (location3 ground (gate2)))
    jammer1 -> gate2: visible sites (location support required-open gates) ((location12 ground (gate1)) (location3 ground nil))
    jammer1 -> wblower2: visible sites (location support required-open gates) ((location1 ground nil) (location13 ground nil)
                                                                               (location2 ground nil) (location4 ground nil)
                                                                               (location5 ground nil))
    jammer1 -> wblower3: visible sites (location support required-open gates) ((location11 ground nil) (location6 ground nil)
                                                                               (location7 ground nil) (location8 ground nil))
    jammer1 -> wblower4: visible sites (location support required-open gates) ((location10 ground nil) (location11 ground nil)
                                                                               (location8 ground nil) (location9 ground nil))
    jammer1 -> wgears1: visible sites (location support required-open gates) ((location1 ground nil) (location12 ground nil)
                                                                              (location2 ground nil) (location4 ground nil)
                                                                              (location5 ground nil))
    JAM-DISALLOWED> (agent-location placement-location target):
    A sightline is not an applicable action: exclusions, reach, support use, occupancy, availability and actual view remain to be checked.

  contract wall-blower
    controls  its CONTROLS aggregate (uncontrolled default on), unless jammed; a fan must be present. Live objects read TURNING, ghosts read RECORDING-TURNING; the two views need not agree
    moves     horizontal sweep from HAS-POSITION to AIMED-AT when base < stream <= top; detach from support, relocate the occupant and its stack, with held cargo following its agent; land on a flush-floor support or ground. Pairing and jamming facts persist, effects recomputed at the destination
    requires  own-view fan activity and body contact with the stream; fans are never swept. Wall-mounted fans have no HAS-LOCATION and are not standing supports. Walk-kind clauses naming the drive require it inactive in the actor's view. Directly unswept bodies may still move with swept supports; transport cycles must converge
    wblower2  fixed complete fixture
      horizontal   location5 -> location4
      stream       elevation 1; width 3; base < stream <= top
      control      ((receiver2)) inverted, separately in each environmental view
    wblower3  fixed complete fixture
      horizontal   location7 -> location6
      stream       elevation 1; width 4; base < stream <= top
      control      ((receiver2)) normal, separately in each environmental view
    wblower4  fixed complete fixture
      horizontal   location9 -> location8
      stream       elevation 1; width 3; base < stream <= top
      control      uncontrolled default on, unless jammed
    wgears1  wall gears; removable fan required
      horizontal   location2 -> location1
      stream       elevation 1; width 3; base < stream <= top
      control      uncontrolled default on, unless jammed


S0  TYPE EXTENT CENSUS  [grade 1]
--------------------------------------------------------------

  type extents (60 types)
    agent  1  authored  SINGLETON
    angled-blower  0  optional  EMPTY
    angled-blower+angled-gears+floor-blower+floor-gears+wall-blower+wall-gears  5  synthesized  components floor-gears wall-gears angled-gears floor-blower wall-blower angled-blower
    angled-blower+fan+floor-blower+wall-blower  4  synthesized  components fan floor-blower wall-blower angled-blower
    angled-blower+floor-blower  0  synthesized  EMPTY  components floor-blower angled-blower
    angled-gears  0  optional  EMPTY
    beam-blocker  4  authored  components agent box jammer connector
    beam-node  16  authored  components transmitter receiver floor-repeater wall-repeater location
    blower  3  authored  components floor-blower wall-blower angled-blower
    box  0  optional  EMPTY
    cargo  4  authored  components box jammer connector fan tray
    connector  2  authored
    edge  0  optional  EMPTY
    edge+wall  6  synthesized  components wall edge
    elevated-object  28  authored  components location gate screen wall edge transmitter receiver gun switch wall-gears wall-blower floor-repeater wall-repeater
    fan  1  authored  SINGLETON
    fixed-beam-sink  2  authored  components floor-repeater wall-repeater receiver
    fixed-beam-source  1  authored  SINGLETON  components transmitter floor-repeater wall-repeater
    fixed-position-object  5  authored  components pressure-plate toggle-plate ladder floor-gears wall-gears angled-gears floor-blower wall-blower angled-blower recorder
    floor-blower  0  optional  EMPTY
    floor-blower+floor-gears  1  synthesized  SINGLETON  components floor-gears floor-blower
    floor-gears  1  authored  SINGLETON
    floor-repeater  0  optional  EMPTY
    gate  2  authored
    gate+screen  2  synthesized  components gate screen
    gears  2  authored  components floor-gears wall-gears angled-gears
    gun  0  optional  EMPTY
    heighted-object  12  authored  components box gate agent screen wall edge jammer connector floor-repeater wall-repeater
    hue  1  authored  SINGLETON
    jammer  1  authored  SINGLETON
    ladder  0  optional  EMPTY
    location  13  authored
    los-endpoint  16  authored  components transmitter receiver floor-repeater wall-repeater gun location
    mobile-object  5  authored  components agent box jammer connector fan tray
    mode  2  authored
    plate  0  authored  EMPTY  components pressure-plate toggle-plate
    pressure-plate  0  optional  EMPTY
    reach-target  13  authored  components location switch
    receiver  2  authored
    relay  2  authored  components connector floor-repeater wall-repeater
    repeater  0  authored  EMPTY  components floor-repeater wall-repeater
    screen  0  optional  EMPTY
    steppable-object  1  authored  SINGLETON  components pressure-plate toggle-plate fan floor-blower angled-blower
    support  1  authored  SINGLETON  components pressure-plate toggle-plate box fan tray floor-blower angled-blower
    support-occupant  5  authored  components agent box jammer connector fan tray
    switch  0  optional  EMPTY
    target  7  authored  components gate floor-gears wall-gears floor-blower wall-blower gun
    terminus  5  authored  components transmitter receiver connector floor-repeater wall-repeater
    threat  0  authored  EMPTY  components gun
    toggle-plate  0  optional  EMPTY
    transmitter  1  authored  SINGLETON
    tray  0  optional  EMPTY
    vertical-object  29  authored  components location agent box connector jammer tray fan gate screen wall edge floor-repeater wall-repeater transmitter receiver gun switch pressure-plate toggle-plate floor-blower angled-blower
    visibility-object  18  authored  components gate transmitter receiver floor-repeater wall-repeater gun location
    wall  6  authored
    wall-blower  3  authored
    wall-blower+wall-gears  4  synthesized  components wall-gears wall-blower
    wall-gears  1  authored  SINGLETON
    wall-repeater  0  optional  EMPTY
    window  0  optional  EMPTY

  empty types (19)
    angled-blower  optional
    angled-blower+floor-blower  synthesized  alias over floor-blower angled-blower
    angled-gears  optional
    box  optional
    edge  optional
    floor-blower  optional
    floor-repeater  optional
    gun  optional
    ladder  optional
    plate  authored  alias over pressure-plate toggle-plate
    pressure-plate  optional
    repeater  authored  alias over floor-repeater wall-repeater
    screen  optional
    switch  optional
    threat  authored  alias over gun
    toggle-plate  optional
    tray  optional
    wall-repeater  optional
    window  optional

  singleton types (11)
    agent == agent1  authored
    fan == fan1  authored
    fixed-beam-source == transmitter1  authored
    floor-blower+floor-gears == fgears1  synthesized
    floor-gears == fgears1  authored
    hue == red  authored
    jammer == jammer1  authored
    steppable-object == fan1  authored
    support == fan1  authored
    transmitter == transmitter1  authored
    wall-gears == wgears1  authored

  relations over an empty type (6 relations, 6 positions)
    lethal  dynamic  position 1 of (threat)  empty type (threat)
    switched-on  dynamic  position 1 of (switch)  empty type (switch)
    edge-segment>  static  position 1 of (edge rational rational rational rational rational)  empty type (edge)
    screen-segment>  static  position 1 of (screen rational rational rational rational rational)  empty type (screen)
    threatens  static  position 1 of (threat location)  empty type (threat)
    window-segment>  static  position 1 of (window rational rational rational rational rational)  empty type (window)

  constant quantifier sites (9)
    edge-segment-records  doall (?edge edge)  ->  true
    physical-supports-at  doall (?plate plate)  ->  true
    physical-supports-at  doall (?fixed (either floor-blower angled-blower))  ->  true
    physical-supports-at  doall (?box box)  ->  true
    physical-supports-at  doall (?tray tray)  ->  true
    safe  exists (?t threat)  ->  false
    screen-segment-records  doall (?screen screen)  ->  true
    terrain-edge-spans  doall (?edge edge)  ->  true
    window-segment-records  doall (?window window)  ->  true

  constant predicates (1)
    safe == true


S1  CONTROL ALGEBRA  [grade 1]
--------------------------------------------------------------

  control table (3 entries)
    gate1 == receiver1
    wblower2 == (not receiver2)
    wblower3 == receiver2

  device state axioms (2)
    open asserted by update-gate-status!
      condition  (or (exists (?j jammer) (jamming ?j ?gate)) (control-on ?gate nil))
      aggregate  (control-on ?gate nil)
      reading    state == override OR aggregate -- OVERRIDE LIVE, every claim below is conditional on it
    turning asserted by update-blower-status!
      condition  (and (control-on ?drive t) (not (exists (?j jammer) (jamming ?j ?drive))))
      aggregate  (control-on ?drive t)
      reading    state == override OR aggregate -- OVERRIDE LIVE, every claim below is conditional on it

  exclusion pairs (1)
    {wblower2, wblower3}  on ((receiver2))

  equivalence pairs (0)

  pair qualification
    CONDITIONAL.  2 of 2 state axioms keep a live override open, turning; the pairs hold only where those overrides are inactive.

  primitive controllers (2)
    receiver1  device-mediated  status relation active
    receiver2  device-mediated  status relation active

  device depth
    gate1  depth 2
    wblower2  depth 2
    wblower3  depth 2

  cycles: none

  notes
    receiver1 is device-mediated through its status relation active, which an update derives from another device's derived output.  The extra level is recorded; the identity of the supplying device is not decidable from the control algebra and is deferred to the sightline extractor.
    receiver2 is device-mediated through its status relation active, which an update derives from another device's derived output.  The extra level is recorded; the identity of the supplying device is not decidable from the control algebra and is deferred to the sightline extractor.


S2  FUNCTIONAL-RELATION CENSUS  [grade 1 -> 2]
--------------------------------------------------------------

  functional relations (26: 6 dynamic, 20 static)
    2 bijective index relations excluded, as S0 excludes them
    aimed-at  static  key (1)  value (2)  signature ((either angled-blower angled-gears floor-blower floor-gears wall-blower wall-gears) location)
    apparatus-coords>  static  key (1)  value (2 3 4)  signature ((either floor-repeater gun receiver switch transmitter wall-repeater) rational rational rational)
    beam-via  static  key (1 3)  value (2)  signature (fixed-beam-source list fixed-beam-sink)
    boundary-wall  static  key none -- keyless global fluent  value (1)  signature (list)
    color  dynamic  key (1)  value (2)  signature (relay hue)
    controls  static  key (2)  value (1 3)  signature (list (either angled-blower angled-gears floor-blower floor-gears gate gun wall-blower wall-gears) mode)
    edge-segment>  static  key (1)  value (2 3 4 5 6)  signature (edge rational rational rational rational rational)
    gate-segment>  static  key (1)  value (2 3 4 5 6)  signature (gate rational rational rational rational rational)
    has-chroma  static  key (1)  value (2)  signature ((either receiver transmitter) hue)
    has-elevation  static  key (1)  value (2)  signature (elevated-object rational)
    has-height  static  key (1)  value (2)  signature (heighted-object rational)
    has-location  dynamic  key (1)  value (2)  signature (mobile-object location)
    has-position  static  key (1)  value (2)  signature (fixed-position-object location)
    holding  dynamic  key none -- bijective, functional both ways  value (1 2)  signature (agent cargo)
    jamming  dynamic  key (1)  value (2)  signature (jammer target)
    location-coords>  static  key (1)  value (2 3 4)  signature (location rational rational rational)
    los-barrier-crossings>  static  key (1 3)  value (2)  signature (los-endpoint list visibility-object)
    los-via  static  key (1 3)  value (2)  signature (visibility-object list visibility-object)
    mounted-on  dynamic  key (1)  value (2)  signature (fan gears)
    on  dynamic  key (1)  value (2)  signature (support-occupant support)
    screen-segment>  static  key (1)  value (2 3 4 5 6)  signature (screen rational rational rational rational rational)
    stream-width  static  key (1)  value (2)  signature ((either wall-blower wall-gears) rational)
    traverse-via  static  key (1 3)  value (2)  signature (location list location)
    traverse-via>  static  key (1 3)  value (2)  signature (location list location)
    wall-segment>  static  key (1)  value (2 3 4 5 6)  signature (wall rational rational rational rational rational)
    window-segment>  static  key (1)  value (2 3 4 5 6)  signature (window rational rational rational rational rational)

  occupancy pools (8 placement relations; 0 layer pairs)
    aimed-at  static  (either angled-blower angled-gears floor-blower floor-gears wall-blower wall-gears) at 1  ->  location at 2
        key   pool (either angled-blower angled-gears floor-blower floor-gears wall-blower wall-gears) (5): 0 live, 0 ghost, 5 unpaired
              fgears1[unpaired] wblower2[unpaired] wblower3[unpaired] wblower4[unpaired] wgears1[unpaired]
        value pool location (13): 0 live, 0 ghost, 13 unpaired
              location1[unpaired] location10[unpaired] location11[unpaired] location12[unpaired] location13[unpaired] location2[unpaired] location3[unpaired] location4[unpaired] location5[unpaired] location6[unpaired] location7[unpaired] location8[unpaired] location9[unpaired]
    color  dynamic  relay at 1  ->  hue at 2
        key   pool relay (2): 0 live, 0 ghost, 2 unpaired
              connector1[unpaired] connector2[unpaired]
        value pool hue (1): 0 live, 0 ghost, 1 unpaired
              red[unpaired]
    has-chroma  static  (either receiver transmitter) at 1  ->  hue at 2
        key   pool (either receiver transmitter) (3): 0 live, 0 ghost, 3 unpaired
              receiver1[unpaired] receiver2[unpaired] transmitter1[unpaired]
        value pool hue (1): 0 live, 0 ghost, 1 unpaired
              members listed above
    has-location  dynamic  mobile-object at 1  ->  location at 2
        key   pool mobile-object (5): 0 live, 0 ghost, 5 unpaired
              agent1[unpaired] connector1[unpaired] connector2[unpaired] fan1[unpaired] jammer1[unpaired]
        value pool location (13): 0 live, 0 ghost, 13 unpaired
              members listed above
    has-position  static  fixed-position-object at 1  ->  location at 2
        key   pool fixed-position-object (5): 0 live, 0 ghost, 5 unpaired
              fgears1[unpaired] wblower2[unpaired] wblower3[unpaired] wblower4[unpaired] wgears1[unpaired]
        value pool location (13): 0 live, 0 ghost, 13 unpaired
              members listed above
    jamming  dynamic  jammer at 1  ->  target at 2
        key   pool jammer (1): 0 live, 0 ghost, 1 unpaired
              jammer1[unpaired]
        value pool target (7): 0 live, 0 ghost, 7 unpaired
              fgears1[unpaired] gate1[unpaired] gate2[unpaired] wblower2[unpaired] wblower3[unpaired] wblower4[unpaired] wgears1[unpaired]
    mounted-on  dynamic  fan at 1  ->  gears at 2
        key   pool fan (1): 0 live, 0 ghost, 1 unpaired
              fan1[unpaired]
        value pool gears (2): 0 live, 0 ghost, 2 unpaired
              fgears1[unpaired] wgears1[unpaired]
    on  dynamic  support-occupant at 1  ->  support at 2
        key   pool support-occupant (5): 0 live, 0 ghost, 5 unpaired
              agent1[unpaired] connector1[unpaired] connector2[unpaired] fan1[unpaired] jammer1[unpaired]
        value pool support (1): 0 live, 0 ghost, 1 unpaired
              fan1[unpaired]
        in both pools (1): fan1

  cardinality bounds  [grade 2: the keying is structural, so no action moves it]
    color: relay -> hue
      |occupied hue| <= 2 - |unavailable relay|
      injective: the relation is keyed by its relay argument, so two distinct occupied values need two distinct witnesses
      BODIES by layer, not yet a claim about any predicate: live + unpaired 2, ghost + unpaired 2, total 2
      consumers (1 relation): the bound each one actually reads
        active [derived]  asserted by update-receiver-status!  via beam-reaches-receiver
          site in relay-beam-reaches-receiver: NONE -- layer-blind, it reads every occupant
          witnesses it reads: 2 -- the whole pool
      NOTE: assertion side only.  A query used in an action's precondition is not listed here.
      NOTE: the switch walk descends AND, OR, NOT, IF and the queries those call.  A switch inside any other form is not found, so "no switch found" is weaker than "no switch".
      *start-state* reading, NOT the bound: 0 of 2 keys assigned, 0 distinct values occupied
    has-location: mobile-object -> location
      |occupied location| <= 5 - |unavailable mobile-object|
      injective: the relation is keyed by its mobile-object argument, so two distinct occupied values need two distinct witnesses
      BODIES by layer, not yet a claim about any predicate: live + unpaired 5, ghost + unpaired 5, total 5
      consumers (2 relations): the bound each one actually reads
        active [derived]  asserted by update-receiver-status!  via beam-reaches-receiver
          site in relay-beam-reaches-receiver: NONE -- layer-blind, it reads every occupant
          site in base: NONE -- layer-blind, it reads every occupant
          site in beam-blocker-occludes-location: OTHER -- restricted by something that is not a layer by (beam-blocker-spans-elevation ?blocker ?beam-elevation)
          site in beam-blocker-occludes-location-for-object: OTHER -- restricted by something that is not a layer by (recording-shadow-object-present ?blocker), (beam-blocker-spans-elevation ?blocker ?beam-elevation)
          witnesses it reads: 5 -- the whole pool
        on [not derived]  asserted by sweep-occupants-away!  via top
          site in base: NONE -- layer-blind, it reads every occupant
          witnesses it reads: 5 -- the whole pool
      NOTE: assertion side only.  A query used in an action's precondition is not listed here.
      NOTE: the switch walk descends AND, OR, NOT, IF and the queries those call.  A switch inside any other form is not found, so "no switch found" is weaker than "no switch".
      *start-state* reading, NOT the bound: 4 of 5 keys assigned, 4 distinct values occupied
    jamming: jammer -> target
      |occupied target| <= 1 - |unavailable jammer|
      injective: the relation is keyed by its jammer argument, so two distinct occupied values need two distinct witnesses
      BODIES by layer, not yet a claim about any predicate: live + unpaired 1, ghost + unpaired 1, total 1
      consumers (0 relations): the bound each one actually reads
        none: no update asserts anything under a test reading this relation
      NOTE: assertion side only.  A query used in an action's precondition is not listed here.
      NOTE: the switch walk descends AND, OR, NOT, IF and the queries those call.  A switch inside any other form is not found, so "no switch found" is weaker than "no switch".
      *start-state* reading, NOT the bound: 0 of 1 keys assigned, 0 distinct values occupied
    mounted-on: fan -> gears
      |occupied gears| <= 1 - |unavailable fan|
      injective: the relation is keyed by its fan argument, so two distinct occupied values need two distinct witnesses
      BODIES by layer, not yet a claim about any predicate: live + unpaired 1, ghost + unpaired 1, total 1
      consumers (2 relations): the bound each one actually reads
        on [not derived]  asserted by sweep-occupants-away!  via blower-active-for-object
          site in blower-present: NONE -- layer-blind, it reads every occupant
          witnesses it reads: 1 -- the whole pool
        on [not derived]  asserted by blow-occupants-away!  via blower-active-for-object
          site in blower-present: NONE -- layer-blind, it reads every occupant
          witnesses it reads: 1 -- the whole pool
      NOTE: assertion side only.  A query used in an action's precondition is not listed here.
      NOTE: the switch walk descends AND, OR, NOT, IF and the queries those call.  A switch inside any other form is not found, so "no switch found" is weaker than "no switch".
      *start-state* reading, NOT the bound: 1 of 1 keys assigned, 1 distinct value occupied
    on: support-occupant -> support
      |occupied support| <= 5 - |unavailable support-occupant|
      injective: the relation is keyed by its support-occupant argument, so two distinct occupied values need two distinct witnesses
      BODIES by layer, not yet a claim about any predicate: live + unpaired 5, ghost + unpaired 5, total 5
      consumers (2 relations): the bound each one actually reads
        active [derived]  asserted by update-receiver-status!  via beam-reaches-receiver
          site in base: NONE -- layer-blind, it reads every occupant
          witnesses it reads: 5 -- the whole pool
        on [not derived]  asserted by sweep-occupants-away!  via top
          site in base: NONE -- layer-blind, it reads every occupant
          witnesses it reads: 5 -- the whole pool
      NOTE: assertion side only.  A query used in an action's precondition is not listed here.
      NOTE: the switch walk descends AND, OR, NOT, IF and the queries those call.  A switch inside any other form is not found, so "no switch found" is weaker than "no switch".
      *start-state* reading, NOT the bound: 0 of 5 keys assigned, 0 distinct values occupied


T6  MECHANIZED BUDGET ARITHMETIC  [grade 1 -> 2]
--------------------------------------------------------------
  no body-cost devices found.


S5  HEIGHT AND REACH LATTICE  [grade 2]
--------------------------------------------------------------
  type heights (21 types; 0 authored overrides)
    location  height 0  axis NONE  base 0
    agent  height 3/2  axis VERTICAL  base 0
    box  height 1  axis VERTICAL  base 0
    connector  height 1  axis VERTICAL  base 0
    jammer  height 1  axis VERTICAL  base 0
    tray  height 0  axis VERTICAL  base 0
    fan  height 0  axis VERTICAL  base 0
    pressure-plate  height 0  axis VERTICAL  base 0
    toggle-plate  height 0  axis VERTICAL  base 0
    floor-blower  height 0  axis VERTICAL  base 0
    angled-blower  height 0  axis VERTICAL  base 0
    gate  height 4  axis VERTICAL  base 0
    screen  height 4  axis VERTICAL  base 0
    wall  height 4  axis VERTICAL  base 0
    edge  height 3/2  axis VERTICAL  base 0
    floor-repeater  height 1  axis VERTICAL  base 0
    wall-repeater  height 1  axis HORIZONTAL  base 1
    transmitter  height 0  axis NONE  base 1
    receiver  height 0  axis NONE  base 1
    switch  height 0  axis NONE  base 1
    gun  height 0  axis NONE  base 1

  location levels
    location1  0
    location2  0
    location3  0
    location4  0
    location5  0
    location6  0
    location7  0
    location8  0
    location9  0
    location10  0
    location11  10
    location12  0
    location13  0

  achievable carried-object tops
    jammer1  1
    connector1  1
    connector2  1
    fan1  0

  placement legality matrix (agent base -> support top)
    agent1 0 -> fan1 0  YES
    agent1 0 -> ground 0  YES

  unreachable from ground (placement reach limit 1)
    none


S6  BEAM SIGHTLINE TABLE  [grade 2]
--------------------------------------------------------------
  direct gate subsets: 4; no propagation applied

  visibility rows
    location1 @ 1 -> transmitter1  NEVER
    location1 @ 1 -> receiver1  ALWAYS
    location1 @ 1 -> receiver2  NEVER
    location2 @ 1 -> transmitter1  ALWAYS
    location2 @ 1 -> receiver1  NEVER
    location2 @ 1 -> receiver2  NEVER
    location3 @ 1 -> transmitter1  NEVER
    location3 @ 1 -> receiver1  CONDITIONAL  requires open gate1, gate2
    location3 @ 1 -> receiver2  NEVER
    location4 @ 1 -> transmitter1  NEVER
    location4 @ 1 -> receiver1  NEVER
    location4 @ 1 -> receiver2  NEVER
    location5 @ 1 -> transmitter1  NEVER
    location5 @ 1 -> receiver1  NEVER
    location5 @ 1 -> receiver2  ALWAYS
    location6 @ 1 -> transmitter1  NEVER
    location6 @ 1 -> receiver1  NEVER
    location6 @ 1 -> receiver2  ALWAYS
    location7 @ 1 -> transmitter1  NEVER
    location7 @ 1 -> receiver1  NEVER
    location7 @ 1 -> receiver2  NEVER
    location8 @ 1 -> transmitter1  NEVER
    location8 @ 1 -> receiver1  NEVER
    location8 @ 1 -> receiver2  NEVER
    location9 @ 1 -> transmitter1  NEVER
    location9 @ 1 -> receiver1  NEVER
    location9 @ 1 -> receiver2  NEVER
    location10 @ 1 -> transmitter1  NEVER
    location10 @ 1 -> receiver1  NEVER
    location10 @ 1 -> receiver2  NEVER
    location11 @ 1 -> transmitter1  NEVER
    location11 @ 1 -> receiver1  NEVER
    location11 @ 1 -> receiver2  NEVER
    location12 @ 1 -> transmitter1  ALWAYS
    location12 @ 1 -> receiver1  ALWAYS
    location12 @ 1 -> receiver2  NEVER
    location13 @ 1 -> transmitter1  NEVER
    location13 @ 1 -> receiver1  NEVER
    location13 @ 1 -> receiver2  ALWAYS

  location-occluder kill list
    location7 @ 1 -> transmitter1 blocked at location6
    location7 @ 1 -> receiver1 blocked at location4
    location8 @ 1 -> receiver2 blocked at location6
    location12 @ 1 -> receiver2 blocked at location1


RC  RELAY CHAIN TABLE  [grade 2]

  SUPPLIED RELAY SCENARIO (T33): CLEAR is conditional, not stable/reachable/validated.
    PHYSICAL UNRESOLVED: no explicit scenario supplied
    RECORDING UNRESOLVED: no explicit scenario supplied
--------------------------------------------------------------
  GEOMETRIC ENUMERATION SCOPE: physical view only; supplied scenario views are separate.  Hops are
  tested on start-state copies with gate OPEN bits forced and no propagation.  A
  hop's required gates are those whose closing alone blocks it (monotone reading).
  Stations are placements, not reachability claims.  Bodies count the connector and
  its riser (ground 0, held tray 2, other support 1); a station with a plate is
  counted as keeping it, so off-plate counts are least values within this enumeration.
  GEOMETRIC CANDIDATES: stable simultaneous occupancy and support motion UNRESOLVED.
  BOOTSTRAP/LATCH are geometric classes, not validated realizations. Connector height
  is that used by station enumeration; differing connector heights are not enumerated.
  connectors 2; fixed couplings 0 (not enumerated); exclusion pairs {wblower2, wblower3}

  stations (13): location, then top (supports) per achievable connector top
    location1  1 (fan1 ground)
    location2  1 (fan1 ground)
    location3  1 (fan1 ground)
    location4  1 (fan1 ground)
    location5  1 (fan1 ground)
    location6  1 (fan1 ground)
    location7  1 (fan1 ground)
    location8  1 (fan1 ground)
    location9  1 (fan1 ground)
    location10  1 (fan1 ground)
    location11  11 (fan1 ground)
    location12  1 (fan1 ground)
    location13  1 (fan1 ground)

  station-to-endpoint hops (9 visible)
    location1@1 -> receiver1  ALWAYS
    location2@1 -> transmitter1  ALWAYS
    location3@1 -> receiver1  requires open gate1, gate2
    location5@1 -> receiver2  ALWAYS
    location6@1 -> receiver2  ALWAYS
    location11@11 -> receiver2  ALWAYS
    location12@1 -> transmitter1  ALWAYS
    location12@1 -> receiver1  ALWAYS
    location13@1 -> receiver2  ALWAYS

  station-to-station hops (32 visible, 32 groups): source -> target, source>target tops, gates required
    location1 -> location2  all tops  ALWAYS
    location1 -> location4  all tops  ALWAYS
    location2 -> location1  all tops  ALWAYS
    location2 -> location12  all tops  ALWAYS
    location3 -> location12  all tops  requires open gate1, gate2
    location4 -> location1  all tops  ALWAYS
    location4 -> location5  all tops  ALWAYS
    location4 -> location6  all tops  ALWAYS
    location5 -> location4  all tops  ALWAYS
    location5 -> location13  all tops  ALWAYS
    location6 -> location4  all tops  ALWAYS
    location6 -> location7  all tops  ALWAYS
    location6 -> location13  all tops  ALWAYS
    location7 -> location6  all tops  ALWAYS
    location7 -> location8  all tops  ALWAYS
    location7 -> location11  all tops  ALWAYS
    location8 -> location7  all tops  ALWAYS
    location8 -> location9  all tops  ALWAYS
    location9 -> location8  all tops  ALWAYS
    location9 -> location10  all tops  ALWAYS
    location9 -> location11  all tops  ALWAYS
    location10 -> location9  all tops  ALWAYS
    location10 -> location11  all tops  ALWAYS
    location11 -> location7  all tops  ALWAYS
    location11 -> location9  all tops  ALWAYS
    location11 -> location10  all tops  ALWAYS
    location11 -> location13  all tops  ALWAYS
    location12 -> location2  all tops  ALWAYS
    location12 -> location3  all tops  requires open gate1, gate2
    location13 -> location5  all tops  ALWAYS
    location13 -> location6  all tops  ALWAYS
    location13 -> location11  all tops  ALWAYS

  chains to receiver1 (4); LATCH needs a device this receiver controls
    1  transmitter1 -> location12@1 -> receiver1  BOOTSTRAP
        gates  (none); plates for them  (none)
        connectors 1; risers ground; bodies 1, on plates 0, off plates 1
        GEOMETRIC CANDIDATE, physical sightlines only; recording sightlines, body/view assignment and occupancy stability UNRESOLVED
    2  transmitter1 -> location2@1 -> location1@1 -> receiver1  BOOTSTRAP
        gates  (none); plates for them  (none)
        connectors 2; risers ground, ground; bodies 2, on plates 0, off plates 2
        GEOMETRIC CANDIDATE, physical sightlines only; recording sightlines, body/view assignment and occupancy stability UNRESOLVED
        wgears1 at location2: base 0, top 1, stream 1; SWEPT if a fan is present and turns in the occupant's view; destination location1; required fan activity not established
    3  transmitter1 -> location2@1 -> location12@1 -> receiver1  BOOTSTRAP
        gates  (none); plates for them  (none)
        connectors 2; risers ground, ground; bodies 2, on plates 0, off plates 2
        GEOMETRIC CANDIDATE, physical sightlines only; recording sightlines, body/view assignment and occupancy stability UNRESOLVED
        wgears1 at location2: base 0, top 1, stream 1; SWEPT if a fan is present and turns in the occupant's view; destination location1; required fan activity not established
    4  transmitter1 -> location12@1 -> location3@1 -> receiver1  LATCH
        gates gate1, gate2; plates for them  (none)
        connectors 2; risers ground, ground; bodies 2, on plates 0, off plates 2
        GEOMETRIC CANDIDATE, physical sightlines only; recording sightlines, body/view assignment and occupancy stability UNRESOLVED

  summary for receiver1
    chains 4: bootstrap 3, latch 1, excluded 0, infeasible 0
    gates open in every bootstrap chain:  none
    least off-plate bodies over bootstrap chains: 1
    with 1 connector: 1 chain, least off-plate bodies 1, receiver-end stations location12@1
    with 2 connectors: 2 chains, least off-plate bodies 2, receiver-end stations location1@1, location12@1

  chains to receiver2 (0); LATCH needs a device this receiver controls

  summary for receiver2
    chains 0: bootstrap 0, latch 0, excluded 0, infeasible 0
    no geometric bootstrap candidate in RC scope; receiver activation outside this scope UNRESOLVED


S7  LANDMARK GRAPH AND ORDERINGS  [grade 4]
--------------------------------------------------------------
  relaxation: delete relaxation; achieved landmarks persist.
  no simultaneous-role, keeper-return, segment, or route claim is emitted.

  explicit goal landmarks
    (has-location agent1 location11)  movement/query landmark; S1 expansion unavailable.

  S1 controller expansions
    none: the explicit goal has no controlled-device condition.

  greedy-necessary orderings
    none: route/order extraction needs a separately stated movement relaxation.


S3  GATE-LABELLED REGION QUOTIENT  [grade 2]
--------------------------------------------------------------

  traversal arcs read (82)
    50 symmetric (traverse-via), 32 directed (traverse-via>)
    kind walk: 82 arcs, 11 with an empty family

  contraction rule: two endpoints share a region when an arc of traverse-via joins them with an EMPTY door family.  Static separators -- staircases, edges, floor drives -- are not doors.  Arcs of traverse-via> are never contracted, whatever their family.
  NOTE: a region is a set of endpoints NO DOOR separates.  Each kind carries its own predicate -- a jump's reach limit, a ladder's position -- which this extractor does not evaluate, having no state to evaluate it in.  Two endpoints in one region therefore need not be mutually reachable.

  regions (11 over 13 endpoints of type location)
    R1  (2): location1 location4
    R2  (1): location10
    R3  (1): location11
    R4  (1): location12
    R5  (2): location13 location6
    R6  (1): location2
    R7  (1): location3
    R8  (1): location5
    R9  (1): location7
    R10  (1): location8
    R11  (1): location9
    on no arc at all (1): location11

  region crossings (73 rows: 17 spine, 25 composed)
    NOTE: these rows are the transitive CLOSURE, one minimal door-set per location pair. The spine preserves reachability; it is not a physical doorway count.
    R10 --> R11  kind walk  family ((wblower4))  1 location arc  SPINE
    R10 --> R1  kind walk  family ((wblower3))  1 location arc  NON-MINIMAL -- a cheaper route exists; see the derivation
    R10 --> R2  kind walk  family ((wblower4))  1 location arc  composed
    R10 <-> R4  kind walk  family ((wblower2 wblower3 wgears1))  1 location arc  NON-MINIMAL -- a cheaper route exists; see the derivation via (wblower3 wgears1)
    R10 <-> R5  kind walk  family ((wblower3))  1 location arc  SPINE
    R10 --> R5  kind walk  family () direct  1 location arc  SPINE
    R10 <-> R6  kind walk  family ((wblower2 wblower3 wgears1))  1 location arc  NON-MINIMAL -- a cheaper route exists; see the derivation via (wblower3 wgears1)
    R10 <-> R7  kind walk  family ((gate1 gate2 wblower2 wblower3 wgears1))  1 location arc  NON-MINIMAL -- a cheaper route exists; see the derivation via (gate1 gate2 wblower3 wgears1)
    R10 <-> R8  kind walk  family ((wblower2 wblower3))  1 location arc  NON-MINIMAL -- a cheaper route exists; see the derivation via (wblower2)
    R10 <-> R9  kind walk  family ((wblower3))  1 location arc  SPINE
    R11 --> R10  kind walk  family () direct  1 location arc  SPINE
    R11 --> R1  kind walk  family ((wblower3 wblower4))  1 location arc  NON-MINIMAL -- a cheaper route exists; see the derivation via (wblower3)
    R11 <-> R2  kind walk  family ((wblower4))  1 location arc  SPINE
    R11 <-> R4  kind walk  family ((wblower2 wblower3 wblower4 wgears1))  1 location arc  NON-MINIMAL -- a cheaper route exists; see the derivation via (wblower3 wgears1)
    R11 <-> R5  kind walk  family ((wblower3 wblower4))  1 location arc  NON-MINIMAL -- a cheaper route exists; see the derivation via (wblower4)
    R11 --> R5  kind walk  family ((wblower4))  1 location arc  NON-MINIMAL -- a cheaper route exists; see the derivation
    R11 <-> R6  kind walk  family ((wblower2 wblower3 wblower4 wgears1))  1 location arc  NON-MINIMAL -- a cheaper route exists; see the derivation via (wblower3 wgears1)
    R11 <-> R7  kind walk  family ((gate1 gate2 wblower2 wblower3 wblower4 wgears1))  1 location arc  NON-MINIMAL -- a cheaper route exists; see the derivation via (gate1 gate2 wblower3 wgears1)
    R11 <-> R8  kind walk  family ((wblower2 wblower3 wblower4))  1 location arc  NON-MINIMAL -- a cheaper route exists; see the derivation via (wblower2 wblower3)
    R11 <-> R9  kind walk  family ((wblower3 wblower4))  1 location arc  NON-MINIMAL -- a cheaper route exists; see the derivation via (wblower3)
    R1 <-> R10  kind walk  family ((wblower2 wblower3))  1 location arc  composed
    R1 --> R10  kind walk  family ((wblower2 wblower3))  1 location arc  composed
    R1 <-> R11  kind walk  family ((wblower2 wblower3 wblower4))  1 location arc  composed
    R1 --> R11  kind walk  family ((wblower2 wblower3 wblower4))  1 location arc  composed
    R1 <-> R2  kind walk  family ((wblower2 wblower3 wblower4))  1 location arc  composed
    R1 --> R2  kind walk  family ((wblower2 wblower3 wblower4))  1 location arc  composed
    R1 <-> R4  kind walk  family ((wgears1))  1 location arc  composed
    R1 --> R4  kind walk  family ((wgears1))  1 location arc  composed
    R1 <-> R5  kind walk  family ((wblower2))  2 location arcs  composed
    R1 --> R5  kind walk  family ((wblower2))  2 location arcs  composed
    R1 <-> R6  kind walk  family ((wgears1))  1 location arc  composed
    R1 --> R6  kind walk  family ((wgears1))  1 location arc  SPINE
    R1 <-> R7  kind walk  family ((gate1 gate2 wgears1))  1 location arc  composed
    R1 --> R7  kind walk  family ((gate1 gate2 wgears1))  1 location arc  composed
    R1 <-> R8  kind walk  family ((wblower2))  1 location arc  composed
    R1 --> R8  kind walk  family ((wblower2))  1 location arc  SPINE
    R1 <-> R9  kind walk  family ((wblower2 wblower3))  1 location arc  composed
    R1 --> R9  kind walk  family ((wblower2 wblower3))  1 location arc  composed
    R2 --> R10  kind walk  family () direct  1 location arc  SPINE
    R2 --> R1  kind walk  family ((wblower3 wblower4))  1 location arc  NON-MINIMAL -- a cheaper route exists; see the derivation via (wblower3)
    R2 <-> R4  kind walk  family ((wblower2 wblower3 wblower4 wgears1))  1 location arc  NON-MINIMAL -- a cheaper route exists; see the derivation via (wblower3 wgears1)
    R2 <-> R5  kind walk  family ((wblower3 wblower4))  1 location arc  NON-MINIMAL -- a cheaper route exists; see the derivation
    R2 --> R5  kind walk  family ((wblower4))  1 location arc  NON-MINIMAL -- a cheaper route exists; see the derivation
    R2 <-> R6  kind walk  family ((wblower2 wblower3 wblower4 wgears1))  1 location arc  NON-MINIMAL -- a cheaper route exists; see the derivation via (wblower3 wgears1)
    R2 <-> R7  kind walk  family ((gate1 gate2 wblower2 wblower3 wblower4 wgears1))  1 location arc  NON-MINIMAL -- a cheaper route exists; see the derivation via (gate1 gate2 wblower3 wgears1)
    R2 <-> R8  kind walk  family ((wblower2 wblower3 wblower4))  1 location arc  NON-MINIMAL -- a cheaper route exists; see the derivation via (wblower2 wblower3)
    R2 <-> R9  kind walk  family ((wblower3 wblower4))  1 location arc  NON-MINIMAL -- a cheaper route exists; see the derivation via (wblower3)
    R4 --> R1  kind walk  family () direct  1 location arc  SPINE
    R4 <-> R5  kind walk  family ((wblower2 wgears1))  2 location arcs  NON-MINIMAL -- a cheaper route exists; see the derivation via (wblower2)
    R4 <-> R6  kind walk  family ((wgears1))  1 location arc  SPINE
    R4 <-> R7  kind walk  family ((gate1 gate2))  1 location arc  SPINE
    R4 <-> R8  kind walk  family ((wblower2 wgears1))  1 location arc  NON-MINIMAL -- a cheaper route exists; see the derivation via (wblower2)
    R4 <-> R9  kind walk  family ((wblower2 wblower3 wgears1))  1 location arc  NON-MINIMAL -- a cheaper route exists; see the derivation via (wblower2 wblower3)
    R5 --> R10  kind walk  family ((wblower3))  1 location arc  composed
    R5 --> R11  kind walk  family ((wblower3 wblower4))  1 location arc  composed
    R5 --> R1  kind walk  family () direct  2 location arcs  SPINE
    R5 --> R2  kind walk  family ((wblower3 wblower4))  1 location arc  composed
    R5 <-> R6  kind walk  family ((wblower2 wgears1))  2 location arcs  NON-MINIMAL -- a cheaper route exists; see the derivation via (wgears1)
    R5 <-> R7  kind walk  family ((gate1 gate2 wblower2 wgears1))  2 location arcs  NON-MINIMAL -- a cheaper route exists; see the derivation via (gate1 gate2 wgears1)
    R5 <-> R8  kind walk  family ((wblower2))  2 location arcs  SPINE
    R5 <-> R9  kind walk  family ((wblower3))  1 location arc  composed
    R5 --> R9  kind walk  family ((wblower3))  1 location arc  composed
    R6 --> R1  kind walk  family () direct  1 location arc  SPINE
    R6 <-> R7  kind walk  family ((gate1 gate2 wgears1))  1 location arc  composed
    R6 <-> R8  kind walk  family ((wblower2 wgears1))  1 location arc  NON-MINIMAL -- a cheaper route exists; see the derivation via (wblower2)
    R6 <-> R9  kind walk  family ((wblower2 wblower3 wgears1))  1 location arc  NON-MINIMAL -- a cheaper route exists; see the derivation via (wblower2 wblower3)
    R7 --> R1  kind walk  family ((gate1 gate2))  1 location arc  composed
    R7 <-> R8  kind walk  family ((gate1 gate2 wblower2 wgears1))  1 location arc  NON-MINIMAL -- a cheaper route exists; see the derivation via (gate1 gate2 wblower2)
    R7 <-> R9  kind walk  family ((gate1 gate2 wblower2 wblower3 wgears1))  1 location arc  NON-MINIMAL -- a cheaper route exists; see the derivation via (gate1 gate2 wblower2 wblower3)
    R8 --> R1  kind walk  family () direct  1 location arc  SPINE
    R8 <-> R9  kind walk  family ((wblower2 wblower3))  1 location arc  composed
    R9 --> R1  kind walk  family ((wblower3))  1 location arc  NON-MINIMAL -- a cheaper route exists; see the derivation
    R9 --> R5  kind walk  family () direct  1 location arc  SPINE

  adjacency spine (17)
    R10 --> R11  kind walk  family ((wblower4))
    R10 <-> R5  kind walk  family ((wblower3))
    R10 --> R5  kind walk  family () direct
    R10 <-> R9  kind walk  family ((wblower3))
    R11 --> R10  kind walk  family () direct
    R11 <-> R2  kind walk  family ((wblower4))
    R1 --> R6  kind walk  family ((wgears1))
    R1 --> R8  kind walk  family ((wblower2))
    R2 --> R10  kind walk  family () direct
    R4 --> R1  kind walk  family () direct
    R4 <-> R6  kind walk  family ((wgears1))
    R4 <-> R7  kind walk  family ((gate1 gate2))
    R5 --> R1  kind walk  family () direct
    R5 <-> R8  kind walk  family ((wblower2))
    R6 --> R1  kind walk  family () direct
    R8 --> R1  kind walk  family () direct
    R9 --> R5  kind walk  family () direct

  doors on arcs (6)
    gate1 gate2 wblower2 wblower3 wblower4 wgears1

  controlled devices labelling NO traversal arc (0 of 3)
    none: every controlled device gates some crossing
    READING: such a device is movement-irrelevant, meaning that no traversal clause names it.  It is NOT a claim that the device is inert -- a device may act on objects rather than on passage -- and it is NOT a claim about reaching, which a separate relation carries and this extractor does not read.

  doors that are NOT controlled devices (3)
    gate2 wblower4 wgears1
    these are obstacles with no CONTROLS entry, so no plate or switch opens them and S1's algebra says nothing about them.


S4  CUT-KEEPER TABLE  [conditional bounds; graph candidates]
--------------------------------------------------------------
  SCOPE: graph reachability relaxes all other doors, elevation and cargo conditions.
  It omits non-traversal relocation, support transitions and recorder lifecycle.
  Graph cuts and approach-only regions therefore do NOT prove concrete stranding.
  Pressure counts require ON's functional key and the relevant view's occupancy semantics.
  Device-state conclusions additionally require the printed S1 axiom premises.

  controlled devices (3); spine rows (17); spine check :VERIFIED-AGAINST-QUOTIENT

    gate1 == receiver1
      state open: state == override OR aggregate -- OVERRIDE LIVE, every claim below is conditional on it; empty-type premises nil
      controller receiver1: RECEIVER; position unresolved; region UNRESOLVED
        beam dependency unresolved; requires sightline analysis.
      positive pressure alternatives (nil); individually mandatory nil
      conditional shortage: available eligible ON witnesses < 0 implies
        this normal aggregate cannot activate (minimum simultaneous plate demand).
      spine kind walk, family ((gate1 gate2))
        R4 -> R7, device absent: source reaches ("R1" "R10" "R11" "R2" "R4" "R5" "R6" "R8" "R9"); destination reaches ("R7")
          graph cut in this direction: YES
        R7 -> R4, device absent: source reaches ("R7"); destination reaches ("R1" "R10" "R11" "R2" "R4" "R5" "R6" "R8" "R9")
          graph cut in this direction: YES

    wblower2 == (not receiver2)
      state turning: state == override OR aggregate -- OVERRIDE LIVE, every claim below is conditional on it; empty-type premises nil
      controller receiver2: RECEIVER; position unresolved; region UNRESOLVED
        beam dependency unresolved; requires sightline analysis.
      positive pressure alternatives nil; individually mandatory nil
      inverted aggregate: no positive keeper demand inferred.
      spine kind walk, family ((wblower2))
        R1 -> R8, device absent: source reaches ("R1" "R4" "R6" "R7"); destination reaches ("R1" "R4" "R6" "R7" "R8")
          graph cut in this direction: YES
      spine kind walk, family ((wblower2))
        R5 -> R8, device absent: source reaches ("R1" "R10" "R11" "R2" "R4" "R5" "R6" "R7" "R9"); destination reaches ("R1" "R4" "R6" "R7" "R8")
          graph cut in this direction: YES
        R8 -> R5, device absent: source reaches ("R1" "R4" "R6" "R7" "R8"); destination reaches ("R1" "R10" "R11" "R2" "R4" "R5" "R6" "R7" "R9")
          graph cut in this direction: YES

    wblower3 == receiver2
      state turning: state == override OR aggregate -- OVERRIDE LIVE, every claim below is conditional on it; empty-type premises nil
      controller receiver2: RECEIVER; position unresolved; region UNRESOLVED
        beam dependency unresolved; requires sightline analysis.
      positive pressure alternatives (nil); individually mandatory nil
      conditional shortage: available eligible ON witnesses < 0 implies
        this normal aggregate cannot activate (minimum simultaneous plate demand).
      spine kind walk, family ((wblower3))
        R10 -> R5, device absent: source reaches ("R1" "R10" "R11" "R2" "R4" "R5" "R6" "R7" "R8"); destination reaches ("R1" "R4" "R5" "R6" "R7" "R8")
          graph cut in this direction: NO, bypass exists
        R5 -> R10, device absent: source reaches ("R1" "R4" "R5" "R6" "R7" "R8"); destination reaches ("R1" "R10" "R11" "R2" "R4" "R5" "R6" "R7" "R8")
          graph cut in this direction: YES
      spine kind walk, family ((wblower3))
        R10 -> R9, device absent: source reaches ("R1" "R10" "R11" "R2" "R4" "R5" "R6" "R7" "R8"); destination reaches ("R1" "R4" "R5" "R6" "R7" "R8" "R9")
          graph cut in this direction: YES
        R9 -> R10, device absent: source reaches ("R1" "R4" "R5" "R6" "R7" "R8" "R9"); destination reaches ("R1" "R10" "R11" "R2" "R4" "R5" "R6" "R7" "R8")
          graph cut in this direction: YES

  explicit goal destinations (1); goal form (has-location agent1 location11)
    agent1: location4 (R1) -> location11 (R3)
      baseline graph disconnected; no device-cut conclusion.
    jammer1: initially location1; no explicit destination, crossings UNRESOLVED.
    connector1: initially location6; no explicit destination, crossings UNRESOLVED.
    connector2: initially location3; no explicit destination, crossings UNRESOLVED.

  keeper supply from S2
    on: support-occupant -> support
      |occupied support| <= 5 - |unavailable support-occupant|
      injective: the relation is keyed by its support-occupant argument, so two distinct occupied values need two distinct witnesses
      BODIES by layer, not yet a claim about any predicate: live + unpaired 5, ghost + unpaired 5, total 5
      consumers (2 relations): the bound each one actually reads
        active [derived]  asserted by update-receiver-status!  via beam-reaches-receiver
          site in base: NONE -- layer-blind, it reads every occupant
          witnesses it reads: 5 -- the whole pool
        on [not derived]  asserted by sweep-occupants-away!  via top
          site in base: NONE -- layer-blind, it reads every occupant
          witnesses it reads: 5 -- the whole pool
      NOTE: assertion side only.  A query used in an action's precondition is not listed here.
      NOTE: the switch walk descends AND, OR, NOT, IF and the queries those call.  A switch inside any other form is not found, so "no switch found" is weaker than "no switch".
      *start-state* reading, NOT the bound: 0 of 5 keys assigned, 0 distinct values occupied
    Available eligible witnesses are a parameter for each view and segment.
    Total sequential crossers are NOT simultaneous body demand.

  UNCONDITIONAL STRANDING: unresolved; no verdict emitted.


CC  COUPLING CENSUS  [grade 1; occluder role grade 2]
--------------------------------------------------------------
  subsystems: route (barrier), beam (occluder, beam-driven), lift (lift), transport (horizontal-transport, transport), occupancy (support-controller)

  role table (5 objects)
    gate1  device  barrier occluder  subsystems route beam
    receiver1  primitive  beam-driven  subsystems beam
    receiver2  primitive  beam-driven  subsystems beam
    wblower2  device  barrier horizontal-transport  subsystems route transport
    wblower3  device  barrier horizontal-transport  subsystems route transport

  K1 fan-out (1)
    receiver2  subsystems route beam transport
      wblower2 == (not receiver2)  barrier horizontal-transport
      wblower3 == receiver2  barrier horizontal-transport
      {wblower2, wblower3}  EXCLUSION

  K2 multi-role (3)
    gate1  route beam
    wblower2  route transport
    wblower3  route transport

  K3 beam feedback (2)
    receiver1  drives gate1
      last-hop gates (2)
        gate1  controllers receiver1  SELF
        gate2  uncontrolled
    receiver2  drives wblower2 wblower3
      last-hop gates (0)

  G15 lift-barrier couplings (0)
    none


NH  NECESSITY HINTS  [grade per hint]

  SUPPLIED RELAY SCENARIO (T33): CLEAR is conditional, not stable/reachable/validated.
    PHYSICAL UNRESOLVED: no explicit scenario supplied
    RECORDING UNRESOLVED: no explicit scenario supplied
--------------------------------------------------------------
  READING: a hint restates static limits as a candidate plan element for the Briefing (Problem-Solving Guide, Phase 1 step 3).  NECESSARY: every plan meets it, under the grade shown.  CANDIDATE: one way to meet a limit; others may exist.  A hint is not a plan, and a graph candidate is not a proof.

  hints (5): 2 NECESSARY, 3 CANDIDATE

  H1 body budget (0)
    none

  H2 keepers left behind (0)
    none

  H3 beam-held devices (4)
    H3.1  NECESSARY  [grade 2; S1 RC]
      limit  gate1 == receiver1 holds only while receiver1 is active; within RC's enumerated physical geometric candidates, every chain to receiver1 (3 bootstrap, 1 latch) needs no common gate
      hint   within those geometric candidates for gate1, at least 1 body is off plates for the beam
      note   S1's receiver condition is necessary; RC gate/body bounds are conditional on its physical geometric enumeration, not all recording-view beams
      note   Recording sightlines, body/view assignment, forced transport and occupancy stability UNRESOLVED; geometric chains are not validated realizations
    H3.2  CANDIDATE  [grade 2; RC]
      limit  physical geometric candidates to receiver1 with last connector at location1 (R1): least off-plate bodies 2
      hint   transmitter1 -> location2@1 -> location1@1 -> receiver1  risers ground, ground; bodies 2, off plates 2
      note   GEOMETRIC CANDIDATE, physical sightlines only; recording sightlines, body/view assignment and occupancy stability UNRESOLVED
      note   wgears1 at location2: base 0, top 1, stream 1; SWEPT if a fan is present and turns in the occupant's view; destination location1; required fan activity not established
    H3.3  CANDIDATE  [grade 2; RC]
      limit  physical geometric candidates to receiver1 with last connector at location12 (R4): least off-plate bodies 1
      hint   transmitter1 -> location12@1 -> receiver1  risers ground; bodies 1, off plates 1
      note   GEOMETRIC CANDIDATE, physical sightlines only; recording sightlines, body/view assignment and occupancy stability UNRESOLVED
    H3.4  NECESSARY  [grade 2; S1 RC]
      limit  wblower3 == receiver2 holds only while receiver2 is active; within RC's enumerated physical geometric candidates, every chain to receiver2 (0 bootstrap, 0 latch) needs no common gate
      hint   while wblower3 must hold, RC implies nothing further
      note   S1's receiver condition is necessary; RC gate/body bounds are conditional on its physical geometric enumeration, not all recording-view beams
      note   Recording sightlines, body/view assignment, forced transport and occupancy stability UNRESOLVED; geometric chains are not validated realizations

  H4 controllers off the goal route (0)
    none

  H5 lift landings (0)
    none

  H6 active at the start (1)
    H6.1  CANDIDATE  [grade 1; S1, start state]
      limit  wblower2 == (not receiver2) holds at the start: receiver2 is not active
      hint   wblower2 is free until receiver2 changes (off the goal route)

  H7 placement limits (0)
    none


SD  SERVICES AND SETUP DEPENDENCIES  [grade 2]
--------------------------------------------------------------
  SCOPE: a monotone premise closure over passage services (every gate; each drive a traversal clause names) and receiver literals.  Providers: S1 CONTROL options, MC jam sites (OVERRIDE), gears with no fan (EQUIPMENT), RC chains and fixed corridors to a receiver.  No ordering, simultaneity, bodies, reach, occupancy or view is checked.
  CLASSES: DIRECT no premise; SUPPORTED premises available without this service; NEEDS <service> FIRST: installing this provider needs the service it will provide (a setup dependency); UNSUPPORTED IN SCOPE.  A service with only NEEDS-FIRST options is a SETUP QUESTION, not an impossibility.  "Through standing providers" repeats the test with premises supplied only by CONTROL, chains, corridors and equipment, never another jam, and is printed when that exposes a setup dependency a further jammer would hide.

  goal actor agent1: start location4 (R1) -> goal location11 (R3)
    transit door sets (R1 -> R3, 0): none
      necessary: none
    return door sets (R3 -> R1, 0): none
      necessary: none
    final services: none (the goal names no receiver or controlled device)
    temporary services (in some transit set, not final): none
      READING: TEMPORARY means needed while crossing and expendable afterward, unless a return or a later crossing needs it again.

  access from R1 (minimal door sets to each region; kind predicates not evaluated)
    R1  ()
    R2  (wblower2 wblower3 wblower4)
    R3  not reached in the relaxed graph
    R4  (wgears1)
    R5  (wblower2)
    R6  (wgears1)
    R7  (gate1 gate2 wgears1)
    R8  (wblower2)
    R9  (wblower2 wblower3)
    R10  (wblower2 wblower3)
    R11  (wblower2 wblower3 wblower4)

  retrieval (start places of jammers, connectors and fans)
    connector1  location6 (R5)
    connector2  location3 (R7)
    fan1  mounted on wgears1, wall-hung (no location)
    jammer1  location1 (R1)

  services (8): 7 SUPPORTED, 0 SETUP QUESTION, 1 NO PROVIDER IN SCOPE
    gate1 open  == receiver1  start BLOCKED  verdict SUPPORTED
      CONTROL SUPPORTED: receiver1 active
      OVERRIDE DIRECT: no premise
        jam at location12 on ground (jammer1)
      OVERRIDE SUPPORTED: gate2 open
        jam at location3 on ground (jammer1)
    gate2 open  start BLOCKED  verdict SUPPORTED
      no controller: override or equipment only
      OVERRIDE SUPPORTED: gate1 open
        jam at location12 on ground (jammer1)
      OVERRIDE DIRECT: no premise
        jam at location3 on ground (jammer1)
    wblower2 clear  == (not receiver2)  start BLOCKED  verdict SUPPORTED
      CONTROL UNSUPPORTED IN SCOPE: receiver2 active
      OVERRIDE DIRECT: no premise
        jam at location1 on ground (jammer1)
        jam at location13 on ground (jammer1)
        jam at location2 on ground (jammer1)
        jam at location4 on ground (jammer1)
        jam at location5 on ground (jammer1)
    wblower3 clear  == receiver2  start PASSABLE  verdict SUPPORTED
      CONTROL DIRECT: receiver2 inactive
      OVERRIDE DIRECT: no premise
        jam at location11 on ground (jammer1)
        jam at location6 on ground (jammer1)
        jam at location7 on ground (jammer1)
        jam at location8 on ground (jammer1)
    wblower4 clear  start BLOCKED  verdict SUPPORTED
      no controller: uncontrolled drive turns unless jammed
      OVERRIDE DIRECT: no premise
        jam at location10 on ground (jammer1)
        jam at location11 on ground (jammer1)
        jam at location8 on ground (jammer1)
        jam at location9 on ground (jammer1)
    wgears1 clear  start BLOCKED  verdict SUPPORTED
      no controller: uncontrolled drive turns unless jammed
      EQUIPMENT DIRECT: no fan mounted (T42 removal)
      OVERRIDE DIRECT: no premise
        jam at location1 on ground (jammer1)
        jam at location12 on ground (jammer1)
        jam at location2 on ground (jammer1)
        jam at location4 on ground (jammer1)
        jam at location5 on ground (jammer1)
    receiver1 active  start INACTIVE  verdict SUPPORTED
      CHAINS DIRECT: 3 RC chains (bootstrap); no premise
      CHAINS SUPPORTED: 1 RC chain (latch); gate1 open; gate2 open
    receiver2 active  start INACTIVE  verdict NO PROVIDER IN SCOPE
      no option in scope

  opposed controls (a primitive needed in both states by different services)
    receiver2: on for wblower2; off for wblower3

  setup dependencies (options whose premises lead back to their own service)
    none
    setup questions: none

  NOT CLAIMED: an order, simultaneous availability, a body or reach allocation, occupancy, view or a realized setup.  A premise-free provider still needs placing, and a NEEDS-FIRST provider needs another provider in force while it is installed (a handover).  Access is to a site's own region; placement or pickup from another location within reach is not modelled.  For concrete consequences use REPORT-SERVICE-TRANSITION on two settled states.
RO requires an explicit segment input and is not generated; call
REPORT-ROLE-OBLIGATIONS with a stated scenario.
