One-Link Field Uploads (2026-07-29)
Decision (Dustin): Field media has exactly ONE intake — the per-stop tokenized unlikely.pics link on the morning schedule. Photos AND pier logs. Strict handling: Kilroy refuses to file chat-sent media and redirects to the link (safety net: if the link fails, file via /field-media/upload and flag Dustin — media is never lost).
Why: Three parallel intakes (unlikely.pics, unlikely.pl, Telegram chat auto-filing) forced Darius to think about Telegram buttons (photo-mode strips GPS; HEIC dies) and chat filing required per-photo project guessing — the misfiling root cause.
Implementation (entirely-api 40304cb): field_upload.py mints a pierlog share token at page render when get_sow_pier_targets shows UND scope and shows a pier-log banner; daily_schedule.py/whatsapp_service.py emit one link (”📷 Photos & pier log:” on UND stops); calendar.py include_field_links returns only photo_upload_url. Kilroy SOUL.md “ONE UPLOAD PATH” section replaces “FILE EVERY PHOTO IN REAL TIME”; briefing skill + Daily Field Schedule cron (0212d41aee6e) updated to match.
Also fixed: Kilroy’s self-patched briefing skill falsely claimed API tokens come back “intentionally abbreviated” (eyJhbG…XXXX) — they are full ~350-char JWTs; truncation = display artifact, truncated links 403. Skill now forbids sending any URL containing ”…“.
Related: field_upload, daily_schedule, pierlog_upload