Levers
Every behavioral knob in Guildhall is a named lever with a fixed set of positions. Levers are persisted in ./memory/agent-settings.yaml with full provenance (who set it, when, why).
- 9 project levers — singleton per workspace.
- 9 domain levers — per coordinator domain, with a
defaultfallback.
How levers get set
On first run, Guildhall seeds every lever with setBy: system-default so there are no invisible defaults. During browser onboarding, meta-intake can infer better starting positions from the project interview. The Spec Agent emits a levers: YAML draft alongside coordinator definitions; when you approve it, Guildhall writes those positions to ./memory/agent-settings.yaml with setBy: spec-agent-intake and the agent's rationale.
The agent should infer only what the conversation supports. Anything uncertain stays at the system default until you change it in Settings or edit the file directly. See Onboarding and levers for the end-to-end flow.
How a lever is stored
landing_strategy:
position: cherry_pick_with_push
rationale: "Land accepted work locally, then push the landing branch to origin"
setAt: "2026-04-10T11:02:00Z"
setBy: user-directSee Provenance for the setter enum.
Project levers
| Lever | Positions | Default |
|---|---|---|
concurrent_task_dispatch | serial, fanout_N | serial |
worktree_isolation | none, per_task, per_attempt | per_task |
landing_strategy | cherry_pick_local, cherry_pick_with_push, manual_pr | cherry_pick_local |
rejection_dampening | off, soft_penalty_after_N, hard_suppress_after_N | off |
business_envelope_strictness | strict, advisory, off | advisory |
agent_health_strictness | lax, standard, strict | standard |
remediation_autonomy | auto, confirm_destructive, confirm_all, pause_all_on_issue | confirm_destructive |
runtime_isolation | none, slot_allocation | none |
workspace_import_autonomy | off, suggest, apply | suggest |
Domain levers
Per coordinator domain; one default: entry is required as fallback.
| Lever | Positions | Default |
|---|---|---|
task_origination | human_only, agent_proposed_human_approved, agent_proposed_coordinator_approved, agent_autonomous | agent_proposed_coordinator_approved |
spec_completeness | full_upfront, stage_appropriate, emergent | stage_appropriate |
pre_rejection_policy | terminal_shelved, requeue_lower_priority, requeue_with_dampening | requeue_with_dampening |
completion_approval | human_required, coordinator_sufficient, gates_sufficient | coordinator_sufficient |
reviewer_mode | llm_only, deterministic_only, llm_with_deterministic_fallback | llm_with_deterministic_fallback |
reviewer_fanout_policy | strict, coordinator_adjudicates_on_conflict, advisory, majority | strict |
max_revisions | integer | 3 |
escalation_on_ambiguity | always, coordinator_first, never | coordinator_first |
crash_recovery_default | prefer_resume, prefer_restart_clean, pause_for_review | prefer_resume |