Parcourir la documentation

Nexus : autopilot, travail parallèle et exécutions durables

Autopilot avec points de contrôle, travail parallèle supervisé, export de plan depuis un essaim, et runtime durable (create, start, launch, collect, verify, accept), adaptateur Codex et limites.

Sur cette page
  1. Autopilot
  2. Le travail parallèle
  3. Le runtime durable
  4. Le fichier de plan
  5. Le flux géré par l’hôte : create, start, record, verify, accept
  6. Interruption, annulation et nouvel essai
  7. Le backend de processus facultatif et l’adaptateur Codex
  8. Limites et ce qu’il ne fait pas

Nexus est l’orchestrateur de Core. Il a quatre rôles : Scrum Master (sprints, stories, rétrospectives), Quick Flow (un petit changement avec un minimum de cérémonie), Autopilot Controller (le pipeline de l’idée à la livraison, avec points de contrôle) et Parallel Supervisor (plusieurs agents à la fois, sans collision). En dessous, un runtime durable, bmad-plus nexus, garde sur disque des graphes de tâches et des tentatives, pour que le travail survive à une session fermée et que rien ne compte comme fait tant que des contrôles indépendants ne le disent pas. Cette page s’adresse à qui veut automatiser le travail de plus d’un agent et savoir exactement jusqu’où va l’automatisation.

Nexus et le travail en parallèle Comment Nexus repère les tâches indépendantes, donne à chacune son périmètre d’écriture, consigne les résultats réels et exécute des contrôles indépendants avant d’accepter.
Transcription

Nexus coordonne le travail des autres rôles. Il cherche les tâches indépendantes, celles qui ne touchent aucun fichier commun. Chaque tâche reçoit son propre périmètre d’écriture, et ces périmètres ne peuvent pas se chevaucher. Les agents parallèles viennent de votre outil hôte. Sans eux, les tâches s’exécutent l’une après l’autre. Nexus peut aussi lancer une commande locale planifiée ou un processus Codex CLI, sous un superviseur au premier plan. Il consigne le résultat réel, puis exécute des contrôles indépendants avant que rien ne soit accepté. Aucun planificateur ne tourne en arrière-plan, et les permissions de l’hôte continuent de s’appliquer. En autopilot, le même enchaînement va de l’idée à la livraison, avec les points de contrôle que vous configurez.

Transcription avec description visuelle

Autopilot

Dites autopilot dans la conversation de votre outil IA, puis décrivez le projet. Ce sont des instructions de conversation, pas des commandes de terminal. Nexus examine la demande et le projet avant de choisir les étapes : un petit changement va directement à l’implémentation et à la revue, alors qu’un contrat manquant ou une incertitude lourde de conséquences justifie une planification plus poussée. Pour un projet qui demande le pipeline complet, il y a trois phases.

Le pipeline autopilot
PhaseÉtapesPoint de contrôle
1. DiscoveryÉtape 0 : l’intake de chaque pack concerné par la demande. Puis Atlas (Analyste) : brainstorming et recherche de domaine ; Atlas (PM) : product brief et PRD ; Sentinel (UX) : spécification UX.discovery : vous relisez le PRD et la spécification UX.
2. BuildForge (Architecte) : architecture ; Nexus (Scrum Master) : epics, stories, plan de sprint ; puis pour chaque story, en parallèle si elles sont indépendantes : implémenter, tester, rédiger les étapes de recette qu’une personne peut observer. Un contrôle en échec garde ses preuves et est réparé dans la limite de tentatives de la tâche.architecture : vous relisez l’architecture. story : une notification par story terminée.
3. ShipRevue de code complète, revue UX, documentation, recette finalisée et remise à une personne, résultats lus et chaque échec classé, rétrospective.delivery : vous relisez le livrable final, avec la recette citée.

