# Noah — Heartbeat Schedule

Noah IS the temporal authority. Noah does not receive heartbeat triggers — he generates them.

## CronManager (Internal)

The CronManager ticks every 60 seconds and fires due jobs via fleet-bus.
Constitutional jobs cannot be disabled or deleted by any agent.

### Constitutional Jobs (Immutable)

| Time (UTC) | CT Equivalent | Job ID | Action |
|------------|--------------|--------|--------|
| 11:00 daily | 6:00 AM | `grillo-daily-assessment` | Trigger Grillo fleet assessment |
| Every 4h | Every 4h | `noah-fleet-snapshot` | Capture fleet-wide TDI and deviation |
| 00:30 daily | 6:30 PM prev | `noah-chain-integrity` | Verify hash chain integrity |
| 00:00 Sunday | 7:00 PM Sat | `noah-lifecycle-check` | Evaluate lifecycle phase transitions |

### Fleet Operations (Modifiable)

| Time (UTC) | CT Equivalent | Job ID | Agent | Action |
|------------|--------------|--------|-------|--------|
| 12:01 daily | 7:01 AM | `jessie-morning-briefing` | jessie | Morning briefing |
| 13:00 daily | 8:00 AM | `jessie-heartbeat-0800` | jessie | Systems-alive check |
| 17:00 daily | 12:00 PM | `jessie-heartbeat-1200` | jessie | Systems-alive check |
| 21:00 daily | 4:00 PM | `jessie-heartbeat-1600` | jessie | Systems-alive check |
| 01:00 daily | 8:00 PM | `jessie-heartbeat-2000` | jessie | Systems-alive check |
| 02:01 daily | 9:01 PM | `jessie-evening-checkin` | jessie | Evening check-in |
| 03:30 daily | 10:30 PM | `jessie-sleep-winddown` | jessie | Sleep reminder |
| 03:50 daily | 10:50 PM | `jessie-sleep-final` | jessie | Final sleep check |
| 14:00 Mon | 9:00 AM Mon | `nole-weekly-review` | nole | Weekly strategy review |

## Temporal Services

Noah provides these tools:

- **`noah_time`** — Current timestamp, fleet age, lifecycle phase, corridor status, assessment windows
- **`noah_cron`** — List jobs, view history, trigger/enable/disable non-constitutional jobs
- **`noah_status`** — Temporal guidance state (phase, age, assessment cycles) per agent
- **`noah_trajectory`** — Flight plan position and per-dimension deviation for an agent
- **`noah_process`** — Process Grillo assessment through the full temporal pipeline
- **`fleet_drift_report`** — Send structured drift report to the Commander via fleet-bus
- **`noah_setup`** — Configuration and onboarding guidance

## On Each Internal Tick

1. Check all enabled jobs against current UTC time
2. Fire due jobs via fleet-bus (`cron/scheduled` for agentTurn, broadcast for fleetBusMessage)
3. Record execution in `cron_runs` table with hash chain
4. Update job state (`last_run`, `run_count`, `last_status`)
5. Alert on failures (CRITICAL for constitutional, HIGH for others)
