Driver Management carries thirty-two system requirements grouped into five sets: Driver Onboarding & Identity (8), Vehicle Registration & Eligibility (4), Driver Availability (5), Driver Ratings & Suspension (10), and Driver Management — Non-Functional (5). Every requirement is an EARS sentence scoped to the DriverManagement bounded context. The onboarding set establishes a multi-state verification lifecycle — from pendingVerification through verified to suspended, appealInReview, or permanentlySuspended — built around third-party identity checks, vehicle inspection, and document expiry. The availability set separates eligible to drive from actually online. The ratings set enforces a quality floor through average-rating monitoring with an explicit human-review gate before any ratings-only suspension, and a due-process appeal path with an immutable audit trail.


requirements "Driver Onboarding & Identity" scoped-to DriverManagement {
  prd-source "ride-now.prd"

  REQ-DRV-001 "Driver application" : event-driven
    source "Feature: Driver onboarding and identity verification — Story: Submit identity and license documents — AC: Driver can upload ID, licence, and selfie"
    :: "Every driver must go through onboarding before being offered a ride"
    "When a person submits a driver application, the Driver Management
     system shall create a driver profile in pending-verification status."
    priority must

  REQ-DRV-002 "Identity document capture" : event-driven
    source "Feature: Driver onboarding and identity verification — Story: Submit identity and license documents — AC: Driver can upload government-issued ID, driver's licence, and selfie from the app"
    :: "Regulatory requirement — drivers must prove identity before activation"
    "When a driver uploads identity and licence documents, the Driver
     Management system shall store the documents and initiate identity
     verification with the certified third-party provider."
    priority must

  REQ-DRV-003 "Verification status visibility" : ubiquitous
    source "Feature: Driver onboarding and identity verification — Story: Submit identity and license documents — AC: Driver sees the verification status at every step"
    :: "Status opacity is a top driver onboarding frustration"
    "The Driver Management system shall expose the driver's verification
     status — submitted, under review, verified, or rejected — on the
     driver app at every step."
    priority must

  REQ-DRV-004 "No rides before verification" : state-driven
    source "Feature: Driver onboarding and identity verification — Story: Submit identity and license documents — AC: Driver is offered no rides while status is not verified"
    :: "Safety obligation — no unverified driver reaches a rider"
    "While the driver is not in verified status, the Driver Management
     system shall prevent the driver from receiving any ride offer."
    priority must

  REQ-DRV-005 "Verification success transition" : event-driven
    source "Feature: Driver onboarding and identity verification — Story: Submit identity and license documents — AC: Verified status unlocks ride offers"
    :: "Clear onboarding outcome triggers activation"
    "When the identity verification provider returns a successful result,
     the Driver Management system shall transition the driver to verified
     status and publish a DriverVerified event."
    priority must

  REQ-DRV-006 "Verification rejection with reason" : unwanted
    source "Feature: Driver onboarding and identity verification — Story: Submit identity and license documents — AC: On rejection, driver sees the specific reason and the appeal path"
    :: "Opaque deactivation is a top driver frustration — reasons are mandatory"
    "If the identity verification provider returns a negative result,
     then the Driver Management system shall reject the application,
     record the specific rejection reason, notify the driver with the
     reason and the appeal path."
    priority must

  REQ-DRV-007 "Estimated time to verify" : ubiquitous
    source "Feature: Driver onboarding and identity verification — Story: Know how long verification will take — AC: Driver sees an estimated time-to-verify on the status screen"
    :: "Drivers need to plan when they can start earning"
    "The Driver Management system shall display an estimated time-to-verify
     on the driver status screen while verification is in progress."
    priority should

  REQ-DRV-008 "Verification status change notification" : event-driven
    source "Feature: Driver onboarding and identity verification — Story: Know how long verification will take — AC: Driver receives a notification within 24 hours of status change"
    :: "Asynchronous verification — drivers must not refresh the app to learn outcome"
    "When the driver's verification status changes, the Driver Management
     system shall notify the driver through the app and push channel
     within 24 hours of the change."
    priority must
}