Chaque point de contrôle suit le réglage de _bmad/config.yaml : require_approval s’arrête et attend, notify_only informe et continue, auto continue et consigne. Avec execution_mode: autopilot, le point de contrôle story passe par défaut à notify_only. Une notification externe (un message sur votre téléphone, par exemple) demande un canal configuré et votre autorisation : une installation nue n’a aucun émetteur en arrière-plan, donc aucun rappel n’est envoyé de lui-même.

La recette humaine s’y insère aussi. Avec uat.mode: advisory (par défaut, y compris quand le bloc est absent), la page est construite et proposée à chaque livraison sans jamais bloquer ; gate fait attendre au point de contrôle de livraison que bmad-plus uat gate réussisse ; off ne produit aucune recette et le rapport de livraison le dit. Un pack peut aussi déclarer un pipeline dans le registre (étapes ordonnées, chacune avec une porte) ; autopilot déroule alors ce pipeline pour le travail du pack, après son intake. Aucun pack n’en déclare en 0.23.0 : c’est une capacité du framework, pas du contenu livré.

État, reprise et échecs

  • L’état de référence vit sous .bmad-plus/nexus/runs/. Le fichier facultatif .bmad-plus/orchestrator-state.yaml n’est qu’un résumé de navigation ; il ne peut pas prouver qu’une chose est acceptée ni qu’un processus s’est arrêté.
  • Il n’existe pas d’exécutable autopilot --resume. Pour reprendre, inspectez l’exécution durable visée et l’état réel de l’hôte, et réconciliez une tentative interrompue avant de réessayer.
  • Échec de test : les contrôles en échec sont conservés, la réparation se fait dans la limite maxAttempts de la tâche, puis les artefacts modifiés sont revérifiés. Une déclaration de fin ne peut pas faire réussir un contrôle en échec.
  • Erreur d’agent : le travail partiel et l’identité de sa tentative sont préservés, et le rapport dit ce qui reste incertain. Les tâches dépendantes attendent l’acceptation.
  • Conflit en travail parallèle : on cesse d’attribuer du travail qui se chevauche, on inspecte les propriétaires, on réconcilie leurs tentatives et on garde vos modifications avant tout nouvel essai.

Le travail parallèle

Dites parallel dans la conversation, ou laissez autopilot l’appeler quand parallel_execution vaut true et que des tâches indépendantes sont détectées. Le Parallel Supervisor décide ce qui peut tourner en même temps ; l’hôte décide s’il le peut. Le vrai parallélisme dépend de votre outil : s’il ne sait pas lancer de sous-agents, les tâches s’exécutent l’une après l’autre.

Ce qui peut et ne peut pas tourner en parallèle
ParallélisableSéquentiel uniquement
Stories sans fichier communStories qui modifient les mêmes fichiers
Recherches indépendantes (marché et technique)Une tâche dont l’entrée est la sortie d’une autre
Tests pendant que la documentation s’écritDécisions d’architecture avant l’implémentation
Modifications de modules ou paquets séparésRevue de code après l’implémentation
Les six actions de supervision
ActionQuandCe qui se passe
LaunchTâches indépendantes détectéesDémarrer des sessions d’agents parallèles.
MonitorEn continuSuivre l’avancement dans l’exécution Nexus.
PauseConflit détectéArrêter l’agent en conflit.
RestartUne fois le conflit résoluRéconcilier la tentative existante et ses effets, puis réessayer dans la limite enregistrée avec une nouvelle identité d’hôte.
ReallocateUn agent termine plus tôtAttribuer la tâche suivante de la file.
EscalateLimite de tentatives atteinte ou réconciliation bloquéeSignaler la situation non résolue et les preuves ; poursuivre le travail indépendant autorisé.

Le runtime durable

bmad-plus nexus conserve un graphe de tâches et ses tentatives sous .bmad-plus/nexus/runs/. Tout changement ordinaire prend un verrou exclusif du projet et écrit un fichier d’état avec somme de contrôle, via un fichier temporaire vidé sur disque puis un renommage atomique. L’inspection est en lecture seule. Trois issues sont tenues séparées, et cette séparation est l’intérêt même du runtime.

