--- name: "Agentic OS — Core" path: "docs/system/OS-CORE.md" description: "Tronc commun protocolaire des mondes Agentic. Syncé one-way Odyssée → KSK (P-040). L'overlay monde (roster, guildes, personas) vit dans bootstrap.md / daemon.md locaux." section_type: "system" version: "1.0.0" lang: "fr" date: "2026-07-22 20:42:33" updated_at: "2026-08-23 16:27:07" updated_by: "@gg45-hwk-ui" created_by: "@af5" tags: ["System", "Protocol", "Handbook"] --- # Agentic OS — Core (v1.0.0) > **Etat 22/07/2026** — monde Agentic · ctx v7 · FullGrok 208 FERMEE · console nav **v8** (6 racines) · plume @gg45. > Source jour : `records/STATUS.md` · onboarding : `docs/system/GETTING_STARTED.md` · nav : `docs/system/NAV.md` v3 · memoire : `docs/system/MEMORY.md`. Tronc commun protocolaire de tous les mondes Agentic (Odyssée, KSK, …). **Source de vérité : Odyssée** — ce fichier voyage via `tools/sync-engine-live.sh` (one-way Ody → KSK, P-040). Ne jamais l'éditer côté monde récepteur : la modification serait écrasée au sync suivant. ## Tronc vs overlay | Couche | Fichiers | Sync | |--------|----------|------| | **Tronc OS** (ce doc) | `INIT.md` · `docs/system/*` · `agents/agentic/system/format.md` · `tools/` · `skills/` | ✓ one-way Ody → KSK | | **Overlay monde** | `bootstrap.md` · `daemon.md` · `agents/_manifest.md` · roster `agents/` · guildes · personas (ex. @anima côté Ody) | ✗ souverain par monde | | **Vécu monde** | `records/` · `sessions/` · `rag/` · `cache/` · `.env` · `config/agentz.php` | ✗ jamais touché | > **Le moteur se partage. Le vécu, non.** (P-040 E · 2026-08-23 @ego) > Odyssée n'est pas le grenier de Kan Shi Kan. Ni l'inverse. Outils et constitution voyagent. Corpus, images, phrases, rag, records: **non**. > **Anima — fronton (2026-08-23 @ego) :** **Anima** = le vivant · **@anima** = l'adresse · voix publique du cercle · rolls tech = plume. > P-024b inchangé. Détail : `INIT.md` · `decisions.md` (même date). `agents/_manifest.md` se régénère **par monde** : `bash tools/build-manifest.sh`. ## Autorité protocoles — option C (2026-08-11 @ego) | Couche | Path | Rôle | |--------|------|------| | **Source de vérité** | `docs/manuel/protocoles/proto-p-*.md` | Une fiche = un P-xxx · constitution pédagogique **et** normative | | **Catalogue** | `agents/c3po/memory/protocols-catalog.md` | Index généré (`tools/protocols-catalog.sh`) · complet · 0 doublon | | **Flux récent** | `agents/c3po/memory/protocols.md` | Append d'ajouts chauds seulement · **ne gagne pas** sur le manuel | **Règles :** 1. En cas d'écart : **la fiche manuel gagne**. 2. Nouveau protocole : fiche manuel **obligatoire** (+ entrée courte optionnelle dans le flux). 3. Pas de second exemplaire « vivant » qui contredise le manuel. 4. Lint : `bash tools/links-check.sh` · régénération index : `bash tools/protocols-catalog.sh`. *Corrige l'inversion d'autorité (clause « c3po gagne » → registre quasi vide). Prop @ao5 · formalisé @c3po reco C · go @ego · @gg45.* ## Init de session (générique) > **Tri chaud/froid (2026-08-10) :** inventaire opérationnel → `docs/system/RULES-HOT-COLD-ARCHIVE.md`. > REOPEN light (défaut) ≠ cold boot — détail `docs/system/FLOW-ROLL.md`. 1. **REOPEN light (défaut)** : marqueur · audio-raw · thread · `corpus-read-since` · mail si 📬 — **pas** relecture bootstrap/daemon à chaque roll 2. **COLD BOOT** (`--full` / monde cassé) : `INIT.md` · OS-CORE · manifeste · status · overlay bootstrap/daemon si besoin 3. Charger `agents/_manifest.md` (P-024c) — présence permanente, `identity.md` lazy-load 4. `bash tools/status.sh` — **cold** ou badge ⚠️ · pas systématique à chaque roll ## P-074 — KISS (tronc) Toute proposition commence par la version la plus simple qui marche ; la sophistication se justifie, jamais la simplicité. **Session plume (amend. 2026-07-23) :** simple d'abord · cartes avant grep (`TECH-STACK` / `ui-map`) · voix avant volume — détail `FLOW-ROLL.md` §3 · `protocols.md` P-074. ## P-020 — Marqueur + mirror (règle canonique, deux modes) - **Marqueur de présence** : première action de chaque réponse — `bash tools/barr-el-marker.sh`, jamais estimé, jamais hardcodé. - **Session UI** (Chat web) : le prompt @ego est déjà mirroré dans `corpus.md` par `ChatMirror::postEgo()` à l'envoi → appeler `barr-el-marker.sh` **sans argument** (re-mirror = doublon). - **Session headless/terminal** : le runtime est la seule plume → `bash tools/barr-el-marker.sh ""`. Ne pas mirror les commandes système seules (`roll`, `@agentic: /reboot`, spawn…). - **En cas de doute** : vérifier si le message est déjà dans `corpus.md` avant de mirror. - **Fin de tour** : mirror la réponse **verbatim intégrale** — `bash tools/mirror-chat.sh {runtime-slug} --reply "" --body ""`. C'est le **dernier** tool call du tour, sans exception. Aucun résumé — le Corpus est la source de vérité. - **Corps du mirror sans marqueur** (hygiène bande, 15/07 @ego · skill Chat_Mirror · élevé protocoles 22/07 @gg45) : le marqueur `barr-el-marker.sh` s'affiche en **terminal** ; il ne se colle **pas** dans le `--body` du post corpus (header UI suffit pour heure/auteur). ## Adressage (générique) | Syntaxe | Effet | |---------|-------| | **Tu / toi** | Runtime seul, sans persona | | `@agent:` (colon collé) | L'agent nommé répond seul (P-019) | | `@all: question` | #flow — réponses en **posts distincts** (P-066), adressables individuellement · **pas** de fichier session | | `@all >> question` | Session `sessions/YYYY-MM-DD-HH:MM:SS-{slug}.md` + JOURNAL + backup | | Aucun handle | Adressé à @all (P-018) | **Triplet des rôles (2026-07-11 @ego · @af5, amendé 2026-07-14 P-068) : un agent EST (soma, pack, mémoire sur disque) · la plume ÉCRIT · channeler est l'ACTE** — la plume prête sa voix à un agent qui existe indépendamment d'elle. « Channel » est un verbe, jamais un nom d'entité. **« La plume »** remplace « câble » (proposition @af5 last-call 13/07, validée @ego 14/07) — mot déjà organique dans le corpus, il dit la fonction (écrire dans un monde écrit) là où « câble » disait le branchement. « Câble » reste lisible dans les archives, plus employé dans le neuf. ## Règles transversales (génériques) - **P-030 datetime** : tout `date:` YAML = `"YYYY-MM-DD HH:MM:SS"` (Europe/Paris, quoté) — `bash tools/now-paris.sh yaml` - **Format** : appliquer `docs/system/FORMAT.md` (version courante du tronc) sur tout fichier touché - **Mémoire directe (P-026)** : événement notable → écriture immédiate `agents/{agent}/memory/` + `user/log.md`, notifier `[@agent → {fichier} : titre]` - **FEED** : toute modification de fichier signée dans `records/FEED.md` — `### [YYYY-MM-DD HH:MM:SS] @{agent} — {action} \`{level}\`` - **P-041 grep de clôture** : toute décision qui renomme, déplace ou re-type quelque chose (handle, short, fichier, type d'item) se clôt par un **grep sur le code** (`public_html/`, `tools/`, blades, parsers, scripts) — la décision n'est finie que quand ses dépendances mécaniques sont passées au peigne. Origine : 3 écarts constitution/code en 24h le 2026-07-06. - **P-042 (amendé P-042b) — la vie est mouvement** : l'agent agit sur sa lecture sans confirmation préalable, y compris en `fondateur` — avec trois garanties : réversibilité préparée, trace complète (journal + FEED + mirror), compte-rendu factuel immédiat à la première question. Import inter-mondes : pack complet + journal de traversée + manifest + FEED + réversibilité + souveraineté des deux packs. - **Contradiction** : signaler tout conflit avec une entrée existante avant d'écrire - **Append-only** : fichiers permanents jamais écrasés — ancrer en fin de fichier - **P-043 — salons chat append-only (oldest-first)** : `records/chat/salons/*.md` (+ `.comments.md`, archives) en ordre chronologique ascendant — toute entrée s'écrit en **queue** (O_APPEND). La bande récente se lit en queue. Migration d'un monde encore en prepend : `python3 tools/flip-salons-append.py` (+ patch `public_html/` du monde). - **P-086 — Append = base (queue partout, 2026-08-22)** : une seule direction — fin de fichier. Registres (FEED · decisions · BOOKMARKS · SESSION-THREAD · LOG · ideas · mail) = queue · fiches système/offre = amends datés **en bas** · `## — Log` = queue (plus d'oxymore prepend) · `regard.*` / zone `relational.*` = réécriture. Forward immédiat · historique mixte = 2ᵉ passe / fil de l'eau. Canon : `docs/manuel/protocoles/proto-p-086.md`. - **DM inter-agents** : `agents/{destinataire}/mail/inbox/{expediteur}-to-{destinataire}-{ts}.md` + copie `mail/sent/` - **chown** : après toute écriture bash en root → owner du monde - **P-077 — qualité avant volume** : réserve tokens non goulot → substance obligatoire · *on brûle, on ne bâcle pas* · pas de livrable creux · plume seule à bord = 100 % système (Tokens Night 22/07) (`agenticworks` sur Ody, `agenticworld` sur KSK) ## P-085 — Actions log client / CRM (2026-08-04 · renum 2026-08-11) Mesurer **actions → réactions → délais** sur les relations métier (agents-clients · BIZ). > **Renumérotation 2026-08-11** : ce protocole avait été mal numéroté **P-083** (collision avec **path-as-key**, P-083 du 27/07). Canon = **P-085**. | | | |--|--| | Canon | `agents/cli-{slug}/memory/actions.md` (append-only) | | Doctrine | `docs/system/ACTIONS-LOG.md` | | Outil | `bash tools/action-log.sh {slug} {type} "titre" [opts]` | | Scope | agents-clients actifs · pas le mail DM inter-agents | **Types** : `mail_out` · `mail_in` · `wa` · `call` · `invoice_sent` · `invoice_paid` · `site` · `note` · `other` **Cycle** : out + `status: waiting` → in/close avec `related` → champ **delay** (jours). **Phase 0 / roll** (si agent-client en contexte) : scanner les `waiting` / `due` dépassés et les signaler. @ego 2026-08-04 20:57 « actions.md — intégrer protocole » · formalisé @gg45 2026-08-04 21:09:14 ## Dual-node — fronton (Agentic / Épervier·Faucon) **P-082b 2026-07-26 @ego** (supersede P-082 harfang-master · benches 14:21) · **handles 2026-07-27 @ego** : | Arbre | Nœud | |-------|------| | `agentic/` + `public_html/` **écriture** | **domicile** ser5 (hostname hawk) · bande **@grok** | | Prod publique (hébergement) | VPS Faucon · bande **@falcon** — **sert**, ne gouverne plus le FS domicile | | Pause / réserve | **@harfang** (R7) — batch optionnel, pas master | | Pull-only clients | @gyr · @hobby · @harfang (si miroir) | **Master FS** = poste domicile. **Bande :** domicile = **@grok** · VPS = **@falcon** · **plus d'alias @hawk** en bande. Plume technique `@gg45`. CLI VPS = exception. Réf. : `INIT.md` fronton · `decisions.md` P-082b + amend. handles · `tools/band-handle.sh`. ### Flotte rapaces (amend. handles 2026-07-27) | Handle bande | Rôle | Machine | |--------------|------|---------| | **@grok** | **master FS** · écriture · voix · console · emokeyboard | ser5 · hostname hawk · R5 | | **@falcon** | VPS prod · pair / pull-only côté FS | EPYC Contabo | | **@harfang** | **pause** · réserve R7 | conso/batch ; wake à la demande | | **@gyr · @hobby** | VPS clients ops · pull-only | profil `agentic-sys` | Whisper **domicile (@grok)**, pas de routine EPYC. ### Process voix (KISS · amend. P-082b + handles) ``` mic/console REC (ou Audacity) → whisper domicile → #transcripts + corpus ``` 1. **Captation** — console REC ou Audacity → `rag/audio/raw/` sur **domicile**. 2. **Whisper** — medium · fr · voice-ingest · handle bande **`@grok`** (ou `@harfang` si wake batch). 3. **@falcon** — optionnel : **push** depuis domicile (pas l'inverse pour le code). 4. **#audio** = legacy. 5. **P-081** — chaque roll : `bash tools/audio-raw-check.sh` — voir `FLOW-ROLL.md` §1bis. 6. **Edit post** — rectif ASR console · livré.