Skip to content

fix(enforcement): point a pulled CDL at waiting, and refuse a bobtail - #259

Open
Orinks wants to merge 5 commits into
feat/career-2.0from
wip/cdl-disqualified-guidance
Open

Orinks wants to merge 5 commits into
feat/career-2.0from
wip/cdl-disqualified-guidance

Conversation

@Orinks

@Orinks Orinks commented Sep 27, 2026 •

Copy link
Copy Markdown
Owner

Two existing bugs on feat/career-2.0, separate from #256.

  • Hub objective with a pulled CDL. terminal_objective_clause told a suspended or disqualified driver to open the dispatch board and accept the trainer load, but the board refuses (board.rs accept) and the hub offers "Wait out the CDL suspension". The objective now says to wait out the suspension or disqualification, with the days remaining. A lifetime disqualification gets no driving objective, since the greeting already says the career is over.
    • Example: "First-day objective: wait out the CDL disqualification, 365 days remaining. Wait out the CDL suspension on this menu sits it out in one go."
  • Owner-operator bobtail. "Bobtail to a nearby city" (terminal.rs bobtail, and BobtailDestState::start) didn't check the CDL. Both now refuse the same way the board does.
    • Example: "You cannot drive, not even empty, while your CDL is disqualified. It clears Thursday, March 21. Wait out the CDL suspension is on the terminal menu."

Other drive entry points checked: every board path (deadhead, relay, home-yard pickup, reposition) goes through the gated accept. The loaded departure from the pickup facility is reached only through an accepted job. A suspension on the road ends the run through RoadsideExit.

Tests (states_city): test_a_disqualified_new_hire_is_told_to_wait_it_out_not_to_take_a_load, test_a_suspended_driver_is_told_to_wait_out_the_suspension, test_a_lifetime_disqualification_has_no_driving_objective, test_a_disqualified_owner_operator_cannot_bobtail.

Also in this PR

  • fix(terminal): on a debt firing or repossession, CityMenuState::announce_entry used to speak the old hub line and "Dispatch board. 1 of 16." before the setback notice. The setback check now runs first. The notice speaks alone, and leaving it re-enters the terminal, which speaks the rebuilt hub. After merging feat(carriers): slice 3 regional, local, and Alaska carriers #258, the order is: setback notice (takes the screen), then the record-firing line, then the hub. Test: test_a_debt_firing_is_said_before_the_rebuilt_hub_not_after_the_old_one.
  • fix(business): with no carrier, Stay a company driver now says "Staying on the company-driver path." Test: test_staying_with_no_carrier_stays_on_the_path_not_in_a_seat.
  • Merged origin/feat/career-2.0 after feat(carriers): slice 3 regional, local, and Alaska carriers #258 landed. Conflicts in announce_entry, terminal_objective_clause (the CDL wait comes before the no-carrier objective) and states_city.rs were resolved.

The terminal's first-day and career objective told a suspended or disqualified driver to open the dispatch board and accept a load the board refuses. It now says to wait out the suspension or disqualification with the days remaining, and says nothing about driving for a lifetime disqualification. An owner-operator's Bobtail to a nearby city now refuses with the date the CDL clears, from the terminal row and from an open destination menu, the same as the board.
…squalified-guidance

# Conflicts:
#	crates/freight-fate/src/states/city.rs
#	crates/freight-fate/src/states/city/terminal.rs
#	crates/freight-fate/tests/it/states_city.rs
The terminal row reads Wait out the CDL disqualification or Wait out
the CDL suspension, and its help and result follow. The objective says
to choose that row to skip ahead. The bobtail refusal says not even
bobtail, when the disqualification or suspension ends, and where to
wait it out. ROADMAP notes CDL reinstatement fees and the lifetime
reinstatement rule are not modeled.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant