# Category 00: Application Context

> **Loaded by:** step-01-cadrage.md (application mode only)
> **When:** Always loaded when workflow.mode = "application"
> **Purpose:** Define application-level scope, roles, and module landscape before decomposition

---

## Questions

### 0.1 Application Identity

| # | Question | Type | Options |
|---|----------|------|---------|
| Q0.1 | What is the name of this application? | Free text | PascalCase name (e.g., Sales, Operations, HumanResources) |
| Q0.2 | Briefly describe the application's purpose (1-2 sentences) | Free text | Business goal, target audience |

**AskUserQuestion batch 1:**
```
Q0.1: "Quel est le nom de cette application ?"
  header: "Application"
  options:
    - label: "Ventes / Sales"
      description: "Gestion des ventes, commandes, clients"
    - label: "Opérations / Operations"
      description: "Gestion des opérations, logistique, stocks"
    - label: "RH / HR"
      description: "Gestion des ressources humaines"
    - label: "Finance"
      description: "Gestion financière, facturation, comptabilité"

Q0.2: "Quel est l'objectif principal de cette application en 1-2 phrases ?"
  header: "Objectif"
  options:
    - label: "Automatiser un processus"
      description: "Remplacer un processus manuel par un système numérique"
    - label: "Centraliser les données"
      description: "Regrouper des informations dispersées dans plusieurs outils"
    - label: "Améliorer la visibilité"
      description: "Obtenir des tableaux de bord et du suivi en temps réel"
    - label: "Conformité"
      description: "Répondre à des obligations réglementaires ou de sécurité"
```

### 0.2 Module Landscape

| # | Question | Type | Options |
|---|----------|------|---------|
| Q0.3 | How many distinct functional areas (modules) do you envision? | Number + list | Module names and brief descriptions |
| Q0.4 | Which modules are essential for the first release (must-have)? | Multi-select | From Q0.3 list |

**AskUserQuestion batch 2:**
```
Q0.3: "Combien de domaines fonctionnels distincts (modules) envisagez-vous ?"
  header: "Modules"
  options:
    - label: "2-3 modules"
      description: "Application ciblée avec peu de domaines fonctionnels"
    - label: "4-6 modules"
      description: "Application standard couvrant plusieurs domaines"
    - label: "7-10 modules"
      description: "Application complète avec de nombreux domaines"
    - label: "10+ modules"
      description: "Application d'entreprise très complète"

Q0.4: "Quels modules sont indispensables pour la première release ?"
  header: "Priorité"
  multiSelect: true
  options: [Dynamic - populated from Q0.3 answers]
```

### 0.3 Application Roles

| # | Question | Type | Options |
|---|----------|------|---------|
| Q0.5 | Do the standard 4-tier roles work for this application? (Admin/Manager/Contributor/Viewer) | Yes/Customize | Default SmartStack roles |
| Q0.6 | Are there roles specific to certain modules only? | List | Per-module role restrictions |

**AskUserQuestion batch 3:**
```
Q0.5: "Les 4 rôles standards conviennent-ils pour cette application ?"
  header: "Rôles"
  options:
    - label: "Oui, 4 rôles standards"
      description: "Admin (tout), Manager (gestion), Contributeur (saisie), Lecteur (consultation)"
    - label: "Personnaliser les noms"
      description: "Garder les 4 niveaux mais renommer les rôles (ex: Directeur, Responsable...)"
    - label: "Ajouter des rôles"
      description: "Plus de 4 rôles nécessaires (ex: Approbateur, Auditeur...)"
    - label: "Moins de rôles"
      description: "Seulement 2-3 rôles suffisent pour cette application"

Q0.6: "Y a-t-il des rôles limités à certains modules seulement ?"
  header: "Restrictions"
  options:
    - label: "Non, tous les rôles sont globaux"
      description: "Chaque rôle a accès à tous les modules (avec ses permissions)"
    - label: "Oui, certains rôles sont restreints"
      description: "Certains rôles ne voient que certains modules"
```

### 0.4 Cross-Module Expectations

| # | Question | Type | Options |
|---|----------|------|---------|
| Q0.7 | Are there business processes that span multiple modules? | Yes/No + description | E2E flows |
| Q0.8 | What is the default role for new users? | Selection | From role list |

**AskUserQuestion batch 4:**
```
Q0.7: "Y a-t-il des processus métier qui traversent plusieurs modules ?"
  header: "Flux E2E"
  options:
    - label: "Oui, plusieurs flux"
      description: "Des processus impliquent 2+ modules (ex: commande → facturation → livraison)"
    - label: "Oui, un flux principal"
      description: "Un processus principal traverse les modules"
    - label: "Non, modules indépendants"
      description: "Chaque module fonctionne de manière autonome"
    - label: "Pas encore défini"
      description: "Les interactions seront identifiées pendant l'analyse"

Q0.8: "Quel rôle par défaut pour les nouveaux utilisateurs ?"
  header: "Rôle défaut"
  options:
    - label: "Lecteur (Viewer)"
      description: "Accès en lecture seule par défaut, droits ajoutés manuellement"
    - label: "Contributeur"
      description: "Peut créer et modifier, mais pas supprimer ni approuver"
    - label: "Aucun accès"
      description: "Pas d'accès tant qu'un admin n'assigne pas de rôle"
```

---

## Elicitation Guide

### Follow-up probes (if answers are vague)

| Signal | Probe |
|--------|-------|
| "We need everything" | "Si vous ne pouviez garder que 3 modules pour le lancement, lesquels ?" |
| Vague module names | "Pouvez-vous décrire ce que fait concrètement le module {name} en 1 phrase ?" |
| "Standard roles are fine" | "Qui utilise l'application au quotidien ? Quel est son titre exact ?" |
| No cross-module flows | "Quand un {entity} est créé dans le module A, est-ce qu'un autre module doit en être informé ?" |

### Anti-patterns

| Anti-pattern | Signal | Action |
|--------------|--------|--------|
| Too many modules | > 10 modules for v1 | Suggest phased approach: core modules first |
| No clear priority | "Everything is must-have" | Apply MoSCoW: "If you could only ship 3 modules?" |
| Role confusion | Mixing business roles with system roles | Clarify: "We're defining system access levels, not job titles" |
| Monolithic thinking | "It's all one big module" | Challenge: "Could a user only need access to part of this?" |

---

## Technical Mapping

| Answer | Maps to |
|--------|---------|
| Application name | `metadata.application`, `cadrage.applicationRoles[].role` prefix |
| Module list | `modules[]` in master feature.json |
| Roles | `cadrage.applicationRoles[]` |
| Cross-module flows | `consolidation.e2eFlows[]` (populated later in step-04) |
| Default role | `cadrage.applicationRoles[].isDefault` |
