./memory/agent-settings.yaml
The lever-storage file. Seeded by makeDefaultSettings() on first read and edited from then on by the Settings tab, the Spec Agent during meta-intake/exploring, or by hand.
During onboarding, meta-intake may infer initial positions from your project-guidance answers. Approved inferences are written here with setBy: spec-agent-intake; defaults that were not inferred remain setBy: system-default.
Learned behavior is stored separately. ./memory/learning.json holds project-scoped learned defaults and suggestions, ./memory/project-skills.json holds project skill proposals, and ~/.guildhall/learning.json holds user/global preferences. Use Settings → Memory to inspect project memories, cross-project preferences, project playbooks, and product ideas. Suggested records stay off until you choose to use them; ./memory/agent-settings.yaml remains the explicit lever file.
Shape
project:
concurrent_task_dispatch:
position: { kind: serial }
rationale: "system default"
setAt: "2026-04-10T10:00:00Z"
setBy: system-default
landing_strategy:
position: cherry_pick_local
rationale: "system default"
setAt: "2026-04-10T10:00:00Z"
setBy: system-default
# ... all 9 project levers ...
domains:
default: # required fallback
task_origination:
position: agent_proposed_coordinator_approved
rationale: "system default"
setAt: "2026-04-10T10:00:00Z"
setBy: system-default
# ... all 9 domain levers ...
ui: # override for a specific domain
spec_completeness:
position: full_upfront
rationale: "UI domain requires complete acceptance criteria before work starts"
setAt: "2026-04-10T11:30:00Z"
setBy: user-directResolution rules
For a given domain, the effective position for each domain lever is read in this order:
domains.<id>.<lever>if present.domains.default.<lever>otherwise.
Project levers have no domain override — there's only project.<lever>.
Editing safely
- Edit by hand or through the browser UI; both are first-class.
setAtandsetBymust always be updated whenpositionchanges — the loader will refuse to persist a changed position with a stale setter.rationaleis required. The CLI and browser UI prompt for it; hand-edits must include it.
See also
- Levers overview — lever-by-lever pages.
- Provenance — setter enum.