PROBLEM / REVISION / AUTHORIZED SCOPE
  Active record: doc/problems/intersect/spec-analysis.txt.
  Specification: probs/problem-intersect.lisp, revision 3 (2026-11-08: location9 added);
  revision 2 2026-11-07 (location8 added);
  revision 1 complete 2026-11-05.
  Scope approved by user 2026-11-05: draft the spec section by section; read tech sources
  (gate, plate, beam-relay, beam-crossing, walkability, visibility, reachability, ladder,
  elevation if needed) and probs/problem-rumin-topo.lisp as a coordinate-geometry pattern;
  assistant-run staging and fidelity checks in the Linux VM (each well under 15 min);
  one bounded smoke search, depth cutoff 10, revised by user to 7 (2026-11-05), *threads* 16.
  Windows-only confirmations handed to the user as REPL sequences.

INPUT ANALYSIS AND OBJECTIVE
  doc/problems/intersect/problem-analysis.txt, revision 4 (2026-11-07; L8 added).
  Preserved snapshot: problem-analysis-2026-11-04-before-spec.txt (rev 2; removed at wrap-up 2026-11-10, in git history).
  Rev 3 corrections (user): L2 -> (21,6); L8 removed; LD1 climbs L3 -> L2.  Agreed.

REPRESENTATION AND AUTHORING APPROACH
  Path B (tech library) with coordinate-derived geometry, as in rumin-topo (D6).
  Stored state: agent location, held connector, connector locations, paired links (D1).
  Derived by tech: relay colors, crossing activity, receiver activity, gate open, plate
  depressed.
  Semantic settings: planning, min-length, graph, *max-connector-pairings* 3.
  Provisional: *depth-cutoff* 7 (user, was 10); *threads* 16 set at the REPL, not in the file.
  Source findings (2026-11-05):
  - gate.lisp: controls are DNF (OR of AND-lists); G4 = ((receiver4 plate1)) normal.
  - walkability nests -elevation; elevation tech need not be included separately.
  - beam-crossing must be included explicitly (rumin-topo does not use it).
  - reach passes windows exactly as sight does (-reachability-coordinates).  User rule
    (2026-11-05): no reach through any window.  Every derived reach edge across a window
    gets REACH-DISALLOWED>; the exact pairs are measured after staging.

SECTION REVIEW AND REQUIREMENT MAPPING
  1 Representation and settings: written 2026-11-05; code shown and approved as written
    by user 2026-11-05 (symmetry-pruning line reviewed with E1).
    User added the no-reach-through-windows rule.
  2 Objects and fixed geometry: written 2026-11-05; code shown and approved as written
    by user 2026-11-05.
  3 Tech includes: (include-tech reachability) removed (user, 2026-11-05) -- no reach
    edges are derived (item 2), so beam-relay's own same-location reach rule is
    equivalent and makes no-reach-through-windows hold by construction.  Check 10.
    Section 3 code shown and approved as revised by user 2026-11-05.
  4 Start state (C2 at L2, C3 at L3 per user): code shown and approved as written by
    user 2026-11-05.
  5 Init action: code shown and approved as written by user 2026-11-05.
  6 Goal and basic-model requirement account: approved by user 2026-11-05.
  Basic model (sections 1-6) complete and approved; E1 and E2 approved by user
  2026-11-05.  Final review and diagram check done (checks 11-13).

ENHANCEMENTS FOR THE LARGER FAMILY  (agenda agreed by user 2026-11-05)
  E1 Connector symmetry pruning: (ww-set *symmetry-pruning* t).  Growth: number of
     connectors.  Premise: C1-C3 identical (no distinguishing static facts, not in the
     goal).  Merges states differing only by connector names; drops only solutions that
     differ by renaming.  Implemented and enabled.  Staging safety check: family
     (connector1 connector2 connector3) kept, passes the full check.  (audit-symmetry),
     depth 7, *threads* 16: on and off both exhausted-no-solution, 75,285 states each,
     0 symmetry duplicates.  Depth 7 never produces two connectors in swapped places, so
     the benefit is unmeasured (search-advisor question).
  E2 min-steps-remaining? placeholder: 0 at location7, else 1.  Sound (at least one move
     remains).  Implemented and enabled; exercised in item 8 (2,204 evaluations, 0
     prunes, as expected for a cutoff-only search).  Stronger bound (closed gates on the
     forced route, topo-lower-bound per D8): search-advisor question.
  Deferred to the search advisor, not implemented: omit retaining pickup (D3);
  connect-connector branching measurement at the cap of 3.

