Status (post-init-wizard-arc)
The original scope of this issue was the stopgap scaffold script before #94's full conversational wizard. #94 shipped both PRs of arc on 2026-06-02 (#317 PR 1 of arc, #323 PR 2 of arc). Most of #142's original scope landed there. This rewrite preserves the issue number and tightens to residual scope only.
Origin: conversation 2026-05-12 (post-public-flip operator-experience gap discussion).
What's already shipped (via #94 arc)
Tracked elsewhere:
Residual scope (this issue, post-rewrite)
1. OPERATOR_NOTES.md operator-commitment capture
A new operator-authored markdown file at the agent root, seeded by the wizard from the operator's Q&A answers, then maintained by the operator over time as a "what did I commit to and why" log.
Not framework-required. Not parsed by the framework. Pure operator artifact. The value is retrospective review: "I picked the Balanced autonomy preset because I thought I'd be okay with external sends going to judge_required. Three weeks in, I've discovered I want every send to escalate to me. Time to re-tune judges.md."
Seeded shape (from wizard answers):
# Operator notes — <agent-name>
Initial deployment: <date>
## Decisions made at scaffold
- **Mission**: <operator's Q2 answer>
- **Scope in / Scope out**: <Q3a / Q3b>
- **Autonomy preset**: <Cautious | Balanced | Autonomous | Customize>. Reason: <operator-supplied at Q4-followup>
- **Voice posture**: <Q5 answer>
- **Communication preferences**: <Q6>
- **Hard refusals**: <Q7>
- **Operating mode**: <reactive | goal-driven | hybrid> (NEW: Q3.5; see §2 below)
- **LLM provider**: <anthropic | openai | moonshot> (from #324)
- **Judge layer**: <enabled | not enabled> (NEW: Q8.1; see §3)
- **Mandates**: <enabled | not enabled> (NEW: Q8.2)
- **Responsibility audit**: <enabled | not enabled> (NEW: Q8.3)
## Things I haven't decided yet
- [ ] Persona stubs — IDENTITY/SOUL/USER are scaffold output; review and tune after first runs
- [ ] Tools.md write paths — defaulted per autonomy preset; revisit when adding side-effectful tools
- [ ] Cost guardrails — defaulted to template per-provider conservative caps; tune after first runs reveal actual cost shape
- [ ] Memory recall pattern — INDEX.md is empty; first notes seed the recall pattern
## Decisions deferred
(operator adds entries over time as they realize \"I should think about this later\")
## Operator log
(append-only notes as the operator iterates the agent over time)
2. Operating mode question (Q3.5)
Templates today carry an ## Operating mode section (PR 2 of arc Round 1 fix) but the mode is inherited from template choice: advisor and writer are reactive, researcher is hybrid. The operator can edit the section post-scaffold but the wizard doesn't ask.
Add a Q3.5 between Q3 (scope) and Q4 (autonomy) that asks the operator to confirm or override the template's default mode. Plain-English options:
- reactive (default for advisor / writer) — agent runs when the operator invokes it; no autonomous loop.
- goal-driven — agent pursues a multi-step goal across sessions; resumes on each invocation.
- hybrid (default for researcher) — agent is reactive day-to-day but maintains background investigations.
Wizard renders the chosen mode into persona/IDENTITY.md ## Operating mode section.
3. Opt-in judges / mandates / audits scaffolding (Q8.1 / Q8.2 / Q8.3)
After Q7, ask three optional yes/no questions:
- Q8.1: Enable the judge layer? (default: no) If yes, scaffold
<agent>/judges.md with a starter config (defaults: external_side_effect: judge_required, high_risk: escalate).
- Q8.2: Enable mandates? (default: no) If yes, scaffold
<agent>/mandates.md with a header-only file. Operator authors mandates post-scaffold per spec/29.
- Q8.3: Enable responsibility audit? (default: no) If yes, scaffold
<agent>/audits.md with defaults from spec/30 §"Audit config file" (or wherever that section lands when spec/30 locks).
Most operators will pick "no" on all three. Power users running judge-gated agents, mandate-bound agents, or audit-tracked agents get the stub files at scaffold time instead of hand-authoring them later.
Update TEMPLATE_SECTION_SCHEMA in atomic_agents/init/constants.py to declare the optional file shapes so Add-to-it section detection handles them correctly.
4. Location question (Q1.5)
Wizard today uses get_agents_root() (env var $ATOMIC_AGENTS_ROOT or ~/.atomic-agents/); doesn't ask. Small UX gap for operators who want their agents next to a project directory.
Add an optional Q1.5: "Where do you want this agent? (default: ~/.atomic-agents/)" Accept any absolute path; refuse path traversal via existing safe_resolve_under primitive. Default stays the same; the question is a confirmation with override.
5. Doctor check_operator_notes informational check
Add a new doctor check that looks for OPERATOR_NOTES.md at the agent root. Informational only (does not affect overall exit code). Status: "present" / "missing" with one-line nudge to create one for retrospective review.
Operators who hand-built agents pre-#94 will see "missing." Operators who used the wizard will see "present." The nudge text suggests running atomic-agents init --notes-only <agent> (TBD subcommand) to retroactively scaffold OPERATOR_NOTES.md for a hand-built agent.
Acceptance criteria
Out of scope
Dependencies
Why this is worth keeping vs closing
The OPERATOR_NOTES.md concept has no other home in the backlog. It's a structural-quality affordance per the feedback_atomic_agents_best_not_cheapest discipline: low-cost to ship, durable value for any operator who iterates an agent over weeks/months. The opt-in judges/mandates/audits scaffolding piece is similarly orphan scope: every power-user surface today requires post-scaffold hand-authoring.
References
Status (post-init-wizard-arc)
The original scope of this issue was the stopgap scaffold script before #94's full conversational wizard. #94 shipped both PRs of arc on 2026-06-02 (#317 PR 1 of arc, #323 PR 2 of arc). Most of #142's original scope landed there. This rewrite preserves the issue number and tightens to residual scope only.
Origin: conversation 2026-05-12 (post-public-flip operator-experience gap discussion).
What's already shipped (via #94 arc)
_render_fileswrites 7 template files per agent (feat(init): #94 PR 1 of 2. atomic-agents init wizard #317).--forcedesign.getting-started.mdintegration → wizard documented as the recommended path (feat(init): #94 PR 1 of 2. atomic-agents init wizard #317).Tracked elsewhere:
--providerflag, or Q0 question).Residual scope (this issue, post-rewrite)
1.
OPERATOR_NOTES.mdoperator-commitment captureA new operator-authored markdown file at the agent root, seeded by the wizard from the operator's Q&A answers, then maintained by the operator over time as a "what did I commit to and why" log.
Not framework-required. Not parsed by the framework. Pure operator artifact. The value is retrospective review: "I picked the Balanced autonomy preset because I thought I'd be okay with external sends going to judge_required. Three weeks in, I've discovered I want every send to escalate to me. Time to re-tune
judges.md."Seeded shape (from wizard answers):
2. Operating mode question (Q3.5)
Templates today carry an
## Operating modesection (PR 2 of arc Round 1 fix) but the mode is inherited from template choice: advisor and writer are reactive, researcher is hybrid. The operator can edit the section post-scaffold but the wizard doesn't ask.Add a Q3.5 between Q3 (scope) and Q4 (autonomy) that asks the operator to confirm or override the template's default mode. Plain-English options:
Wizard renders the chosen mode into
persona/IDENTITY.md## Operating modesection.3. Opt-in judges / mandates / audits scaffolding (Q8.1 / Q8.2 / Q8.3)
After Q7, ask three optional yes/no questions:
<agent>/judges.mdwith a starter config (defaults:external_side_effect: judge_required,high_risk: escalate).<agent>/mandates.mdwith a header-only file. Operator authors mandates post-scaffold per spec/29.<agent>/audits.mdwith defaults from spec/30 §"Audit config file" (or wherever that section lands when spec/30 locks).Most operators will pick "no" on all three. Power users running judge-gated agents, mandate-bound agents, or audit-tracked agents get the stub files at scaffold time instead of hand-authoring them later.
Update
TEMPLATE_SECTION_SCHEMAinatomic_agents/init/constants.pyto declare the optional file shapes so Add-to-it section detection handles them correctly.4. Location question (Q1.5)
Wizard today uses
get_agents_root()(env var$ATOMIC_AGENTS_ROOTor~/.atomic-agents/); doesn't ask. Small UX gap for operators who want their agents next to a project directory.Add an optional Q1.5: "Where do you want this agent? (default: ~/.atomic-agents/)" Accept any absolute path; refuse path traversal via existing
safe_resolve_underprimitive. Default stays the same; the question is a confirmation with override.5. Doctor
check_operator_notesinformational checkAdd a new doctor check that looks for
OPERATOR_NOTES.mdat the agent root. Informational only (does not affect overall exit code). Status: "present" / "missing" with one-line nudge to create one for retrospective review.Operators who hand-built agents pre-#94 will see "missing." Operators who used the wizard will see "present." The nudge text suggests running
atomic-agents init --notes-only <agent>(TBD subcommand) to retroactively scaffold OPERATOR_NOTES.md for a hand-built agent.Acceptance criteria
atomic_agents/init/templates/_shared/OPERATOR_NOTES.md(the underscore-prefix marks it as not-a-template-name; shared across all template choices).string.Template.safe_substitute.atomic_agents/init/templates/_optional/(or similar; not under a specific template tree because they're opt-in across templates).Out of scope
--notes-onlysubcommand mentioned above is a v1.1 follow-up, file separately if pursued).Dependencies
Why this is worth keeping vs closing
The OPERATOR_NOTES.md concept has no other home in the backlog. It's a structural-quality affordance per the
feedback_atomic_agents_best_not_cheapestdiscipline: low-cost to ship, durable value for any operator who iterates an agent over weeks/months. The opt-in judges/mandates/audits scaffolding piece is similarly orphan scope: every power-user surface today requires post-scaffold hand-authoring.References
docs/spec/01-anatomy.md— the file list.docs/spec/30-...— responsibility audit config (locked or RFC, check current state).docs/spec/29-mandate-backend.md— mandates.md shape.docs/spec/...-judge-backend.md— judges.md shape.