Exécution, vérification, acceptation
IssueQui l’établitCe que cela signifie
ExécutionUn hôte identifié rapporte completed, failed, blocked ou ambiguous ; ou un superviseur d’origine, au premier plan, collecte le résultat réel de son processus enfant.Une observation. Ce n’est pas une vérification indépendante.
VérificationNexus exécute lui-même les commandes de contrôle du plan avec des tableaux d’arguments littéraux et sans shell, enregistre les codes de sortie et une sortie bornée, et compare des instantanés des artefacts et du périmètre d’écriture avant et après.Le résultat réussit les contrôles indépendants, avec des reçus.
AcceptationUne opération séparée et sérialisée revérifie les artefacts courants, les hashes de ressources et les preuves de dépendances.L’espace de travail courant est accepté. Aucun commit Git, fusion, copie ni déploiement n’est fait.

Les preuves restent honnêtes dans le temps. Une tâche acceptée ne compte comme à jour que tant que ses artefacts, ses ressources protégées et chaque dépendance transitive correspondent encore à ce qui a été vérifié : modifier un fichier en amont invalide les preuves des dépendants, et un ancien enregistrement « accepté » n’affirme pas que des fichiers modifiés depuis passent encore. Une échéance est une observation, pas la preuve qu’un travail n’a jamais eu lieu ou qu’un processus s’est terminé.

Le fichier de plan

Un plan est un fichier JSON ; les entrées structurées passent toujours par des fichiers pour que le quoting du shell ne puisse pas réinterpréter un tableau de commande. Ce plan minimal a une tâche dont le résultat doit satisfaire un contrôle qui existe déjà (checks/check-result.cjs) et dont la source se trouve hors du périmètre d’écriture du worker.

nexus-plan.json
{
  "id": "example",
  "maxParallel": 1,
  "config": { "language": "English" },
  "tasks": [
    {
      "id": "result",
      "objective": "Produce the requested result in work/result.txt.",
      "acceptance": ["The result satisfies the independent check."],
      "dependsOn": [],
      "scope": ["work"],
      "artifacts": ["work/result.txt"],
      "resources": ["checks/check-result.cjs", ".agents/skills/agent-orchestrator/SKILL.md"],
      "checks": [
        {
          "id": "result-content",
          "command": "node",
          "args": ["checks/check-result.cjs"],
          "cwd": ".",
          "timeoutMs": 30000
        }
      ],
      "maxAttempts": 2,
      "deadlineMs": 3600000,
      "idempotent": true,
      "authorizations": ["Edit work/ and run the listed local check."]
    }
  ]
}

Champs d’une tâche
ChampSens
id, objective, acceptanceIdentifiant, ce qu’il faut produire et les conditions qui doivent tenir.
dependsOnTâches qui doivent avoir des preuves acceptées à jour avant que celle-ci démarre.
scopeFichiers ou dossiers que la tâche peut écrire. Les scopes de toutes les tâches sont exclusifs et deux à deux disjoints, même entre tâches séquentielles.
artifactsFichiers qui composent le résultat ; leurs hashes sont enregistrés.
resourcesChaque instruction et fichier de support fourni à l’hôte, haché par Nexus. Ils doivent se trouver hors du périmètre d’écriture de toute tâche. Nexus ne peut pas attester de ce qui n’est pas déclaré.
checksJusqu’à 30 par tâche : command (node ou un chemin absolu d’exécutable, dont les octets sont liés au plan), args, cwd, timeoutMs (10 à 300000). Les arguments fichier doivent être des ressources déclarées.
maxAttempts, deadlineMs, idempotentLimite de tentatives (10 au plus), échéance, et si un nouvel essai est sûr sans observation spécifique.
authorizationsTexte décrivant l’autorisation existante. Un worker ne peut ni la modifier ni répondre à une demande d’approbation.
executionContrat facultatif pour une tâche exécutée par processus (voir plus bas). Sans lui, la tâche appartient à l’hôte.