requirements "Vehicle Registration & Eligibility" scoped-to DriverManagement {
  prd-source "ride-now.prd"

  REQ-DRV-020 "Vehicle registration" : event-driven
    source "Feature: Vehicle registration and inspection — Story: Register a vehicle with documents — AC: Driver can upload registration, insurance, and inspection documents"
    :: "Every ride is served by a documented vehicle — regulatory and insurance"
    "When a driver registers a vehicle, the Driver Management system
     shall store the vehicle details with its registration, insurance,
     and inspection documents, and associate the vehicle with the driver."
    priority must

  REQ-DRV-021 "Vehicle eligibility requires valid documents" : ubiquitous
    source "Feature: Vehicle registration and inspection — Story: Register a vehicle with documents — AC: Vehicle is marked eligible only when all required documents are valid and unexpired"
    :: "Fleet safety and regulatory compliance"
    "The Driver Management system shall mark a vehicle eligible only
     when the vehicle's registration, insurance, and inspection documents
     are all present, valid, and unexpired."
    priority must

  REQ-DRV-022 "Document expiry deactivates vehicle" : unwanted
    source "Feature: Vehicle registration and inspection — Story: Register a vehicle with documents — AC: When any document expires, the vehicle is automatically marked ineligible and the driver is notified"
    :: "Expired documents create legal liability and insurance gaps"
    "If any of a vehicle's registration, insurance, or inspection documents
     expires, then the Driver Management system shall mark the vehicle
     ineligible and notify the driver to upload renewed documents."
    priority must

  REQ-DRV-023 "Ineligible vehicle prevents online" : state-driven
    source "Feature: Vehicle registration and inspection — Story: Register a vehicle with documents — AC: Expired means unavailable"
    :: "Ineligible vehicles must not serve rides"
    "While the driver's selected vehicle is ineligible, the Driver
     Management system shall prevent the driver from going online in
     that vehicle."
    priority must
}


requirements "Driver Availability" scoped-to DriverManagement {
  prd-source "ride-now.prd"

  REQ-DRV-030 "Go online" : complex
    source "Feature: Driver availability — Story: Toggle online and offline with one tap — AC: Online toggle is a single tap, confirmed within 1 second"
    :: "Drivers control their hours — the toggle must feel instant"
    "While the driver is verified, not suspended, and has an eligible
     selected vehicle, when the driver requests to go online, the Driver
     Management system shall transition the driver to online status
     within one second and publish a DriverWentOnline event."
    priority must

  REQ-DRV-031 "Go offline" : event-driven
    source "Feature: Driver availability — Story: Toggle online and offline with one tap — AC: Offline driver receives no ride offers"
    :: "Drivers stop their session at will"
    "When an online driver requests to go offline, the Driver Management
     system shall transition the driver to offline status and publish
     a DriverWentOffline event."
    priority must

  REQ-DRV-032 "Online driver match-eligibility" : state-driven
    source "Feature: Driver availability — Story: Toggle online and offline with one tap — AC: Online driver is visible to the matching system with a current location"
    :: "Matching sees only eligible, currently-located drivers"
    "While the driver is online, the Driver Management system shall
     expose the driver as match-eligible to the Ride Management system
     together with the driver's current location."
    priority must

  REQ-DRV-033 "Suspended driver cannot go online" : state-driven
    source "Feature: Driver rating and suspension — Story: Review suspension with full context — AC: Suspension prevents new rides"
    :: "Safety enforcement — suspended drivers must not reach riders"
    "While the driver is suspended, the Driver Management system shall
     reject any attempt to go online."
    priority must

  REQ-DRV-034 "Automatic offline on stale position" : unwanted
    source "Feature: Real-time driver positioning — AC: Stale positions older than 60 seconds mark the driver ineligible for matching"
    :: "Ghost online drivers degrade matching — remove them after timeout"
    "If an online driver's last position update is older than 60 seconds,
     then the Driver Management system shall transition the driver to
     offline, notify the driver, and publish a DriverWentOffline event."
    priority must
}


