Validates the future draft-shift save payload while keeping the save gate locked. Nothing is inserted, updated, published, texted, or emailed.
This validates a draft-shift payload but does not save it.
| 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. |
| 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 |
| 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. |
| 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 |