Skip to content

Audit Trail Specifications

Document ID: PLCY-AUD-001
Version: 1.2
Effective Date: January 21, 2026
Last Review: January 21, 2026
Owner: Hop And Haul Team


CONFIDENTIAL

This document is CONFIDENTIAL and for internal use only. Do not distribute outside the organization.

1. Purpose

This document specifies the audit trail requirements for Hop And Haul, ensuring complete, immutable, and queryable records of all system activities for SOC II compliance, DOT audits, and insurance disputes.


2. Audit Trail Principles

2.1 Core Requirements

PrincipleImplementation
CompleteAll significant events logged
AccurateTimestamps and data verified
ImmutableAppend-only, no modifications
TimelyReal-time or near-real-time logging
AccessibleQueryable for authorized users
RetainedPer defined retention schedule

2.2 Non-Repudiation

All logged events must be:

  • Traceable to a specific actor (user or system)
  • Timestamped with server time (not client)
  • Cryptographically verifiable
  • Tamper-evident

3. Events to Log

3.1 Transport Lifecycle Events

EventTriggerData Captured
REQUEST_CREATEDDriver submits transport requestDriver ID, location, time window, reason
REQUEST_UPDATEDRequest details modifiedChanged fields, timestamp
REQUEST_CANCELLEDRequest withdrawnCancellation reason, timestamp
MATCH_IDENTIFIEDSystem finds compatible driverMatch score, candidate list
OFFER_SENTOffer presented to driverOffer details, recipient
OFFER_VIEWEDDriver opens offerView timestamp
OFFER_ACCEPTEDDriver accepts offerAcceptance timestamp
OFFER_REJECTEDDriver declines offerRejection timestamp
OFFER_EXPIREDOffer times outExpiration timestamp
SAMSARA_MESSAGE_SENTSamsara Message sent via APIoffer_id, driver_id, template_id, driver_state
SAMSARA_MESSAGE_DELIVEREDAPI confirms deliverymessage_id, delivery_timestamp
SAMSARA_MESSAGE_FAILEDAPI error on senderror_code, error_message
SAMSARA_RESPONSE_RECEIVEDPolling detects responsedriver_id, raw_response_hash, parsed_intent
SAMSARA_RESPONSE_TIMEOUTTimeout without responseoffer_id, timeout_duration, voice_fallback_triggered
SAMSARA_CLARIFICATION_SENTClarification message sentoffer_id, driver_id
VOICE_FALLBACK_INITIATEDVoice call after message timeoutoffer_id, fallback_reason
OFFER_CONFIRMED_VIA_MESSAGEOffer accepted via Samsara textoffer_id, response_text_hash
OFFER_DECLINED_VIA_MESSAGEOffer declined via Samsara textoffer_id, response_text_hash
VOICE_CALL_LOGGEDAutomated dispatcher call logged (per PLCY-COM-001 5.1)timestamp, driver_id, opportunity_id, response_received, time_to_response
DRIVER_PAUSE_REQUESTEDDriver requested pause from automated callsdriver_id, pause_timestamp, pause_duration
DRIVER_PAUSE_ENDEDDriver pause period endeddriver_id, resume_timestamp, pause_duration_actual
OPPORTUNITY_HISTORY_REQUESTEDDriver requested opportunity history reviewdriver_id, date_range, fulfillment_timestamp
VALIDATION_PASSEDPre-pickup checks clearCheck results
VALIDATION_FAILEDPre-pickup check failsFailed check, reason
PICKUP_CONFIRMEDPassenger in vehicleConfirmation timestamp, location
RIDE_STARTEDTracking beginsStart timestamp, route
ROUTE_DEVIATIONUnexpected route changeDeviation details
UNPLANNED_STOPVehicle stops unexpectedlyStop location, duration
DROPOFF_CONFIRMEDPassenger deliveredCompletion timestamp, location
RIDE_COMPLETEDTransaction finalizedFinal status
RATING_SUBMITTEDDriver submits ratingRating category, score (not content)
PAYMENT_INITIATEDSettlement triggeredAmount, method
PAYMENT_COMPLETEDSettlement confirmedConfirmation reference

3.2 Security Events

EventTriggerData Captured
AUTH_SUCCESSSuccessful loginUser, method, IP, device
AUTH_FAILUREFailed login attemptUser (if known), IP, reason
AUTH_LOCKOUTAccount lockedUser, trigger reason
SESSION_STARTSession createdUser, session ID, IP
SESSION_ENDSession terminatedReason (logout, timeout, forced)
ACCESS_GRANTEDResource access allowedUser, resource, permission
ACCESS_DENIEDResource access blockedUser, resource, reason
PRIVILEGE_ESCALATIONRole/permission changeUser, old role, new role
DATA_EXPORTData exported from systemUser, data type, record count

3.3 Configuration Events

EventTriggerData Captured
CONFIG_CHANGEDSystem setting modifiedSetting, old value, new value
USER_CREATEDNew user accountUser details, creator
USER_MODIFIEDUser account changedChanged fields
USER_DEACTIVATEDAccount disabledReason, deactivator
ROLE_ASSIGNEDRole granted to userUser, role, grantor
ROLE_REVOKEDRole removed from userUser, role, revoker

3.4 System Events

