Observation

ORA-2026-0064

fleet-ops

Observation

Claude CronCreate jobs within a single persistent session share the session's message queue. When two CronCreate jobs fire at the same moment, their prompts coalesce into a single turn instead of executing independently. This was observed on 2026-04-18 at 14:48:19Z in session bf0cf587-7e1d-44be-b399-34acf92892de when evidence-health and shepherd fires coalesced.

Inventory of active cron/monitor surfaces

Externalized (LaunchAgent-based, no session collision risk)

SurfaceLaunchAgentCadenceMechanism
Shepherd firecom.orbit.shepherd-fire-prompt300s intervalclaude -p one-shot (no persistent session)
Shepherd feed-watchcom.orbit.shepherd-feed-watch300s intervalbash script (no Claude session)
Provider parity checkcom.orbit.provider-parity-checkcalendar intervalbash script via osascript
Orphan sweepcom.orbit.orphan-sweepcalendar intervalbash script via osascript
Memory health checkcom.orbit.memory-health-checkweekly Mon 09:30bash script via osascript
TRAM loop opscom.camber.tramloop.ops30s intervalbash script
Beside direct readcom.heartwood.beside_direct_read60s intervalbash script
Desktop inbox ingestcom.camber.desktop-inbox-ingestWatchPathsbash script
Redline sync watchercom.heartwoodcustombuilders.redline-sync-watcherWatchPathsbash script

These have ZERO session collision risk because they either: (a) use claude -p which creates fresh one-shot sessions, or (b) are pure bash scripts that don't invoke Claude at all.

Session-only (CronCreate inside persistent Claude session — COLLISION RISK)

SurfaceCadenceSessionStatus
Evidence-health:13 and :43 of each hourbf0cf587-... (Claude Desktop ORA-01)ACTIVE risk — no external launcher exists

Evidence-health is the only identified session-only CronCreate. The shepherd was previously in the same collision class but has been externalized to a LaunchAgent (com.orbit.shepherd-fire-prompt) which launches claude -p one-shot calls.

Queue-collision analysis

The coalescing incident (2026-04-18T14:48:19Z) happened because: 1. Evidence-health CronCreate fired at :43 2. Shepherd CronCreate fired at approximately the same time (300s interval) 3. Both prompts landed in the same session message queue 4. Claude processed them as a single merged turn

After externalization of the shepherd to a LaunchAgent, the coalescing risk is eliminated for shepherd + evidence-health. However, if any NEW CronCreate jobs are added to the same persistent session, the coalescing pattern will recur.

Repair assessment

SurfaceVerdictAction
Shepherd fireNO RISKAlready externalized to LaunchAgent
Evidence-healthACTIVE RISKNeeds externalization: create com.orbit.evidence-health.plist LaunchAgent + fire script (same pattern as shepherd-fire)
All bash-only LaunchAgentsNO RISKNot Claude sessions
Future CronCreate jobsLATENT RISKDoctrine guard needed

Recommended repairs

1. Externalize evidence-health — create com.orbit.evidence-health.plist + evidence-health-fire launcher script following the shepherd-fire pattern. Use claude -p one-shot with the evidence-health-cron-protocol.md as input. Calendar interval at :13 and :43 per hour.

2. Doctrine guard against session-only CronCreate — CronCreate inside persistent sessions should be treated as a last resort. Preferred pattern: LaunchAgent + claude -p one-shot (per ORA-2026-0013 long-running shepherd cron pattern). CronCreate is acceptable only when: (a) the job requires persistent session context that can't be reconstructed from files, AND (b) the session hosts at most one CronCreate job.

3. No rearm-minute changes needed — the externalized surfaces are already on sensible cadences. Shepherd at 300s with lock guard. Evidence-health at :13/:43 (~30 min intervals). No overlap risk when each runs in its own one-shot session.