HD Sports Zone Bookmark 26A-2 — Draft Save Request Validation / Still No Database Write

Validates the future draft-shift save payload while keeping the save gate locked. Nothing is inserted, updated, published, texted, or emailed.

Gate status: Locked / disabled by default
ENV key: HD_EMPLOYEE_SCHEDULE_DRAFT_SAVE_ENABLED / current value: false
26A-2 performs validation preview only. It does not insert, update, publish, text, or email.

No-Write Validation Test Form

This validates a draft-shift payload but does not save it.








Safety Checks

Validation only Passed 26A-2 validates request fields only.
No insert/update/delete Passed Controller performs no database write statements.
No publish action Passed Employee-facing schedule is not changed.
No employee notifications Passed No text/email behavior is introduced.
Gate remains disabled by default Passed HD_EMPLOYEE_SCHEDULE_DRAFT_SAVE_ENABLED remains the safety gate.
No hard conflict blocking Passed Soft conflicts remain review-only.
No production override Passed This is a separate builder validation support route.

Validation Rules

Field Label Required Rule Example
employee_id Employee Yes required integer min:1 1
shift_date Shift Date Yes required valid date 2026-06-05
start_time Start Time Yes required HH:MM 09:00
end_time End Time Yes required HH:MM and later than start time 17:00
period_id Schedule Period No nullable integer min:1 1
role_position Role / Position No nullable string max:80 Lane Attendant
notes Notes No nullable string max:500 Optional manager note

Candidate Tables — Read Only

Table Status Rows Columns Purpose Note
hd_draft_shifts Present 5 id, schedule_period_id, employee_id, work_date, starts_at, ends_at, role, location, area, status, has_soft_conflict, soft_conflict_summary, manager_notes, created_by, updated_by, created_at, updated_at, deleted_at Preferred future draft shift target. Read-only schema inspection only.
hd_schedule_shifts Missing 0 Not detected Possible generic schedule shift table. Read-only schema inspection only.
hd_employee_schedule_shifts Present 2 id, company_id, employee_id, role_id, schedule_date, starts_at, ends_at, scheduled_hours, shift_title, work_area, station_note, status, notes, created_by, updated_by, settings, created_at, updated_at Possible employee schedule shift table. Read-only schema inspection only.
hd_employee_schedules Missing 0 Not detected Possible schedule header/shift table. Read-only schema inspection only.
hd_schedule_periods Present 2 id, title, starts_on, ends_on, status, source, notes, created_by, updated_by, created_at, updated_at, deleted_at Possible schedule period table. Read-only schema inspection only.
hd_employee_schedule_periods Missing 0 Not detected Possible employee schedule period table. Read-only schema inspection only.
hd_published_shifts Present 1 id, published_schedule_period_id, source_schedule_period_id, source_draft_shift_id, employee_id, work_date, starts_at, ends_at, role, location, area, published_shift_status, source_had_soft_conflict, source_soft_conflict_summary, manager_notes, source_shift_payload, created_at, updated_at, deleted_at Published table; should not be used by draft validation/save. Published table shown for separation only; not used by 26A-2.

Route Status

URI Status Action Open
hd/employee-schedules/builder/draft-shift-validation Found GET App\Http\Controllers\Hd\EmployeeSchedules\EmployeeScheduleDraftShiftValidationController@index Open
hd/employee-schedules/builder/draft-shifts/validate-no-write Found POST App\Http\Controllers\Hd\EmployeeSchedules\EmployeeScheduleDraftShiftValidationController@validateNoWrite Open
hd/employee-schedules/builder/draft-shift-save-gate Found GET App\Http\Controllers\Hd\EmployeeSchedules\EmployeeScheduleDraftShiftSaveGateController@index Open
hd/employee-schedules/builder/draft-shifts/disabled-save-stub Found POST App\Http\Controllers\Hd\EmployeeSchedules\EmployeeScheduleDraftShiftSaveGateController@disabledStore Open
hd/employee-schedules/builder/draft-save-readiness-completion Found GET App\Http\Controllers\Hd\EmployeeSchedules\EmployeeScheduleBuilderDraftSaveReadinessCompletionController@index Open
hd/employee-schedules/production Found GET App\Http\Controllers\Hd\EmployeeSchedules\EmployeeScheduleProductionRouteRescueController@index Open