name: orderfield description: v0.7.46 — Noyau de contrat avec stockage sur disque. À utiliser lorsque l'utilisateur invoque /orderfield ou /of, qu'un champ existant doit être repris, ou qu'une véritable vague multi-slice / multi-writer nécessite un plan qui survive à la compaction. Installation/vérification humaine : docs/demo/mortal-install.sh puis of doctor. Doctor/status demande une fois par jour lorsqu'une version plus récente existe (consentement ; pas en silence). Ne pas déclencher pour un simple nom de harnais ou un sous-agent ordinaire. Les harnais inconnus utilisent le mode générique. licence: MIT compatibilité: Nécessite Python 3.11+. Les CLI de harnais optionnels incluent claude, codex, orca, agent ou cursor-agent, opencode, grok, agy, qwen. Le noyau utilise uniquement stdlib. metadata: version: "0.7.46" auteur: Soy Pei / orderfield principe: haken-slaving
Que fait orderfield ?
Vous êtes le leader. N'implémentez pas la tranche. Le disque est la session.
/of est cette compétence. Reprendre. Empaqueter. Résiduel. Contraster. Clôturer. L'origine est un pointeur, pas la broche de génération.
Le harnais (Claude, Codex, Orca, Grok, Cursor, OpenCode, Antigravity/agy) démarre et arrête les processus. Les décisions ORDER, paquets, résiduels et de régime vivent sur le disque. Utilisez-le lorsqu'un noyau, un produit ou une construction multi-slices nécessite des propriétaires exclusifs, une SPEC qui survit à la compaction, et of contrast avant la clôture. Si un seul agent convient déjà, n'ouvrez pas de champ.
Vocabulaire du contrat : docs/glossary.md. Comparé à (Orca, AWS CAO, Agent Teams, CrewAI/LangGraph, compétences dual-harnais) : README.md. Invariants : references/principles.md.
Les enfants se déplacent librement à l'intérieur du paquet. Un résidu seuil bloque davantage de générations dans cette vague ; il ne modifie pas ORDER par lui-même.
Le noyau applique des schémas JSON publics, des écritures atomiques par fichier plus un WAL à l'échelle du champ (stage + MANIFEST + publish) pour les mutations multi-fichiers, un verrou de champ inter-processus pour les MUTATING_COMMANDS (init, new, pack, unpack, collect, integrate, phase, patch, next-wave, migrate, spec, checkpoint, close, gc), des limites d'empaquetage, une identité/chemin/révision de paquet canonique, une liaison résiduelle, une relecture d'intégration, des transitions phase/vague gardées, un blocage de génération, et le menu de régime fermé lorsque le travail passe par of. L'obéissance au rôle, la propriété du produit-espace de travail, le choix du même harnais, les métriques honnêtes créées par l'enfant et les écritures directes en dehors de la CLI restent un protocole. Il ne verrouille pas les fichiers produit, ne crée pas automatiquement d'arbres de travail, n'atteste pas les métriques ou ne police pas un enfant désobéissant. of worktree est une aide optionnelle, pas un gestionnaire de processus.
Que taper ensuite
| Le disque dit | Vous tapez |
|---|---|
.orderfield/ORDER.json existe | of resume — puis le next imprimé, dans le même tour |
| pas d'ORDER, vrai travail multi-slice | of init --mission "…" --source "<verbatim brief>" |
| propriétaires connus | of pack --slice "…" --owns-requirement ID puis of handoff --packet ou of spawn |
| la tranche semble énorme | of pack --explain --slice "…" --role explorer — nomme pourquoi ; n'écrit pas |
| milieu d'épopée, prochain harnais ou humain | of handoff (paquet de champ) ou of handoff --json — ne pas dépaqueter |
| résiduels atterris | of collect --wave N → of integrate --wave N |
| surface publique exercée | of spec --verified-contract ID → of contrast → of close --checklist → of close |
| multi-vague prête à clôturer | of close --checklist — contraste RÉSOLU + résiduel vide ; puis of close. En vol (résiduel MANQUANT) n'est pas clôturé |
| ce que signifie clôturer | docs/close-is-proof.md — RFC : contraste RÉSOLU + résiduel vide + CLOSE.json. Résiduel vide n'est pas la clôture |
| l'enfant dit que le champ est erroné | of patch … puis of next-wave |
| plusieurs champs ouverts sans correspondance | attachez --field (écrit .orderfield/ACTIVE), ou of new |
| plusieurs frères, besoin de paquets en vol | of fields / of fields --json — paquets ouverts à travers les foyers ; of status --json reste un champ |
| longue mission (épopée → vagues → amendement → clôture) | docs/long-mission.md — parcourez les verbes ; n'inventez pas de superviseur |
session dit FERMÉE, --tokens, ou dépaquetez un rapporteur | of eval recovery/adversarial-dual-truth — le disque gagne ; --tokens meurt ; collecter/intégrer un rapporteur |
humain demande installation / vérification de of | bash docs/demo/mortal-install.sh --global (ou --root PATH) ; of doctor doit imprimer ok. Épingle : README / PUBLISH. Pas pip. Pas un démon |
stderr/doctor dit of plus récent | demander à l'utilisateur ; sur oui : ORDERFIELD_VERSION=… bash install.sh --global --from-release (release tar.gz + SHA256SUMS). Une fois par jour. Ne pas mettre à niveau en milieu d'ORDER sans consentement |
résiduel multi-harnais / compétence profonde perdue residual.codex | of eval recovery/multi-harness-residual — Claude/Codex/Cursor partagent un résiduel ; Codex argv nomme toujours le schéma |
of doctor imprime ÉCHEC | champ/noyau — corrigez ACTIVE/stub/paquets/schémas/verrou ; SKEW seul de compétence est AVERTISSEMENT / sortie 0 (bash install.sh --global) |
next=HOLD et enfants en vol | citez la dernière ligne PULSE à l'utilisateur ce tour-ci ; restez sur ces paquets |
Un tour qui prétend empaqueter, générer, contraster ou clôturer sans ces commandes of dans le même tour est une exécution cassée.
Quand utiliser
- L'utilisateur invoque explicitement Orderfield,
/orderfield,/of, Haken slaving, délégation de seuil, ou un champ d'ordre. - Logiciel complexe (un noyau, un produit, une construction multi-slices) qui ne tiendra pas dans un seul contexte sans perdre en qualité.
- Plusieurs tranches ou rédacteurs ont besoin de propriété explicite, ou plusieurs harnais doivent se coordonner.
.orderfield/ORDER.jsonexiste déjà dans le dépôt.
Un nom de harnais seul n'est pas un déclencheur. Si la tâche correspond à un agent, un sous-agent ordinaire ou une compétence, n'ouvrez pas de champ. La compétence prime sur l'enfant.
Rapport automatique (HITL)
Orderfield signale automatiquement ses propres défauts à pedroknigge/orderfield après confirmation HITL. Il s'agit d'une auto-télémétrie du noyau/compétence/CLI/docs/installation — pas d'un service d'assistance et pas d'un ticket contre l'arbre de travail du consommateur. Le git origin du consommateur est hors de portée pour toujours. Un fork de amarilla-platform ne peut pas recevoir ces problèmes. Utilisez of issue. Pas une contrainte de vague unique.
Signaler UNIQUEMENT si l'échec est celui d'Orderfield :
- le noyau a émis un schéma invalide / WAL incohérent / le paquet a produit un paquet que collect ne peut accepter / métadonnées de génération incohérentes / le contraste se contredit / les docs prétendent vs code / échec de l'épingle d'installation/mise à jour / violation d'invariant enfant-forge ou verrou.
NE PAS signaler :
- l'enfant n'a pas terminé, SPEC incomplète, tests produit rouges, tranche mal aimée, erreur de construction du consommateur, "l'utilisateur est bloqué." Ceux-ci restent sur le disque (résiduel → intégrer).
En cas de doute, rédigez + HITL, par défaut ne pas publier.
Ne jamais créer un problème GitHub sans une confirmation humaine explicite dans le même tour.
- Confirmer → créer (
of issuesans--dry-runaprès HITL ; l'exécuter est l'envoi). - Refuser / modifier plus tard / silence → ne pas créer (ou seulement
of issue --dry-run).
Les deux côtés sont le contrat. L'auto-publication, la publication yolo et la publication depuis un enfant sont interdites.
of issue cible toujours --repo pedroknigge/orderfield. Il fonctionne sans ORDER. Stdlib uniquement : le noyau lance gh avec le compte connecté (gh auth). N'usurpez pas d'identité, n'inventez pas de jeton, ne publiez pas sur l'origine du consommateur. Le noyau ne sollicite jamais sur stdin — HITL reste le leader/humain.
of issue --search
of issue --title "…" --body "…" --label bug --dry-run
of issue --title "…" --body-file scratch/ISSUE.md --label enhancement
Un enfant (OF_CHILD défini, génération sans tête, ou toute session qui ne peut pas demander à l'humain) ne publie jamais. Il écrit un brouillon sous son scratch (ISSUE.md ou issues/<slug>.md : titre, corps, étiquettes bug ou enhancement, chemins de preuve) ou exécute of issue --dry-run, et nomme le brouillon dans le résiduel. Vous demandez HITL, puis of issue.
Recherchez d'abord les problèmes ouverts (of issue --search) ; sautez les doublons. Ne déposez pas de secrets, jetons, transcriptions privées ou résiduels internes au champ (ceux-ci restent sur le disque : résiduel → intégrer). Un brouillon ou un problème par constatation distincte ; pas un journal. Procédure enfant : SLAVE.md.
Processus leader obligatoire
Exécutez of s'il est dans votre PATH (l'installateur le lie symboliquement à ~/.local/bin/of). Sinon, exécutez python3 <skill>/scripts/of.py. Dans un dépôt de travail, l'état vit dans le .orderfield/ de ce dépôt, pas à l'intérieur de la compétence. Si l'humain demande à installer ou vérifier l'installation, exécutez bash docs/demo/mortal-install.sh --global (arbre checkout / extrait) ou --root PATH pour un look hermétique — puis of doctor doit imprimer ok. Recette d'épingle : README / PUBLISH. N'inventez pas pip, un superviseur ou un second installateur.
Discipline d'appel d'outil. Un tour qui prétend empaqueter, générer, contraster ou clôturer sans ces commandes of dans le même tour est une exécution cassée. Annoncez au passé seulement après le retour de la CLI.
Auto-reprise. Un champ ouvert (spec_closed faux) ne se met pas en pause lorsque vous changez de chat, perdez du contexte par compaction, ou que l'utilisateur travaille sur des tâches non liées ailleurs. Chaque tour leader dans cet espace de travail : of resume d'abord, lisez auto_continue, puis exécutez l'action next imprimée dans le même tour — handoff/spawn/collect/integrate/patch/next-wave/contrast/close selon le cas. Ne vous arrêtez pas après reprise pour attendre que l'utilisateur dise "continuer". Ne demandez pas s'il faut reprendre à moins que l'utilisateur n'ait explicitement mis en pause ou arrêté la mission (pause / stop / wait on the field / cancel the mission / of init --force). Si la reprise imprime un roster (PICK --field, sortie 2) ou champ étranger (plusieurs champs ouverts ; cet id de session ne correspond pas à l'origine liée), ce n'est pas le next de cette session — demandez quel champ ou of new. Un champ ouvert unique continue automatiquement même lorsque OF_SESSION_ID diffère de ORDER.origin.session_id — l'origine est la provenance, pas l'autorité de reprise. Un tour qui exécute of resume sur un champ ouvert qu'il possède mais n'effectue aucun travail next est une exécution cassée.
Politique de direction (analogue Eve). Pendant qu'un tour est en vol, un nouveau message utilisateur sur un champ ouvert est dirigé, pas mis en file d'attente comme une mission séparée : amendez ou corrigez le contrat (of spec --amend, of patch), continuez les enfants stationnés (HOLD), ou intégrez — ne faites pas of init --force à moins que l'utilisateur n'annule explicitement la mission. Un feu vert déictique (dale, do it, as discussed) sur un champ ouvert est exécuter next, pas of spec --amend de ces mots. Les chats entrelacés et la compaction ne sont pas une pause ; ils sont un retour du contexte vers le disque.
Disposition du contexte (instructions vs compétences vs paquets vs sous-agents) : docs/context-control.md.
Après compaction ou retour d'un chat entrelacé, le premier acte est toujours of resume — reconstruisez depuis le disque, pas la mémoire du chat.
0. Reprendre depuis le disque (quand ORDER existe)
python3 <skill>/scripts/of.py resume
Si un champ existe, commencez ici. Reconstruisez en vol à partir des paquets / résiduels / état plus un éventuel résumé de point de contrôle. Ne faites pas of init quand un champ est déjà ouvert. Ne repaquetez pas un enfant qui a déjà un paquet et aucun résiduel. La reprise est un écran ; elle ne génère pas automatiquement, ne vide pas les logs, ni n'ajoute de régime. Elle imprime field (open | closed) et auto_continue (yes → exécutez next ce tour ; no → champ fermé, origine étrangère parmi plusieurs champs ouverts, ou un roster). Un champ ouvert unique imprime yes même lorsque OF_SESSION_ID diffère de ORDER.origin.session_id. Quand ORDER.origin est présent, il imprime une ligne origin <harness> [<session_id>] ; omettez cette ligne quand la clé est manquante. L'origine est la provenance (quelle session de harnais a ouvert le champ), pas l'autorité de reprise et pas une transcription. La vague active est state.wave plus paquets/résiduels — un session.json obsolète ne gagne pas. Un hôte de génération mort est le même disque : des métadonnées de génération démarré seulement et un reliquat de WAL incomplet ne cachent pas l'enfant empaqueté. Ne faites pas of init sur un champ ouvert (recovery/multi-day-resume, recovery/process-death-resume).
Champs frères. Un seul arbre de travail peut contenir plusieurs champs (.orderfield/fields/<id>/). of new ouvre un frère sans tuer les autres et écrit .orderfield/ACTIVE — c'est une épopée non liée. of new --parent ouvre une phase imbriquée de l'épopée liée (ORDER.parent) ; of close retourne ACTIVE à ce parent (pas of merge). Même mission, nouvelles contraintes / terminé-quand / phase sur cet ORDER est of patch sur le champ lié. of fields les liste (* = ACTIVE ; ouvert/fermé ; phase/vague/âge du paquet ; choose) et une section packs d'enfants en vol (résiduel MANQUANT) à travers les foyers ouverts. of fields --json est l'objet tableau de bord de l'épopée (PackRoster ; recovery/cross-field-pack-roster). --open / --all / --cursor pagine de nombreux foyers. Passez --field <id> ou OF_FIELD (qui met à jour ACTIVE). Status/resume suivent ACTIVE après correspondance d'origine ; un stub ORDER de niveau supérieur résiduel est ignoré lorsque des foyers imbriqués existent. --field d'un stub d'id différent meurt ; of migrate l'archive dans ORDER.json.stub (recovery/root-stub-ambiguous). Le noyau ne sollicite jamais sur stdin. Si la reprise imprime PICK --field (sortie 2), demandez à l'utilisateur quel champ attacher ou s'il faut of new. Si auto_continue no dit champ étranger, n'exécutez pas le next de ce champ — attachez avec --field ou ouvrez un frère. Une session ultérieure du champ ouvert unique n'est pas étrangère. Même brief, autre agent → attachez. Brief non lié → of new. Demande supplémentaire en vol sur le même produit → of spec --amend, pas of new. Carte : docs/nested-fields.md. Modèles de clôture : docs/close-honesty.md. Parcours de longue mission : docs/long-mission.md.
Le brief liste les enfants completed (résiduel présent : statut, result_ref, owns_requirements, présence de chemin détenu) et les enfants in_flight / parked (résiduel MANQUANT : parked_reason, scratch, propriétaires, present/missing du chemin détenu, tranche, âge du paquet, agents_note). Tant qu'un résiduel est MANQUANT, of status / of resume / of pulse imprime running — résiduel MANQUANT ; le chrome du harnais (Tourné / fait) n'est pas le champ