HD Sports Zone Bookmark 26A-14 — Controlled One-Row Draft Save Preflight Command Builder / Still No Write

Preflight command builder for a future controlled one-row draft-save test. This phase does not enable gates, submit the save route, or write schedule data.

Preflight status: Preflight builder safe / no write detected
Recommendation: Use this page as reference only. Do not run the future gate/test commands until the real one-row test is intentionally approved.
Gate status: Safe preflight state: both gates are currently disabled
HD_EMPLOYEE_SCHEDULE_DRAFT_SAVE_ENABLED: false
HD_EMPLOYEE_SCHEDULE_DRAFT_SAVE_OWNER_APPROVED: false
No ENV change or database write was performed.
Generated: Jun 5, 2026 12:14 AM

Target Table

Tablehd_draft_shifts
ExistsYes
Rows5
ConfidenceHigh

Row Count Safety

Before5
After5
Delta0
Note26A-14 only reads row counts. It does not insert, update, delete, or change ENV values.

Required Phrase

Manual confirmation
SAVE_ONE_DRAFT_SHIFT
For future controlled test only. Not used by 26A-14.

Read-Only Preflight Commands

CommandPurposeCopy Reference
Confirm current Laravel root Make sure commands are only run inside hdsportszone.com.
pwd
php artisan --version
Confirm route registration Verify locked save and preflight routes exist.
php artisan route:list --columns=Method,URI,Action | grep -Ei "draft-shift-(locked-real-save|locked-save-smoke-test|manual-test-instructions|one-row-test-prep-packet|preflight-command-builder)"
Confirm gates are disabled Read current gate values without changing .env.
php artisan tinker --execute='echo "HD_EMPLOYEE_SCHEDULE_DRAFT_SAVE_ENABLED=".(env("HD_EMPLOYEE_SCHEDULE_DRAFT_SAVE_ENABLED", false) ? "true" : "false").PHP_EOL; echo "HD_EMPLOYEE_SCHEDULE_DRAFT_SAVE_OWNER_APPROVED=".(env("HD_EMPLOYEE_SCHEDULE_DRAFT_SAVE_OWNER_APPROVED", false) ? "true" : "false").PHP_EOL;'
Read target table row count Capture row count before any future real-save test.
php artisan tinker --execute='echo "hd_draft_shifts rows: ".\Illuminate\Support\Facades\DB::table("hd_draft_shifts")->count().PHP_EOL;'
Open locked save page Browser-check the locked route before any future real test.
https://hdsportszone.com/hd/employee-schedules/builder/draft-shift-locked-real-save

Future Gate Commands — Do Not Run Yet

Future enable gates command — do not run yet

This is only for the later intentional one-row test.

python3 - <<'PY'
from pathlib import Path
p = Path('.env')
s = p.read_text(errors='ignore') if p.exists() else ''
keys = {
    'HD_EMPLOYEE_SCHEDULE_DRAFT_SAVE_ENABLED': 'true',
    'HD_EMPLOYEE_SCHEDULE_DRAFT_SAVE_OWNER_APPROVED': 'true',
}
for k, v in keys.items():
    lines = s.splitlines()
    found = False
    for i, line in enumerate(lines):
        if line.startswith(k + '='):
            lines[i] = k + '=' + v
            found = True
    if not found:
        lines.append(k + '=' + v)
    s = '\n'.join(lines) + '\n'
p.write_text(s)
print('Future test gates set to true. Clear caches immediately.')
PY
php artisan optimize:clear
php artisan config:clear
php artisan cache:clear

Future disable gates command — rollback/default

This returns the system to locked/default state.

python3 - <<'PY'
from pathlib import Path
p = Path('.env')
s = p.read_text(errors='ignore') if p.exists() else ''
keys = {
    'HD_EMPLOYEE_SCHEDULE_DRAFT_SAVE_ENABLED': 'false',
    'HD_EMPLOYEE_SCHEDULE_DRAFT_SAVE_OWNER_APPROVED': 'false',
}
for k, v in keys.items():
    lines = s.splitlines()
    found = False
    for i, line in enumerate(lines):
        if line.startswith(k + '='):
            lines[i] = k + '=' + v
            found = True
    if not found:
        lines.append(k + '=' + v)
    s = '\n'.join(lines) + '\n'
p.write_text(s)
print('Draft save gates set to false. Clear caches immediately.')
PY
php artisan optimize:clear
php artisan config:clear
php artisan cache:clear

Future Test Commands / Values

Future one-row browser test values

Use these only after both gates are intentionally enabled.

