# Hermes Daily Goal-Oriented Autonomy Loop

Updated: 2026-05-03

## Autonomy level

Daniel has approved Hermes operating at **Level 3** autonomy.

Hermes may do unattended:

- create branches, commits, private repositories, and GitHub PRs
- create local/web/Notion artifacts
- append Notion logs
- perform low-risk local operational actions
- run bounded local tests/lints/research workflows

Hermes must still get Daniel review before:

- merging PRs
- production deploys or production service restarts
- public publishing outside GitHub PRs
- money/trading/payment actions
- credential or permission changes
- destructive data/file operations

## Daily loop

The system should steer using a short feedback loop, not weekly overplanning.

```text
Morning evaluation -> Daily goal planner -> Evening sweep -> Queue writer -> Overnight worker -> Morning evaluation
```

## Morning evaluation job

Purpose: evaluate, not plan.

The morning brief should answer:

1. What happened overnight?
2. What PRs/artifacts need Daniel review?
3. Which active goals advanced, stalled, or drifted?
4. What failures/skips/blockers should influence today’s plan?
5. What steering signal should the daily planner use?

It should include `overnight_workbench` results: queued, succeeded, failed, skipped, PRs opened, and review-needed items.

## Daily goal planner job

Purpose: propose the next 24-hour project queue.

This is the goal-oriented planning process Daniel asked for. It should run after the morning evaluation and use:

- Active Goals
- AI Delegated Projects grouped by goal
- overnight workbench results
- recent failures/skips
- stale or blocked projects
- Daniel review backlog

Output: a max-10 proposed next-24h queue, with each item naming:

- Goal
- Project
- Job type
- Written input description
- Expected review artifact
- Why this is the next best move

Planning horizon: **24 hours**. Not weekly.

## Evening sweep job

Purpose: evaluate the day and prepare the overnight queue.

The evening sweep should:

1. evaluate day-level progress by goal
2. compare actual progress to the daily goal plan
3. identify queue candidates for the overnight workbench
4. separate autonomous work from Daniel-needed decisions
5. create/emit queue candidates for the deterministic queue writer

It should not be a generic activity digest. It is the transition from daytime evaluation to overnight execution.

## Queue writer job

Purpose: deterministic conversion of evening candidates into queue entries.

It should run after the evening sweep and enforce:

- max 10 jobs/night globally
- max 3 jobs/project/night
- safety policy
- dedupe by date/project/action/job type

It should not use an LLM for policy interpretation.

## Overnight worker

Purpose: execute queued work under Level 3 autonomy.

Rollout sequence:

1. dry-run worker: claims jobs and writes synthetic results
2. real worker for research/draft/documentation/audit/review jobs
3. software-development worker that opens PRs
4. low-risk local ops worker, still forbidden from production deploys/merges/etc.

## Retired job

The legacy nightly reviewer is retired. Its role is replaced by:

- morning evaluation
- daily goal planner
- evening sweep
- overnight workbench context

## Current implementation status

Done:

- PR #1 merged in `dndodson/hermes-ops`
- PR #1 deployed to live `~/.hermes/scripts`
- morning brief prompt updated to evaluation framing
- evening sweep prompt updated to queue-prep framing
- daily goal planner cron created for 08:20 ET
- overnight queue writer cron created for 22:45 ET
- legacy weekly/nightly reviewer cron retired
- PR #2 opened for dry-run worker

Next:

- Daniel reviews/merges PR #2
- deploy PR #2 worker script + optional dry-run systemd timer
- run one dry-run night
- then implement PR #3 real worker execution for low-risk non-code jobs
