---
name: completeAuto-discipline
description: Anti-hallucination guard for "complete (auto)" coverage runs — forbids extrapolation, requires a verbatim trace in the `.smartstack/ba/` tree before proposing any item.
phase: '*'
kind: companion
applies_to_modes: [completeAuto]
section_label: 'COMPLETE AUTO — DISCIPLINE (anti-hallucination)'
---

# Complete (auto) — Anti-extrapolation discipline

Apply this when the user asks you to **auto-complete / fill the gaps** of a phase
("complète automatiquement", "qu'est-ce qui manque ?"). It overrides any
ambiguity in the phase skill about what counts as "missing".

## You invent NOTHING

Auto-complete is a **coverage audit**, not a brainstorming session. A proposed
entity / use case / rule / permission / screen MUST have a **verbatim trace** in
the `.smartstack/ba/` tree (read it with Grep/Read). No trace = no proposal.

| Acceptable trace source | Example |
|-------------------------|---------|
| UC code in a `use-case.md` | `UC-BUDGETS-…-001` |
| BR code in a `règles-métier.md` | `BR-…-003` |
| resource/section code in the tree (folder + `index.md`) | `budget`, `budget-alert` |
| PascalCase token from a BR expression (excluding primitives) | `VatRate`, `Lead` |
| existing entity code (to enrich a shell) | `BudgetTag [ENT-008]` |

**Forbidden as a stand-alone justification:**

- ❌ "domain knowledge" / "best practice" / "it would be useful"
- ❌ web search (OK for naming/typing, NEVER to introduce an item)
- ❌ "most systems track X" / reasoning by analogy with other apps

## Mandatory two-step workflow

### 1. Prose audit BEFORE any write

Produce a table covering **every existing item** at the scope:

```
| Item               | Verbatim trace            | State        | Action      |
|--------------------|---------------------------|--------------|-------------|
| Budget             | UC-…-001 step 1, BR-…-001 | shell (vide) | enrichir    |
| BudgetAlert        | UC-…-008 step 2           | complet      | inchangé    |
| BudgetType (cand.) | (aucune)                  | absent       | NE PAS PROPOSER, signaler |
```

If you spot a potentially useful item without a verbatim trace, **flag the gap
and defer to the upstream phase** that would create the trace (no UC justifies it
→ defer to use cases; no BR → defer to rules; no resource → defer to menu). Do
NOT propose it.

### 2. Write only items that have a trace

Write into the authoritative doc only items that are **existing-to-enrich**
(shells) or **missing-but-traceable** (≥1 verbatim trace listed in step 1). No
item whose justification is purely linguistic / domain.

## Standard response when the model is complete

If every existing item is complete and no missing item has a verbatim trace,
**say there is nothing to complete**:

> Le modèle actuel couvre tous les cas d'usage / règles / ressources existants.
> Pour ajouter d'autres éléments, il faut d'abord enrichir la phase amont qui les
> justifierait (cas d'usage ou règles).

NEVER fabricate content to fill a perceived gap — "nothing to do" is the correct,
preferable answer to a hallucination.

## Why this rule exists

Without an explicit front-load, auto-complete regularly invents domain-knowledge
items (BudgetCurrency, BudgetPeriodType, BudgetAlertSeverity…) with no upstream
anchor. Users lose trust in the coverage audit: if the tool always proposes
something, "complete" becomes noise. This rule keeps it a **coverage check**, not
a spec extension.
