# Work-issue controller handoff schema

**Task mode:** `work-issue`

End every work-issue run with a section titled exactly `Controller Handoff`.
Use this canonical field set. Do not omit fields — use `none` or
`not verified in this session` where appropriate.

Do not use legacy fields: `Workspace mutations`, `Mutations: None` (when
mutations occurred).

```md
## Controller Handoff

- Task:
- Repo:
- Role:
- Identity:
- Active profile:
- Runtime context:
- Selected issue:
- Eligibility class:
- Issue ordering policy:
- Issue inventory pagination proof:
- Earlier issues skipped:
- Duplicate active work proof:
- Claim/lock state:
- Stable branch:
- Stable branch SHA:
- Branch name:
- Worktree path:
- Worktree inside branches:
- Worktree branch/HEAD state:
- Worktree dirty before implementation:
- Files changed:
- Validation:
- Baseline comparison:
- Commit SHA:
- Push result:
- PR number:
- PR URL:
- PR verification:
- Main checkout branch:
- Main checkout dirty state:
- Main checkout used for task work:
- File edits by author:
- Worktree/index mutations:
- Git ref mutations:
- MCP/Gitea mutations:
- Issue mutations:
- Branch mutations:
- Commit mutations:
- Push mutations:
- PR mutations:
- Cleanup mutations:
- External-state mutations:
- Read-only diagnostics:
- Blockers:
- Current status:
- Safe next action:
- Safety statement:
```

Identity format: `username / profile` (not personal email unless required — #305).

Narrative final report and controller handoff must agree on eligibility class,
selected issue, and mutation ledger categories (#319, #320).

`git fetch` and ref-updating commands belong under `Git ref mutations`, not
`Read-only diagnostics` (#297).

Forbidden claims without proof (#330): `next eligible issue`, `issue claimed`,
`validation passed`, `PR created`, `worktree clean`, `all gates passed`, etc.