Reversing to pick up multiple cars, cars were added to the train in the wrong sequence. #17

Closed
opened 2026-08-26 03:04:46 +00:00 by Jesse.Markowitz · 1 comment
Owner

Cars were West to East Caboose, Loaded boxcar, Loaded boxcar, Loaded boxcar. after backing into that square cars were attached to the train Loaded boxcar, Loaded boxcar, Loaded boxcar, Caboose, Engine. See attached game - last moves.

Cars were West to East Caboose, Loaded boxcar, Loaded boxcar, Loaded boxcar. after backing into that square cars were attached to the train Loaded boxcar, Loaded boxcar, Loaded boxcar, Caboose, Engine. See attached game - last moves.
Author
Owner

Fixed in v0.7.2 (2ab25e3) and v0.4.9h (e9683cc).

The square was a sw curve and the train backed in through its south leg. standing runs
west to east, and both places that walk that row asked the PORT which end they were at: the movement
walk reversed the row for an east entry and nothing else, and cutTowards answered "you meet
nothing" for a north or south exit. Neither is a property of the port — a 45° leg leaves through the
MIDDLE of its edge, so its end of the run is whichever end the arc does not reach. A sw curve's
south leg is the row's east end; an se curve's south leg is its west end. Same port,
opposite answers, which is why it has to ask the card.

rowEndAt answers it, and cutTowards is narrowed from a port to an end-of-row so the type checker
forces every caller to resolve rather than leaving a fourth to be found later.

The second half was live too, and it is a report we had failed to reproduce. With cutTowards
returning nothing for a leg, a crew standing on a curve and pulling out through it drove away
leaving its own cut standing
— against §A.4's mandatory coupling. That is "cars left behind when
backing up over them", carried as NOT REPRODUCED since 2026-08-22: the earlier sweep had tried the
own-cut case only with an east or west exit, never with a 45° leg.

That report's second sentence — "I can later drive right through them" — is still unexplained. A card
is swept whenever a train enters it, whichever port it enters by, so a later pass should pick those
cars up. It stays open in TODO.md until someone has a board for it.

Fixed in **v0.7.2** (`2ab25e3`) and **v0.4.9h** (`e9683cc`). The square was a `sw` **curve** and the train backed in through its **south leg**. `standing` runs west to east, and both places that walk that row asked the PORT which end they were at: the movement walk reversed the row for an east entry and nothing else, and `cutTowards` answered "you meet nothing" for a north or south exit. Neither is a property of the port — a 45° leg leaves through the MIDDLE of its edge, so its end of the run is whichever end the arc does not reach. A `sw` curve's south leg is the row's **east** end; an `se` curve's south leg is its **west** end. Same port, opposite answers, which is why it has to ask the card. `rowEndAt` answers it, and `cutTowards` is narrowed from a port to an end-of-row so the type checker forces every caller to resolve rather than leaving a fourth to be found later. **The second half was live too, and it is a report we had failed to reproduce.** With `cutTowards` returning nothing for a leg, a crew standing on a curve and pulling out through it **drove away leaving its own cut standing** — against §A.4's mandatory coupling. That is "cars left behind when backing up over them", carried as NOT REPRODUCED since 2026-08-22: the earlier sweep had tried the own-cut case only with an east or west exit, never with a 45° leg. That report's second sentence — "I can later drive right through them" — is still unexplained. A card is swept whenever a train enters it, whichever port it enters by, so a later pass should pick those cars up. It stays open in `TODO.md` until someone has a board for it.
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Jesse.Markowitz/station-master#17