requirements "Driver Ratings & Suspension" scoped-to DriverManagement {
  prd-source "ride-now.prd"

  REQ-DRV-040 "Rating submission" : event-driven
    source "Feature: Driver rating and suspension — Story: See current rating and trajectory — AC: Rating average is updated after each ride"
    :: "Rider feedback drives quality — collected after every completed ride"
    "When a rider submits a rating for a completed ride, the Driver
     Management system shall record the rating and recompute the
     driver's average rating."
    priority must

  REQ-DRV-041 "Rating range" : ubiquitous
    source "Feature: Driver rating and suspension — Story: See current rating and trajectory — AC: Ratings outside 1-5 rejected"
    :: "Rating must be 1 to 5 — no gaming"
    "The Driver Management system shall accept ratings only in the
     integer range one through five inclusive."
    priority must

  REQ-DRV-042 "Rating visibility to driver" : ubiquitous
    source "Feature: Driver rating and suspension — Story: See current rating and trajectory — AC: Driver can see current rating and its 30-day trend"
    :: "Transparency — drivers must know where they stand"
    "The Driver Management system shall expose the driver's current
     average rating and its 30-day trend in the driver app."
    priority must

  REQ-DRV-043 "Warning at warning threshold" : complex
    source "Feature: Driver rating and suspension — Story: See current rating and trajectory — AC: Driver is notified when rating crosses the warning threshold"
    :: "Give drivers a chance to correct before suspension"
    "While the driver has completed more than 20 rides, if the driver's
     average rating drops below 4.2, then the Driver Management system
     shall send the driver a warning notification with the rating
     threshold and the suspension policy."
    priority must

  REQ-DRV-044 "Suspension proposal on sustained low rating" : complex
    source "Feature: Driver rating and suspension — Story: Review suspension with full context — AC: Suspension proposals queue with ride trace, rating history, prior incidents, and payout state"
    :: "Chronic low quality endangers riders — proposals are reviewed, not auto-executed"
    "While the driver has completed more than 20 rides, if the driver's
     average rating drops below the suspension threshold, then the Driver
     Management system shall create a suspension proposal in the operator
     review queue with the driver's ride trace, rating history, prior
     incidents, and current payout state."
    priority must

  REQ-DRV-045 "Operator decision is logged" : event-driven
    source "Feature: Driver rating and suspension — Story: Review suspension with full context — AC: Operator decision is logged with reason and timestamp in a permanent audit trail"
    :: "Regulatory and internal audit requires every decision to be traceable"
    "When a trust and safety operator approves, rejects, or escalates
     a suspension proposal, the Driver Management system shall record
     the decision with the operator identity, reason, and timestamp
     in a permanent audit trail."
    priority must

  REQ-DRV-046 "No automatic ratings-only deactivation" : ubiquitous
    source "Feature: Driver rating and suspension — non-goals: Deactivate a driver automatically without a human review for ratings-only reasons"
    :: "Opaque deactivation is a top driver frustration — human review is mandatory for ratings-only suspensions"
    "The Driver Management system shall not execute a deactivation or
     suspension triggered solely by rating thresholds without a trust
     and safety operator approval."
    priority must

  REQ-DRV-047 "Rating appeal" : event-driven
    source "Feature: Driver rating and suspension — Story: See current rating and trajectory — AC: Driver can open an appeal on any rating below 3 with a free-text reason"
    :: "Due process — one unfair rating must not jeopardize income"
    "When a driver opens an appeal on a rating below 3, the Driver
     Management system shall record the appeal with the free-text
     reason and place it in the operator review queue."
    priority should

  REQ-DRV-048 "Suspension appeal" : event-driven
    source "Job: Protect my rating from unfair complaints — outcome: Minimize the time between filing an appeal and receiving a decision"
    :: "Due process — drivers can contest suspensions"
    "When a suspended driver submits an appeal, the Driver Management
     system shall record the appeal and transition the driver to
     appeal-in-review status."
    priority should

  REQ-DRV-049 "Appeal resolution" : event-driven
    source "Job: Protect my rating from unfair complaints — outcome: Maximize the transparency of how rating and suspension decisions are made"
    :: "Backoffice resolves appeals — reinstate or confirm suspension"
    "When an operator resolves a suspension appeal, the Driver
     Management system shall transition the driver to either verified
     or permanently-suspended status, record the resolution rationale,
     and notify the driver."
    priority should
}


