# Hornsby ghost-job session notes — 2026-05-17

## What happened
Cron job ran EOD summary for Hornsby (01-2275). Found:
- Job still in `Upcoming/` (not promoted to `Ongoing Jobs/`)
- `07d - Daily Diary/` has entries only for 2026-04-29 and 2026-04-30 (mobilisation delays)
- No diary entry for today (2026-05-17)
- `07a - Dockets/` directory exists but is EMPTY — no signed docket for today
- Job Tracker is `.xlsx` (not `.md`) — all labour hours = 0
- Brief says start_date 2026-04-30, target PC 2026-10-15, Claim 1 due 2026-05-25

## Root causes
1. Job never formally mobilised — no crew hours on tracker
2. Even if crew were on site, no daily diary entry was made for today
3. Docket not photographed — critical revenue gap
4. Job Tracker Excel format requires `python3.12` (not the cron venv's Python 3.11)

## Required actions
- Confirm with Rocky: has any physical site work happened since 30 April?
- If yes: get signed dockets for every day worked
- If no: job is still at mobilisation stage — update diary + flag EOT trigger
- Promote job to `Ongoing Jobs/` once confirmed active
- Claim 1 due 25 May — only ~8 days away, tracker shows $0 — flag for CC

## Python 3.12 openpyxl read command
```bash
cd "/home/ccuser/opsman-work/Jobs/Upcoming/01-2275 - Solutions Plus - HPE Field of Play Hornsby"
python3.12 -c "
import openpyxl
wb = openpyxl.load_workbook('Job Tracker - HPE Field of Play Hornsby.xlsx', data_only=True)
for sheet in wb.sheetnames:
    ws = wb[sheet]
    print(f'=== Sheet: {sheet} ===')
    for row in ws.iter_rows(min_row=1, max_row=min(80, ws.max_row), values_only=True):
        if any(v is not None for v in row):
            print(row)
"
```