Les chemins d’un plan sont portables, relatifs au projet et utilisent /. Les chemins absolus, la remontée d’arborescence, les flux alternatifs, les noms réservés de Windows, les liens symboliques ou jonctions, et les écritures dans .git ou dans l’arbre d’état de Nexus sont rejetés. Les contrôles s’exécutent dans un environnement restreint : seuls PATH, SYSTEMROOT, WINDIR, TEMP, TMP et TMPDIR peuvent être copiés (plus quelques variables d’identité et de chemin non secrètes sous Windows), la locale est C, le fuseau est UTC, et NODE_OPTIONS, PYTHONPATH, les hooks de chargement et les identifiants sont absents. C’est une restriction d’environnement, pas un bac à sable du système d’exploitation.

Le flux géré par l’hôte : create, start, record, verify, accept

Le backend par défaut est l’hôte : votre assistant fait le travail avec ses propres moyens et en rend compte. Ci-dessous, une exécution réelle d’un fanout exporté depuis un essaim (trois unités de page ; seule la première est déroulée). Créez les trois fichiers de l’essaim et host.json dans un projet pour la reproduire. Le « worker » est une doublure qui écrit à la main le fichier de réponse : l’exemple montre la comptabilité, pas le travail d’un modèle.

swarm/page-fanout.json (la définition de l’essaim)
{
  "schemaVersion": 1,
  "id": "site-pages",
  "kind": "fanout",
  "title": "One sub-agent per page of the site",
  "units": { "source": "input" },
  "brief": { "template": "briefs/page.md", "context": [] },
  "answer": {
    "required": ["id", "done", "words"],
    "fields": {
      "done": { "type": "boolean" },
      "words": { "type": "integer", "min": 0 },
      "note": { "type": "string", "max": 200 }
    }
  },
  "tally": { "rate": "done", "numbers": ["words"] },
  "disclosure": "Each page was written by a separate sub-agent from the same brief; read them together before publishing."
}

swarm/units.json (les trois unités)
{
  "schemaVersion": 1,
  "units": [
    { "id": "about", "scope": "site/about", "title": "About us", "tone": "warm" },
    { "id": "pricing", "scope": ["site/pricing", "site/data/prices.json"], "title": "Pricing", "tone": "plain" },
    { "id": "contact", "scope": "site/contact", "title": "Contact", "tone": "short" }
  ]
}

swarm/briefs/page.md (le gabarit de brief)
# Page {{unit.id}}

Write the page "{{card.title}}" under `{{card.scope}}`, {{card.tone}} in tone. Touch nothing
outside that folder.

When the page is written, write a JSON object to `{{answer.path}}` with `id` ("{{unit.id}}"),
`done`, `words` (the word count) and an optional `note`.

{{disclosure}}

host.json (l’identité du worker et de sa session)
{ "backend": { "kind": "host", "id": "demo-worker", "sessionId": "demo-session-1" } }

Une tâche gérée par l’hôte, de la création à l’acceptation
npx bmad-plus swarm init --definition swarm/page-fanout.json --units swarm/units.json
site-pages-20261019-vwk0: fanout of 3 units, budget 26, approval not-needed.
Units listed, no seed.
Next: bmad-plus swarm briefs site-pages-20261019-vwk0
npx bmad-plus swarm plan site-pages-20261019-vwk0 --out .bmad-plus/swarm/reports/site-pages-20261019-vwk0/plan.json
/work/demo/app/.bmad-plus/swarm/reports/site-pages-20261019-vwk0/plan.json: 3 tasks, 10 in parallel.
Next: bmad-plus nexus create --plan /work/demo/app/.bmad-plus/swarm/reports/site-pages-20261019-vwk0/plan.json
npx bmad-plus nexus create --plan .bmad-plus/swarm/reports/site-pages-20261019-vwk0/plan.json
Nexus run site-pages-20261019-vwk0 — durable task coordination
about: not started; verification=pending; acceptance=pending
pricing: not started; verification=pending; acceptance=pending
contact: not started; verification=pending; acceptance=pending
Use inspect --json for recorded evidence and reconciliation observations.
npx bmad-plus nexus start site-pages-20261019-vwk0 about --input host.json
about: running; verification=pending; acceptance=pending
  Attempt: a4ec0495-660b-487c-8c83-e82ada22a857; host: demo-worker/demo-session-1