URL: https://hdsportszone.com/hd/employee-schedules/builder/draft-shift-locked-real-save
employee_id: 1
shift_date: 2026-06-05
start_time: 09:00
end_time: 10:00
period_id: blank or 1
role_position: Controlled Test Draft
notes: 26A controlled one-row test
manual_confirmation: SAVE_ONE_DRAFT_SHIFT

Future after-test row count verification

Confirm row delta is exactly 1 after the future one-row test.

Open the result page after submitting the locked save form.
Confirm:
- Inserted? Yes
- Row delta: 1
- Inserted ID is shown
- No publish action occurred
- No employee notification occurred

Rollback Commands

Immediate rollback to locked state

Use after any future one-row test.

python3 - <<'PY'
from pathlib import Path
p = Path('.env')
s = p.read_text(errors='ignore') if p.exists() else ''
for k in ['HD_EMPLOYEE_SCHEDULE_DRAFT_SAVE_ENABLED','HD_EMPLOYEE_SCHEDULE_DRAFT_SAVE_OWNER_APPROVED']:
    lines = s.splitlines()
    found = False
    for i, line in enumerate(lines):
        if line.startswith(k + '='):
            lines[i] = k + '=false'
            found = True
    if not found:
        lines.append(k + '=false')
    s = '\n'.join(lines) + '\n'
p.write_text(s)
print('Both gates are false.')
PY
php artisan optimize:clear
php artisan route:clear
php artisan view:clear
php artisan config:clear
php artisan cache:clear

Post-rollback verification

Confirm locked/default state after rollback.

Open:
https://hdsportszone.com/hd/employee-schedules/builder/draft-shift-locked-save-smoke-test

Confirm both gates show disabled and row count is stable.

Operator Warnings

  • Do not run the future enable-gates command during 26A-14.
  • Do not submit a real-save form with both gates enabled yet.
  • Do not use Payfast Office paths or commands.
  • Do not publish the draft shift during the one-row save test.
  • Do not connect draft save to employee self-view yet.
  • Do not send employee texts or emails from draft save.
  • Do not add hard conflict blocking yet.
  • Do not modify payroll, POS, reservations, payments, waivers, or customer profiles.
  • Do not delete schedule tables as rollback.

Safety Checks

CheckStatusNote
Preflight builder is GET-only Passed 26A-14 does not submit any save route.
No ENV changes Passed This phase only displays commands. It does not edit .env.
No insert/update/delete Passed Controller performs no database write statements.
Row count unchanged Passed Detected row delta: 0
No publish action Passed Employee-facing schedules are not changed.
No employee notifications Passed No text/email behavior is introduced.
No production override Passed Production remains separate.

Route Checks

ScreenExpectedStatusOpen
26A-14 Preflight Command Builder
hd/employee-schedules/builder/draft-shift-preflight-command-builder
GET Passed Open
26A-13 One-Row Test Prep Packet
hd/employee-schedules/builder/draft-shift-one-row-test-prep-packet
GET Passed Open
26A-12 Manual Test Instructions
hd/employee-schedules/builder/draft-shift-manual-test-instructions
GET Passed Open
26A-11 Locked Save Smoke Test
hd/employee-schedules/builder/draft-shift-locked-save-smoke-test
GET Passed Open
26A-10 Locked Real Save
hd/employee-schedules/builder/draft-shift-locked-real-save
GET Passed Open
26A-10 Locked Real Save POST
hd/employee-schedules/builder/draft-shifts/locked-real-save
POST Passed Open
Production / Build
hd/employee-schedules/production
GET Passed Open

File Checks

FileStatusModified
26A-14 Controller
app/Http/Controllers/Hd/EmployeeSchedules/EmployeeScheduleDraftShiftPreflightCommandBuilderController.php
Passed 2026-06-02 10:55:10
26A-14 View
resources/views/hd/employee_schedules/draft_shift_preflight_command_builder.blade.php
Passed 2026-06-02 11:54:29
26A-13 Controller
app/Http/Controllers/Hd/EmployeeSchedules/EmployeeScheduleDraftShiftOneRowTestPrepPacketController.php
Passed 2026-06-02 10:45:02
26A-12 Controller
app/Http/Controllers/Hd/EmployeeSchedules/EmployeeScheduleDraftShiftManualTestInstructionsController.php
Passed 2026-06-02 10:32:18
26A-11 Controller
app/Http/Controllers/Hd/EmployeeSchedules/EmployeeScheduleDraftShiftLockedSaveSmokeTestController.php
Passed 2026-06-02 08:58:52
26A-10 Controller
app/Http/Controllers/Hd/EmployeeSchedules/EmployeeScheduleDraftShiftLockedRealSaveController.php
Passed 2026-06-02 08:46:18