requirements "Driver Management — Non-Functional" scoped-to DriverManagement {
  prd-source "ride-now.prd"

  REQ-DRV-NFR-001 "Identity verification SLA" : event-driven
    source "Assumption: Third-party identity verification meets our SLA"
    depends-on REQ-NFR-010
    :: "Onboarding throughput depends on third-party SLA adherence"
    "When the Driver Management system submits an identity verification
     request to the third-party provider, the Driver Management system
     shall receive a decision within 48 hours at p95 or escalate to
     manual review."
    priority must

  REQ-DRV-NFR-002 "Document storage encryption at rest" : ubiquitous
    source "Constraint: GDPR and equivalent privacy regimes"
    depends-on REQ-NFR-020
    :: "Identity and licence documents are sensitive PII"
    "The Driver Management system shall store driver identity documents,
     licences, and selfies encrypted at rest using at least AES-256."
    priority must

  REQ-DRV-NFR-003 "Document retention and erasure" : ubiquitous
    source "Constraint: GDPR and equivalent privacy regimes"
    depends-on REQ-NFR-022
    :: "GDPR right to erasure; regulatory minimum retention"
    "The Driver Management system shall retain driver identity documents
     for the regulatory minimum retention period applicable in the
     driver's market and shall delete them within 30 days of a valid
     erasure request made after deactivation."
    priority must

  REQ-DRV-NFR-004 "Go-online response time" : event-driven
    source "Feature: Driver availability — AC: Online toggle is a single tap, confirmed within 1 second"
    :: "Driver-facing latency budget from the PRD acceptance criterion"
    "When a driver requests to go online, the Driver Management system
     shall confirm the transition to the driver app within 1 second
     at p95."
    priority must

  REQ-DRV-NFR-005 "Audit trail immutability" : ubiquitous
    source "Feature: Driver rating and suspension — AC: Operator decision is logged with reason and timestamp in a permanent audit trail"
    :: "Regulatory audits and driver classification disputes depend on immutable trails"
    "The Driver Management system shall store all suspension, deactivation,
     and appeal decisions in an append-only audit log retained for at
     least seven years."
    priority must
}

Summary

Pattern Count
ubiquitous 9
state-driven 5
event-driven 14
unwanted 3
complex 3
Total 32 (28 must, 4 should)
Set Total Must Should
Driver Onboarding & Identity 8 7 1
Vehicle Registration & Eligibility 4 4 0
Driver Availability 5 5 0
Driver Ratings & Suspension 10 7 3
Driver Management — Non-Functional 5 5 0

Cross-Context Dependencies

Requirement Depends on Nature
REQ-DRV-002 (Identity document capture) IdentityVerificationProvider (external) DRV → Provider: submit documents and receive verification decision
REQ-DRV-005 (Verification success) IdentityVerificationProvider (external) DRV ↔ Provider: consume positive decision and transition to verified
REQ-DRV-006 (Verification rejection) IdentityVerificationProvider (external) DRV ↔ Provider: consume negative decision and reject application
REQ-DRV-032 (Online driver match-eligibility) Ride Management DRV → Ride: expose match-eligible online drivers with current location
REQ-DRV-034 (Automatic offline on stale position) Geolocation & Routing Geo → DRV: DriverPositionStale consumed via ACL and translated to GoOffline(reason=stalePosition)
REQ-DRV-040 (Rating submission) Ride Management Ride → DRV: RideCompleted carries driverRating, bridged into SubmitRating
REQ-DRV-044 (Suspension proposal) Ride Management Ride → DRV: DriverNoShowRecorded and ride history feed proposal context
REQ-DRV-NFR-001 (Identity verification SLA) REQ-NFR-010 (platform NFR) DRV inherits the platform third-party-SLA budget
REQ-DRV-NFR-002 (Document encryption) REQ-NFR-020 (platform NFR) DRV inherits the platform encryption-at-rest baseline
REQ-DRV-NFR-003 (Document retention) REQ-NFR-022 (platform NFR) DRV inherits the platform retention/erasure policy

Cross-context obligations materialize in the Domain Model page as a Customer/Supplier relationship to Ride Management (rating bridge), an Anti-Corruption Layer to Geolocation & Routing (stale-position translation), and Conformist boundaries to the certified third-party identity provider and the encrypted document store.