CHECKS AND EVIDENCE
  1. Staging, cloud container (SBCL 2.2.9, Ubuntu), 2026-11-05, assistant-run.
     (Linux VM route refused by the session's permission check.)
     Spec as written: FAILS in ESTABLISH-BEAM-COORDINATES:
       "Beam (TRANSMITTER2 LOCATION1) has multiple crossings at parameter 23/33."
     Cause (deduction + second run): collinear points.  L3 (24,8), L5 (4,8), R4r (0.1,8)
     share y=8, and T1b, L1, L4, R3b share x=15, so overlapping candidate beams (e.g.
     L3-R4r and L3-L5) are crossed by a third beam at one point.  -beam-crossing-
     coordinates (beam-coordinates-crossings-on-beam) rejects two crossings at the
     same parameter on one beam.
     Copy-only trials: L5 -> (4,17/2) alone still fails (x=15 line); L1 -> (61/4,5),
     L4 -> (61/4,16), L5 -> (4,33/4) stages cleanly (STAGED-OK, no init-check failure;
     ladder climb L3->L2 accepted).  1/4 offsets keep each location within the 1/2-unit
     occlusion distance of the line it left.  User files unchanged.
     Decision (user, 2026-11-05): fix the tech instead of shifting locations -- let
     crossings at the same point be checked independently.  Plan: project doc
     claude/beam-crossing-ties-plan.md, to be done in a separate session.
     Tie fix done (2026-11-05, cloud SBCL 2.2.9): crossings at the same point on a beam
     are recorded pairwise as CROSSINGS-COINCIDE> and never block each other in
     BEAM-REACHES-CROSSING.  Spec with original coordinates (L1 (15,5), L4 (15,16),
     L5 (4,8)) now STAGES cleanly: 284 crossings, 58 coincident pairs, all from
     overlapping beams on the y=8 and x=15 lines.  (test-topo) and the six
     beam-crossing test problems pass.
  2. Derived geometry, original coordinates, cloud SBCL 2.2.9, 2026-11-05, assistant-run.
     Walking pairs (TRAVERSE-VIA) match the agreed areas and gate order exactly.
     No REACH-VIA facts at all: *horizontal-reach-limit* is 5/2 and the closest
     location pair (L5-L6) is about 3.2 apart, so no reach crosses a window and no
     REACH-DISALLOWED> is needed (one that suppressed nothing would be an error).
  3. Fidelity checks by replay (validate-action-sequence), 2026-11-05, assistant-run.
     Start variants exist only in the throwaway copy (problem-intersect-va/vb/vc).
     a. From the real start: pickup C1, connect C1 at L1 to (receiver1 transmitter1):
        C1 blue, R1b active, gate1 open; only move offered is walk L1 -(gate1)-> L2.
        The agent standing at the relay's location does not occlude its beams.
     b. Agent empty-handed at L3: only move is the ladder climb to L2.  Holding C2 at
        L3: no moves.  At L2 after the climb (gates closed): no moves, so no descent.
     c. C3 put on plate1 at L6 with R4r inactive: plate1 depressed, gate4 closed.
     d. Agent at L6 could NOT press plate1 (no step move).  Fix: (include-tech step)
        added to the spec.  After it: step onto plate1 offered; standing on it gives
        (depressed plate1); from the plate the only move is stepping back off.
     e. Crossing: C1 at L1 linked T1b, R1b, C3; C3 at L4 linked R3b; C2 at L3 linked
        T2r, R4r.  Result: crossing193 active = (L1-L4) x (L3-R4r) at (15,8); C3
        unlit, R3b and R4r inactive; C1 blue, C2 red, R1b active, gate1 open.  Both
        crossing beams cut.  The L1-L4 beam's later crossing with T2r-L3 is not
        reached, so the T2r-L3 hop stays live (C2 red), as intended.
  4. Smoke search, cloud container (2 cores), 2026-11-05, assistant-run.  Spec with
     step tech; graph, min-length, *depth-cutoff* 10, *threads* 16.
     Completed normally in 19.5 s, during task generation: 480 distinct states, max depth
     explored 8 (< cutoff), 17,856 states processed, 97.3% repeats, average branching
     37.2.  3,488 successor states abandoned as inconsistent.  No solutions found.
     Reading: the whole state space reachable under the model is 480 states and the goal
     is not among them, so depth is not the limit.  Either a fidelity gap (possibly
     hidden in the abandoned states) or the puzzle needs something not modelled.
     Inconsistent-state sources in the included tech: placement-choice-allowed
     (-placement), the propagation fixpoint cap (-propagation), the beam-crossing
     fixpoint/arbitration (beam-crossing), threat safety (-threat).  Not yet identified.
  5. Inconsistent-state diagnosis, 2026-11-05, assistant-run (tech copies instrumented
     in the throwaway copy only; user tech files unchanged).
     All 4,920 abandoned states (sequential run) come from the propagation fixpoint cap
     (-propagation, 10 passes): an oscillation, not placement, crossing or threat.
     From the first connect at L1 exactly one of 92 successors is dropped: C1 linked to
     (T1b T2r R1b).  Loop: T2r reaches L1 only through gate1; with both hues C1 is unlit
     -> R1b off -> gate1 closes -> red cut -> C1 blue -> R1b on -> gate1 opens -> ...
     All other drops are the same loop with extra links (via retaining pickup).  These are
     physically unstable configurations; dropping them hides no stable state.
     Side observation: retaining pickup followed by a new connect can leave C1 with more
     than 3 links (up to 6 seen).  Whether retained links count toward the cap of 3 is a
     rule question for the user, deferred (one issue at a time).
  6. Reachable-space census (own breadth-first walk with generate-children), 2026-11-05.
     480 states, depths 0-7.  Facts ever true: gate1 and gate3 open, R1b and R3b
     active, C1 blue, agent at L1 or L2 only; C1 only ever at L1 or held; C2 and C3
     never move.  Reason: gate1 is open only while C1 stays at L1 relaying T1b -> R1b,
     so the agent enters the central room empty-handed, with no connector to send T2r's
     red to R2r; gate2 can never open.  (L1-L2 is 6.1 apart, beyond the 5/2 reach limit,
     so C1 cannot be picked up through gate1 from L2.)
     Superseded by the user's start corrections below: C2 starts at L2, C3 at L3.
  7. Smoke search after start corrections (C2 at L2, C3 at L3; analysis rev 3 addenda),
     cloud container (2 cores), 2026-11-05, assistant-run, *threads* 16.
     Depth 10: still searching after about 15 min (711 tasks generated at depths 0-5);
     stopped.  User reduced *depth-cutoff* to 7.
     Depth 7: completed normally in 37.3 s; 75,285 states processed, 91.3% repeats,
     4,351 depth-cutoff hits, average branching 34.2, 4,082 inconsistent states
     abandoned (same oscillation mechanism as item 5, not re-diagnosed), no errors,
     no solution within 7 steps.  Bounded smoke check: passed (operation, not a
     solution or a benchmark).
  8. Combined check with E1 and E2 enabled, depth 7, *threads* 16, 2026-11-05: completed
     normally in 43.1 s; 75,285 states, 4,078 inconsistent abandoned, no solution.
     Staging prints "caught 6 WARNING conditions" from engine files (undefined
     variables *closed-shards*, *closed-shard-locks*, *first-solution-found* in
     ww-parallel-infrastructure.lisp) under the cloud SBCL 2.2.9 load -- engine/
     environment, not the spec; to be confirmed on Windows at final review.
  9. Connector link cap (tech change, claude/connector-link-cap-plan.md), cloud SBCL
     2.2.9, 2026-11-05, assistant-run.  Tech now caps every link naming a connector
     (both sides, retained links included) at *max-connector-pairings*.  Replays from
     the real start: C1 held retaining 2 links (R1b T1b) is offered only single-terminus
     connects, never an already-linked terminus, each leaving C1 at 3 links; C1 held
     retaining 3 links is offered no connect-connector (put-connector only).  Throwaway
     variants (problem-intersect-1/-2, copy only): C3 with 2 links (one incoming from C2)
     is still offered as a terminus; with 3 links it is never offered.
     (report-symmetry-safety): connector family kept, passes the full check.
     (test-topo) passes.  (test-talos): 126 of 128 pass, 0 of 26 mutants survive;
     beam-crossing-ties-test passes rerun alone (its failure was a staging collision
     with a concurrent replay); beam-relay-test passes rerun alone after its
     final-state connectable-terminus checks were updated for the no-re-link rule.
     A full (test-talos) on Windows is the remaining confirmation.

  10. Reachability removal, cloud SBCL 2.2.9 (fresh clone of HEAD 4b4cd81 plus the spec
     edit), 2026-11-05, assistant-run.  Depth 7, *threads* 16, E1/E2 on.  With and
     without (include-tech reachability): identical -- 5,721 states, 3,534 repeats,
     31 inconsistent abandoned, branching 4.3, no solution, 2.1 s.  (The earlier
     75,285 figure predates the link cap of item 9.)

  11. Final review, 2026-11-05.  Final revision = check 10's no-reachability file.
     Staging of INTERSECT itself: no warnings or errors.  The container's system load
     prints 153 'undefined variable' WARNINGs from src/ engine files, all before the
     problem is staged (engine/environment, fresh SBCL 2.2.9 compile); Windows
     confirmation pending.  Bounded run = check 10 (depth 7, *threads* 16, E1/E2 on):
     completed normally, no solution.  Pass.
  12. Diagram vs spec (user request), 2026-11-05, intersect-diagram.png read at full
     resolution.  Boundary, w1-w10, WIN1-4, G2-G4, all six fixtures, L1-L7, starts of
     A1/C1-C3, P1, LD1 agree with the spec.  One question for the user: near R1b the
     y=6 line looks dashed from about x=12.5, while the spec (and rev 3 analysis) puts
     G1 at x14-17.  User confirmed G1 x14-17 (2026-11-05); no change.  Unlabeled marks assumed stray: a dot just outside the top wall at
     about x=16.4 and a tick on the top wall at x=17; erased circles in the central room.
  13. Windows confirmation (user-run), 2026-11-05, final revision.  *threads* 16: identical
     to the container (5,721 states, 3,534 repeats, 842 cutoff hits, 31 inconsistent,
     branching 4.3, no solution, 0.5 s).  Serial run: same 5,721/3,534/842/1,345, with
     14 inconsistent and branching 2.6 (serial vs parallel counting, as in check 5).

READINESS AND OPEN ISSUES
  Status: Specification complete for the agreed scope (2026-11-05).
  Windows staging of the final revision: no warnings or notes (user, 2026-11-05).
  Resolved: window reach (reachability tech removed, check 10); agent presses P1 via step
  tech (3d); C2/C3 starts (7); connector link cap (9); G1 extent x14-17 (12); all
  sections and E1, E2 shown and approved.
  Remaining, not blocking: a full (test-talos) on Windows for the link-cap tech change
  (item 9); the container's engine-load warnings did not occur on Windows.
  Deferred to the search advisor: maximum feasible depth and plan length; omitting
  retaining pickup (D3); a stronger min-steps-remaining? bound; E1 benefit at depth;
  connect-connector branching at the cap of 3.

HANDOFF AND NEXT STEP
  Handoff: spec-analysis-search-handoff.txt.  The search-advisor phase is not yet
  authorized.

CORRECTIONS AND HISTORY
  None.

  14. Revision 2: location8 (L8) at (15,8) added (user, 2026-11-07, diagram updated), cloud
     SBCL 2.2.9, assistant-run.  Edit: location8 in the location type; (location-coords>
     location8 15 8).  Stages without errors (L8 lies on the y=8 and x=15 lines; coincident
     crossings handled by the tie fix of check 1).  Walking: L8 <-> L2 free; L8 <-> L1 via
     gate1; L8 <-> L3 via gate2; L4/L5/L6 via gate2+gate3; L7 via gate2+gate3+gate4 --
     matches the central-room placement.  No REACH-VIA facts (nearest location, L1, is 3
     away, beyond the 5/2 reach limit).  Depth 7, *threads* 16: 5,705 states, 3,509 repeats,
     10 inconsistent abandoned, no solution, 0.7 s.  Windows staging not yet confirmed.
  15. Revision 3: location9 (L9) at (10,8) added (user, 2026-11-08; problem analysis rev 5),
     made in the solving-advisor session.  Edit: location9 in the location type;
     (location-coords> location9 10 8).  Staging, walking/visibility review and the static
     profile regeneration: pending.
  16. Revision 4: location10 (L10) at (8,1) and location11 (L11) at (2,15) added; location4
     and location5 removed (solving-advisor reanalysis, user-approved 2026-11-10; problem
     analysis rev 6).  Edit: the location type; two (location-coords> ...) facts added, two
     removed.  With all 11 locations staging fails: "Design Limit Error: Total number of
     planning objects exceeds 999" (crossing records; cloud SBCL 2.2.9).  With 9 locations
     it stages; the 40 accepted actions replay from the start with success T and goal
     satisfied (cloud, assistant-run; confirmed by the user on Windows, 2026-11-10).  The
     static profile is stale (generated before revision 3); not regenerated.  Wrap-up (user,
     2026-11-10): the probe copy problem-intersect-1.lisp and the stale static profile were
     removed; only the final spec is kept.