echo '{"id":"about","done":true,"words":120}' > .bmad-plus/swarm/runs/site-pages-20261019-vwk0/answers/about.json
Le worker de substitution écrit son fichier de réponse à la main. Écrivez ensuite rec.json (montré sous ce terminal) avec l’id de tentative affiché par start.
npx bmad-plus nexus record site-pages-20261019-vwk0 about --input rec.json
about: completed; verification=pending; acceptance=pending
  Attempt: a4ec0495-660b-487c-8c83-e82ada22a857; host: demo-worker/demo-session-1
npx bmad-plus nexus verify site-pages-20261019-vwk0 about
about: completed; verification=passed; acceptance=pending
npx bmad-plus nexus accept site-pages-20261019-vwk0 about
about: completed; verification=passed; acceptance=accepted
npx bmad-plus nexus inspect site-pages-20261019-vwk0
about: completed; verification=passed; acceptance=accepted
  Accept only after rechecking current artifacts and resources.
pricing: not started; verification=pending; acceptance=pending
  Start when dependencies have current accepted evidence.
Chaque commande nexus affiche aussi la ligne d’en-tête, les lignes pricing et contact et l’indication finale ; seules les lignes qui changent sont gardées ici.

Sortie capturée lors d’une exécution réelle. Source: bmad-plus 0.23.0, 2026-10-19

rec.json (ce que l’hôte rapporte ; l’id de tentative vient de start)
{
  "attemptId": "a4ec0495-660b-487c-8c83-e82ada22a857",
  "backend": { "kind": "host", "id": "demo-worker", "sessionId": "demo-session-1" },
  "outcome": "completed",
  "exitCode": 0,
  "summary": "The demo host reports the about page is written."
}

record exige l’id exact de la tentative et les mêmes backend et session. Les autres issues sont failed, blocked (la demande reste visible et garde sa capacité) et ambiguous (les acquittements ordinaires sont alors refusés ; réconciliez explicitement). verify sort avec 1 quand la vérification n’a pas réussi, et accept refuse une tâche sans vérification réussie éligible. Le code de sortie d’un worker ou une phrase disant « terminé » ne remplace jamais un reçu de contrôle.

Interruption, annulation et nouvel essai

Commandes pour les cas difficiles
CommandeFichier d’entréeCe qu’elle fait
nexus cancel RUN TASK{ "reason": "..." } (hôte) ; attemptId exact, backend et reason (processus)Enregistre une demande. Une tentative d’hôte ne signale aucun PID ni terminal ; l’hôte n’arrête que sa propre opération. La capacité reste retenue jusqu’à la réconciliation.
nexus reconcile RUN TASKLa tentative, outcome (completed, failed ou cancelled), ownerStopped: true, retrySafe, summaryClôt une tentative incertaine par une observation d’opérateur. C’est une observation, jamais la preuve indépendante que le propriétaire s’est arrêté.
nexus retry RUN TASKUne nouvelle identité d’hôteDémarre une nouvelle tentative après réconciliation. Elle consomme maxAttempts ; une nouvelle session ne remet pas la limite à zéro. Les tâches non idempotentes exigent aussi retrySafe: true.
nexus recover-lockLe hash exact du verrou donné par inspect, ownerStopped: true, une note non videRetire un verrou d’écriture interrompu après que vous avez inspecté son propriétaire. Un écrivain local vivant bloque le retrait. Jamais automatique.

Le backend de processus facultatif et l’adaptateur Codex

