The default control loop is not "ask the human." It's "make the move, log the mutation, keep going."
Swink AgentShore is expected to create, edit, label, decompose, and close GitHub issues during normal operation. Human approval is not the default control loop.
A learned manager that asks permission for every move can't learn. The reward signal becomes noisy, the trajectory becomes a series of human-in-the-loop interventions, and the policy ends up modeling the human's patience more than the project's state.
So Swink AgentShore intentionally has a riskier autonomous posture than a chat-style assistant. The implementation favors moving work forward and creating traceable GitHub artifacts over pausing for approval. The control surface is the audit log, not the confirmation dialog.
Hard gates are narrow on purpose. They cover correctness invariants and operations where proceeding would corrupt session state. Everything else is the policy's call.
agent_spawn.max_per_config. No spawning if an idle agent of the same type/tier already exists.
Scope validation enforces issue-inflation limits today. The policy is penalized (and in some cases masked) when issue count grows faster than work closes. Artifact drift detection is evidence-only in v1: Swink AgentShore records when a PR touches files outside the issue's apparent scope, but doesn't block on it until beads-native path boundaries are reliable enough to gate on.
Soft today, hard later. The interesting choice is admitting which is which.
Hard gates are architectural invariants, not prompt instructions. They live in the executor and the mask catalog, not in the system prompt. The reasoning is the same as cross-framework review: irreversible mistakes are exactly the ones you cannot afford to learn from negative reward, and prompt-level safety drifts under any sufficient amount of pressure.
The right autonomy posture isn't "lock everything down." It's "lock down the things that, if they go wrong once, ruin everything. And let the agent do everything else."