EventTriggerData Captured
SYSTEM_STARTApplication startupVersion, environment
SYSTEM_STOPApplication shutdownReason
INTEGRATION_CALLExternal API calledTarget, request summary, response code
INTEGRATION_ERRORExternal API failureTarget, error details
SCHEDULED_JOBAutomated task runsJob name, result
ERROR_LOGGEDApplication errorError type, stack trace

4. Log Record Structure

4.1 Standard Fields

Every log record contains:

json
{
  "log_id": "uuid-v4",
  "event_type": "EVENT_NAME",
  "timestamp": "2025-01-15T14:30:00.000Z",
  "actor_type": "user|system|service",
  "actor_id": "[tokenized or service name]",
  "session_id": "[if applicable]",
  "ip_address": "[masked if user]",
  "resource_type": "[entity type]",
  "resource_id": "[entity id]",
  "action": "create|read|update|delete|execute",
  "outcome": "success|failure",
  "details": {
    // Event-specific data
  },
  "checksum": "[integrity hash]"
}

4.2 Tokenization Rules

FieldTokenization
User IDsPseudonymized, reversible by security team
Driver IDsPseudonymized, reversible by ops
Session IDsRandom UUID, not linked to user directly
IP addressesLast octet masked for users
Device IDsHashed, irreversible
Location dataStored as coordinates only

5. Log Integrity

5.1 Immutability Controls

ControlImplementation
Append-only storageWrite-once log storage
No delete operationsPhysical deletion blocked
No update operationsModification blocked
VersioningAll changes create new records

5.2 Tamper Detection

MethodImplementation
Record checksumsSHA-256 hash per record
Chain linkingEach record references previous
Periodic verificationAutomated integrity checks
External archivalCopies to separate system

5.3 Chain Structure

Record N:
  checksum: SHA256(record_data)
  prev_checksum: [checksum of Record N-1]

Record N+1:
  checksum: SHA256(record_data)
  prev_checksum: [checksum of Record N]

6. Retention Schedule

See PLCY-RET-001 Records Retention Policy for authoritative retention schedule.

6.1 Retention by Category

Log CategoryRetentionJustification
Transport events24 monthsDOT audit window
Security events24 monthsSecurity analysis + forensics
Configuration events24 monthsChange tracking
System events12 monthsOperational debugging
Error logs6 monthsTroubleshooting

Retention periods aligned with PLCY-RET-001. Refer to that document for legal hold procedures.

6.2 Retention Extensions

ScenarioAction
Active investigationPreserve until resolved
Legal holdIndefinite preservation
Audit in progressPreserve until completion
Dispute filedPreserve until resolution

6.3 Disposal Process

StepAction
1Automated identification of expired logs
2Verification no hold applies
3Secure deletion (overwrite)
4Disposal logged
5Confirmation record created

7. Access Controls

7.1 Log Access Matrix

RoleAccess Level
Operations/SafetyRead transport events (filtered)
Security teamRead all events
AuditorsRead all events (time-limited)
System administratorsRead system events
DriversRead own events only

7.2 Query Restrictions

RestrictionImplementation
Time-bounded queriesMaximum 90-day range
Result limitsMaximum 10,000 records per query
Rate limitingQueries per minute capped
Export approvalLarge exports require approval

8. Query Capabilities

8.1 Standard Queries

Query TypeParameters
By transactiontransaction_id
By driverdriver_id + date range
By event typeevent_type + date range
By outcomesuccess/failure + date range
By time rangestart_time + end_time

8.2 Audit Response Queries

Regulatory NeedQuery Support
DOT: Transport documentationAll events for ride ID
Insurance: Incident timelineEvents by time + location
Legal: User activityAll events by user ID
Compliance: Access reviewSecurity events by user

8.3 Export Formats

FormatUse Case
JSONAPI consumption
CSVSpreadsheet analysis
PDFFormal audit reports

9. Monitoring & Alerting

9.1 Log Monitoring

ConditionAlert
Log ingestion failureImmediate (critical)
Integrity check failureImmediate (critical)
Unusual event volumeWithin 5 minutes
Access pattern anomalyWithin 15 minutes
Retention job failureNext business day

9.2 Health Metrics

MetricThreshold
Log latency< 5 seconds from event
Storage utilizationAlert at 80%
Query response time< 10 seconds
Integrity check pass rate100%

10. Document Control

VersionDateAuthorChanges
1.0[DATE][NAME]Initial release
1.1January 2, 2026Hop And Haul TeamAdded Samsara Messages event types: SAMSARA_MESSAGE_SENT, SAMSARA_MESSAGE_DELIVERED, SAMSARA_MESSAGE_FAILED, SAMSARA_RESPONSE_RECEIVED, SAMSARA_RESPONSE_TIMEOUT, SAMSARA_CLARIFICATION_SENT, VOICE_FALLBACK_INITIATED, OFFER_CONFIRMED_VIA_MESSAGE, OFFER_DECLINED_VIA_MESSAGE
1.2January 21, 2026Hop And Haul TeamAligned with PLCY-COM-001 v3.0: Added VOICE_CALL_LOGGED event type with fields per Section 5.1 (timestamp, driver_id, opportunity_id, response_received, time_to_response). Added driver rights events: DRIVER_PAUSE_REQUESTED, DRIVER_PAUSE_ENDED, OPPORTUNITY_HISTORY_REQUESTED.

CONFIDENTIAL - Internal Use Only - Hop And Haul Policy Documentation