automation — Automatizace repozitáře jsou skriptované schopnosti nad typovaným Rustem, ne shell
Schopnost může být skriptovaná (ADR 0069): skript Rhai uvnitř spustitelného souboru v Rustu orchestruje typované schopnosti přes jediný registr, dosáhne na každý povrch projekcemi, které už existují, běží v sandboxu s deklarovaným a vynucovaným stropem efektů a shell se zmenšuje migrací pod kontrolou, která odmítne nový shell bez deklarované výjimky.
AKTIVNÍ 3 of 6 issues done
- připraveno
- 2
- blokováno
- 1
- aktivní
- 0
- verify
- 0
- hotovo
- 3
- zrušeno
- 0
Problém
Automatizace repozitáře žije v shellu a každá opakující se třída vad, kterou si tento repozitář o sobě zaznamenal, má shellový případ: příznak BSD/GNU, který se na runneru chová jinak, pipeline, jejíž počet se ztratí v subshellu, kontrola, která nepřečte vlastní vzor a hlásí čisto, třídění, jehož pořadí závisí na locale. Audit z 2026-09-15 klasifikoval 223 jednotek: scripts/ci je 44 souborů a 6 017 řádků, ostatní skripty a bin 82 souborů a 14 860 řádků, lib 45 souborů a 19 513 řádků a 216 shellových testovacích případů 30 872 řádků. Podle dispozice je 97 doménová logika, která patří do jádra v Rustu, 32 orchestrace, 34 lepidlo, 3 mrtvé, 14 generované a 43 platformní adaptéry. Uživatel nástroje potřebuje Bash, aby cokoli z toho spustil, a Perl se do stromu dostává přes shasum na macOS.
Výsledek
Schopnost může být skriptovaná (ADR 0069): skript Rhai uvnitř spustitelného souboru v Rustu orchestruje typované schopnosti přes jediný registr, dosáhne na každý povrch projekcemi, které už existují, běží v sandboxu s deklarovaným a vynucovaným stropem efektů a shell se zmenšuje migrací pod kontrolou, která odmítne nový shell bez deklarované výjimky.
Aktuální stav
Není vložen žádný interpret. Každá orchestrace je shellový skript, logika baseline-ratchet je zkopírována do deseti kontrol scripts/ci, nic neodmítá nový shellový soubor a Perl je dosažitelný přes shasum.
Cílový stav
Sandboxovaný engine je součástí programu; skriptovaná schopnost je druh zjištěný indexem a registrovaný v jediném registru, spustitelný přes majordomus run a promítaný jako každá schopnost; nic nespouští Perl; nový shell pod řízenými cestami se bez výjimky odmítne a inventář migrace se sleduje; první shellové kontroly jsou skriptované schopnosti nad typovaným Rustem.
Rozsah
- apps/majordomus-cli
- podíl
- skripty
- lib
- bin
- .ai/repo
- dokumentace
- test
- SECURITY.md
Mimo rozsah
- Transliterace shellových skriptů do Rhai. Doménová logika se přesouvá do typovaných schopností v Rustu; skript jen orchestruje schopnosti
- Obecná schopnost shell nebo exec, nebo jakákoli funkce, která bere řetězec příkazu
- Perl, Python nebo Node jako přenositelná vrstva
Kritéria přijetí
- Skript Rhai běží jen uvnitř sandboxového enginu, s vypnutým eval, bez hodin, s omezenou prací a zrušitelností
- Skriptovaná schopnost deklarovaná ve vrstvě se objeví v registru, výpisu schopností, OpenAPI a MCP bez úpravy kdekoli jinde
- Skript volající schopnost, jejíž účinek přesahuje jeho vlastní deklarovaný účinek, se za běhu odmítne
- Žádný sledovaný soubor nevolá Perl, drží to kontrola
- Nový shellový soubor pod řízenou cestou bez položky výjimky je odmítnut a inventář migrace je strojově čitelný
Validace
- majordomus plan validate
- bin/majordomus-cli capabilities validate
- bin/majordomus-cli generate --check
- bash test/run.sh 383_a_scripted_capability_runs
Požadované důkazy
- sandbox_engine_proved
- scripted_capability_projected_everywhere
- effect_ceiling_enforced
- no_perl
- new_shell_refused
Úkoly
Každý z nich je prováděcí kontrakt s vlastními kritérii přijetí, validačním příkazem a požadovanými důkazy. Sloupec wave je vrstva grafu závislostí, v níž úkol leží.
| issue | status | vlna | závisí na | název |
|---|---|---|---|---|
| I1800 | HOTOVO | 0 | — | Sandboxovaný engine, ve kterém běží skriptovaná schopnost |
| I1801 | PŘIPRAVENO | 1 | I1800 | Skriptovaná schopnost je druh, zjišťovaný a registrovaný, spustitelný a promítaný jako jakákoli schopnost |
| I1802 | HOTOVO | 0 | — | Nic nespouští Perl |
| I1803 | HOTOVO | 0 | — | Nový shell se odmítne bez deklarované výjimky a inventář migrace je sledován |
| I1804 | BLOKOVÁNO | 2 | I1801 | První shell skripty se stanou skriptovanými schopnostmi nad typovaným Rustem |
| I3160 | PŘIPRAVENO | 0 | — | A behavioural case can be written as a Rust integration test over a disposable repository, and the continuity cases are the first ported |
Graf
flowchart LR
I1800["I1800<br/>The sandboxed engine a scripted capability runs in"]:::done
I1801["I1801<br/>A scripted capability is a kind, discovered and registered, runnable and projected like any capability"]:::ready
I1802["I1802<br/>Nothing runs Perl"]:::done
I1803["I1803<br/>New shell is refused without a declared exemption, and the migration inventory is tracked"]:::done
I1804["I1804<br/>The first shell scripts become scripted capabilities over typed Rust"]:::blocked
I3160["I3160<br/>A behavioural case can be written as a Rust integration test over a disposable repository, and the continuity cases are the first ported"]:::ready
I1800 --> I1801
I1801 --> I1804
classDef done stroke:#16a34a,fill:#dcfce7,color:#14532d,stroke-width:2px
classDef active stroke:#2563eb,fill:#eff6ff,color:#1e3a8a,stroke-width:2px
classDef verify stroke:#7c3aed,fill:#f5f3ff,color:#4c1d95,stroke-width:2px
classDef ready stroke:#0891b2,fill:#ecfeff,color:#164e63,stroke-width:2px
classDef planned stroke:#0891b2,fill:#ecfeff,color:#164e63,stroke-width:2px
classDef blocked stroke:#b45309,fill:#fffbeb,color:#78350f,stroke-width:2px
classDef cancelled stroke:#6b7280,fill:#f9fafb,color:#374151,stroke-width:2px
classDef superseded stroke:#6b7280,fill:#f9fafb,color:#374151,stroke-width:2pxOdkazováno z tohoto diagramu (6)
- I1800 Sandboxovaný engine, ve kterém běží skriptovaná schopnost
- I1801 Skriptovaná schopnost je druh, objevuje se a registruje, je spustitelná a promítaná jako každá schopnost
- I1802 Nic nespouští Perl
- I1803 Nový shell se odmítá bez deklarované výjimky a inventář migrace je sledován
- I1804 První shellové skripty se stávají skriptovanými schopnostmi nad typovaným Rustem
- I3160 A behavioural case can be written as a Rust integration test over a disposable repository, and the continuity cases are the first ported
Kanonický záznam: .ai/repo/project/milestones/automation.yaml. Přečtěte ho zpět pomocí majordomus plan show automation.