Une tâche peut porter un objet execution au lieu d’appartenir à l’hôte. C’est une définition fournie par l’opérateur, jamais une commande déduite du texte de la tâche. nexus launch RUN TASK reste alors au premier plan jusqu’à la fin de l’opération qu’il possède ; un terminal, un hôte de code ou un runner de CI le maintient en vie. L’enregistrement de la tâche est sauvé avant le lancement du processus : il lie un nouvel id de tentative à une nouvelle session de superviseur, à la définition exacte et aux hashes de ses entrées protégées. Le superviseur garde stdout et stderr bornés, la sortie ou le signal réels, et un reçu avec somme de contrôle. launch laisse la collecte en attente même après une sortie propre : nexus collect RUN TASK --input attempt.json (l’attemptId exact et tout l’objet backend) la clôt, et refuse un reçu étranger, répété ou tardif. Le statut 0 de launch signifie seulement que le reçu du processus dit « completed » ; cela ne veut pas dire acceptation.

Une tâche avec l’adaptateur de commande générique (objet execution)
{
  "execution": {
    "adapter": "command",
    "command": "node",
    "args": ["workers/task.cjs"],
    "cwd": ".",
    "input": "inputs/task.json",
    "resources": ["workers/task.cjs"],
    "blockedExitCodes": [75],
    "outputLimitBytes": 262144
  }
}

L’adaptateur Codex CLI installé
{
  "execution": {
    "adapter": "codex-exec",
    "command": "/absolute/path/to/codex",
    "input": "inputs/task.md",
    "instructions": [".agents/skills/agent-architect-dev/SKILL.md"],
    "sandbox": "workspace-write"
  }
}

  • L’exécutable est résolu vers un fichier ordinaire et son SHA-256 est épinglé dans le plan. Les arguments sont des tableaux littéraux, passés sans shell, sans surcharge d’environnement et sans instantané d’identifiants.
  • Les entrées texte font 256 Kio chacune au plus et le paquet entier 1 Mio. Les instructions sont placées avant l’entrée standard, avec leurs chemins relatifs.
  • Une sortie à zéro est un succès générique ; un code non nul listé dans blockedExitCodes est bloqué. Cette liste est une convention de votre enveloppe, jamais une politique d’approbation.
  • L’adaptateur Codex construit -a never exec --json --color never --sandbox MODE --skip-git-repo-check --ignore-user-config - ; model est facultatif et n’ajoute que --model MODEL. sandbox vaut read-only (défaut) ou workspace-write ; aucun autre drapeau, aucun contournement d’approbation et aucune chaîne shell n’est accepté. Seuls HOME, USERPROFILE, HOMEDRIVE, HOMEPATH et CODEX_HOME peuvent être hérités au-delà de l’environnement minimal, et les reçus listent des noms de variables, pas des valeurs.
  • L’achèvement Codex exige une sortie à zéro, une identité thread.started et un événement turn.completed sans erreur terminale. Seuls les codes d’erreur explicites approval_required sont traduits en bloqué ; les autres erreurs du fournisseur restent des échecs.
  • L’annulation est liée à l’identité renvoyée. Seul le superviseur d’origine peut signaler le processus enfant direct qu’il a créé ; rien ne tue un PID sauvegardé ni n’adopte un ancien terminal. Une échéance, une sortie excessive ou un superviseur perdu produit un résultat ambigu et garde la capacité jusqu’à la réconciliation.
  • Preuve honnête : le contrat de drapeaux a été vérifié sur Codex CLI 0.153.4. Un appel autorisé le 2026-09-11 a produit un vrai fil et un événement terminal, mais l’hôte a rejeté en lecture seule la modification de fichier demandée ; Nexus a collecté le reçu, le vérificateur indépendant a échoué et l’acceptation a été refusée. Cela montre le câblage et le confinement de l’échec sur cet hôte ; l’écriture réussie de fichiers par Codex n’y a pas été établie.

Limites et ce qu’il ne fait pas

