Goals

Goals are long-running objectives that persist across multiple Syntic Code sessions. Where a single prompt describes one task, a goal describes an outcome that may take many runs, many days, and many intermediate steps to reach. Amara treats a goal as durable context: it tracks progress, remembers what has already been tried, and picks up where it left off rather than starting over each time.

What a goal is for

Use a goal when the work is too large or too open-ended for one session. Migrating a codebase to a new framework, driving test coverage to a target, or steadily reducing a backlog of lint warnings are all natural goals. The agent breaks the objective into steps, works on them incrementally — often driven by a schedule — and maintains a record of state so each session is informed by the last.

Defining a goal

A goal has a name, a description of the desired end state, and optional success criteria that tell Amara when it is done:

syntic goal create \
  --name typescript-migration \
  --description "Convert the src/ directory from JavaScript to TypeScript." \
  --done-when "All files under src/ are .ts and 'npm run typecheck' passes."

You can then run the goal on demand or attach it to a schedule so it advances automatically:

syntic goal run typescript-migration
syntic goal status typescript-migration   # progress and remaining work

Progress and continuity

Each time a goal runs, Amara reviews the accumulated state, chooses the next meaningful increment, and updates the record before stopping. Progress is checkpointed so you can inspect the history, roll back a bad step using checkpointing, or intervene manually in an interactive session. When the success criteria are met, the goal is marked complete and stops consuming scheduled runs.