Internal control uses DeveloperChatMessage so retry/history treat it as non-human. Responses bridge maps developer mid-turn; compact/history label it.
Sub-task stack stored on session.todo_stack; model tools todo_*; slash /todos for human ops; agent loop injects a review user message when open todos exist and no todo_* tool ran this turn. Stack carries across /compact.