Bornes prises en charge
BorneValeur
Tâches par exécution200
Tentatives actives par exécution32
Tentatives par tâche10
Contrôles par tâche30
Durée autorisée par contrôle10 à 300000 ms
Sortie capturée par contrôle64 Kio (la troncature est signalée)
Fichiers par instantané de périmètre ; taille d’un fichier instantané10000 ; 16 Mio
Fichiers d’entrée JSON1 Mio au plus, fichiers ordinaires
  • Pas de démon, pas de planificateur, pas de boucle sans surveillance. Chaque lancement est explicite et retient une place de capacité ; la capacité n’est pas un budget d’argent.
  • Pas de bac à sable du système d’exploitation. Les workers partagent le projet et l’utilisateur du système avec Nexus et peuvent ignorer les scopes déclarés ; les sommes de contrôle détectent un changement accidentel, ce ne sont pas des signatures. Protégez le plan et le vérificateur, et utilisez un projet isolé ou une politique d’hôte quand c’est important.
  • Pas de commit Git, de fusion ni de déploiement. L’acceptation veut dire « l’espace de travail courant a réussi les contrôles indépendants », rien de plus.
  • Aucune affirmation sur la qualité d’un modèle. Un reçu n’est pas la preuve qu’un modèle s’est amélioré en quoi que ce soit.
  • Un délai de vérification dépassé ne signale que l’enfant direct et enregistre un résultat ambigu, car l’absence de descendants ou d’effets extérieurs n’est pas prouvée. Les programmes de contrôle doivent être des commandes bornées, au premier plan.

Laisser Nexus conduire un petit projet avec points de contrôle

À utiliser au début d’un projet, avec execution_mode laissé à manual ou réglé sur hybrid pour garder les approbations.

Dans votre assistant IA
autopilot. Le projet : une petite API qui permet à des indépendants d’envoyer des devis et de les transformer en factures. Commence par l’intake de tout pack concerné. Arrête-toi au point de contrôle du PRD et à celui de l’architecture et attends mon approbation. Garde chaque story petite, vérifie chacune par rapport à ses critères d’acceptation avant la suivante, et dis-moi à la fin ce qui reste incertain.

Ce que vous devriez obtenir La Discovery s’exécute d’abord (brief, PRD, spécification UX) et s’arrête au point de contrôle discovery avec quelque chose que vous pouvez lire. Après votre approbation, Forge écrit l’architecture et Nexus s’arrête de nouveau. Les stories sont ensuite implémentées et testées une par une ; avec les points de contrôle par défaut, chaque story terminée attend aussi votre approbation (story), sauf si vous la réglez sur notify_only, et la livraison finale s’arrête pour votre relecture (delivery). Un contrôle en échec est réparé dans la limite de tentatives plutôt que laissé passer. Le rapport final dit ce qui a été vérifié et ce qui reste ouvert.

Découper le travail approuvé en tâches indépendantes

À utiliser une fois les stories écrites. L’hôte doit gérer les sous-agents pour un vrai parallélisme ; sinon les tâches s’exécutent en séquence.

Dans votre assistant IA
parallel. Prends les stories approuvées et découpe-les en tâches qui ne touchent pas les mêmes fichiers. Pour chaque tâche, donne un périmètre d’écriture exclusif, les fichiers qu’elle peut lire et un contrôle que je peux lancer. Enregistre le plan avec bmad-plus nexus create, ne lance ensemble que les tâches indépendantes et montre-moi nexus inspect après chaque vague. N’accepte pas une tâche avant que nexus verify ait réussi.

Ce que vous devriez obtenir Un nexus-plan.json aux périmètres disjoints et aux contrôles indépendants, une exécution Nexus listée par nexus inspect (chaque tâche not started; verification=pending; acceptance=pending), puis une ligne d’état par tâche au fil du travail. Une tâche dont le contrôle échoue affiche verification=failed et ne peut pas être acceptée ; un conflit met en pause la tâche en collision au lieu de l’écraser.

Voir aussi