OptionalauditOptionalbaseRoute prefix. Default '/api/threads' (goals mount at /:threadId/goal).
The deployment execution fence, or 'none' for a router with no database
behind it. A standing objective is authored work — it is what the agent
loop re-reads to decide it should run again — so SET and UPDATE are
refused past open. CLEAR stays available in every state because it
removes a standing instruction rather than arming one (the same reason
schedule pause and delete are exempt), and GET stays available in every
state.
REQUIRED: this router receives a store facade, not a database, so the host is the only place the wiring can happen. See ExecutionFenceWiring.
OptionalmaxMax raw request-body size in bytes. Must be a nonnegative safe integer; zero denies every non-empty body. Default 16384.
OptionalmaxThe ceiling on a per-objective maxRuns. A request above it is REJECTED; the stored record never carries a higher value. Default the core DEFAULT_GOAL_MAX_RUNS (50). Must be a positive safe integer.
Authenticate and validate the actor; undefined means 401.
OptionalrolesWho may SET/UPDATE/CLEAR an objective. Default RUN_START_ROLES (operator/admin) — reviewers/viewers cannot author standing instructions. Reads (GET) are not role-gated beyond ownership.
The thread-state domain in which the goal record lives.
Prove mutations target durable bound memory, not an ephemeral run id.
Every mutation (and denied read) is audited through this. Absent ⇒ no audit.