Blank-canvas surface with no agent-generated starting content
User opens a new document, email, or report: empty canvas, blinking cursor, agent available but silent. A half-written draft is easier to shape than an empty page, but the agent doesn't offer one.
What goes wrong
User clicks "New marketing email" in a tool that has their brand voice and audience data. Blank editor, agent idle. A contextual draft would have them editing in ten seconds.
Detection
Surfaces: agent-chat
Auditability: observational
Judgment signals:
- Find creation surfaces (new/create routes, empty editors, blank composition areas).
- Check whether agent-generated content or templates are offered on first load.
- Flag blank-canvas surfaces with no generative starting point where the agent has enough context.
Concrete commands:
rg '(/new|/create|/compose|/draft)' --type=ts -l src/
rg '(EmptyState|BlankCanvas|emptyDocument|initialContent:\s*["'"'"']{2})' --type=ts -l src/
rg '(generateDraft|suggestDraft|aiDraft|startWithAI|TemplatePicker)' --type=ts -l src/False-positive guards:
- Skip files with
// ax-audit-ignore:comm-no-generative-momentum. - Skip test/Storybook fixtures and code editors where blank is the expected state.
Fix
Offer an agent-generated draft on blank-canvas surfaces: "Start with AI draft" button, template suggestions, or outline. Always let the user dismiss and start from scratch.
Default tier and overrides
Defaults to: backlog
| Surface | Tier |
|---|---|
| Agent chat | backlog |
| Agent config | backlog |
Examples
Anti-pattern (fails):
export function NewReport() {
// Agent has project data, metrics, goals: offers nothing
return <RichTextEditor initialContent="" />;
}Applied (passes):
export function NewReport() {
const project = useProject();
const { suggestion, dismiss } = useAgentSuggestion({
prompt: `Draft a report outline for ${project.name}`,
});
return (
<div>
{suggestion && (
<Banner onAccept={() => editor.setContent(suggestion)} onDismiss={dismiss}>
Start with AI outline?
</Banner>)}
<RichTextEditor ref={editor} />
</div>
);
}Suppression
{/* ax-audit-ignore:comm-no-generative-momentum, code editor, blank canvas is intentional */}
<CodeEditor />