I1800 — Sandboxovaný engine, v němž běží skriptovaná schopnost
Vložit Rhai do Rust executable jako jeden konstruktor enginu, pod kterým běží každá skriptovaná schopnost: eval vypnutý, žádné hodiny, limity na operace, hloubku volání, hloubku výrazů a velikosti řetězců, polí a map a zrušení kontrolované při každé operaci.
HOTOVO vlna 0 · p1 · profil implementation · bezpečné souběžně
Součást automation — Automatizace repozitáře jsou skriptované schopnosti nad typovaným Rustem, ne shell.
Cíl
Vložit Rhai do Rust executable jako jeden konstruktor enginu, pod kterým běží každá skriptovaná schopnost: eval vypnutý, žádné hodiny, limity na operace, hloubku volání, hloubku výrazů a velikosti řetězců, polí a map a zrušení kontrolované při každé operaci.
Proč
ADR 0069 rozhoduje, že automatizace repozitáře se stane skriptovanými schopnostmi místo shellu. Deklarovaná výjimka z project.no-network-no-eval platí jen tehdy, je-li interpret sandbox a existuje právě jedno místo, které jej sestavuje, takže engine přistává první a sám.
Aktuální stav
Není vložen žádný interpret; každá orchestrace je shell.
Cílový stav
apps/majordomus-cli/src/script staví jediný engine; každá záruka, kterou dává, je dokázána unit testem.
Rozsah
- apps/majordomus-cli
- .ai/repo/adrs
Mimo rozsah
- Navázání enginu na schopnost; to je I1801
Závislosti
Žádné. Tento úkol je kořenem grafu.
Co na tom čeká
- I1801PŘIPRAVENO Skriptovaná schopnost je druh, objevuje se a registruje, je spustitelná a promítaná jako každá schopnost
- I3306BLOCKED An external scripted capability runs under default-deny grants, bounded, and leaves an audit record
Kritéria přijetí
- eval se ve skriptu nekompiluje
- skript nemá funkci hodin
- nekonečná smyčka končí limitem operací a řetězec nemůže vyrůst přes svůj limit
- zrušené provádění se zastaví při další operaci
- engine je Send a Sync
Validace
- cargo test --manifest-path apps/majordomus-cli/Cargo.toml --lib script::
Požadované důkazy
- sandbox_engine_proved
Důkazy
| pokrývá | typ | command | výsledek | u commitu |
|---|---|---|---|---|
| sandbox_engine_proved | test | cargo test --manifest-path apps/majordomus-cli/Cargo.toml --lib script:: | výsledek testu: ok. 9 prošlo; 0 selhalo; 0 ignorováno (script::tests: eval_is_not_a_function_a_script_can_call, there_is_no_hidden_clock, a_runaway_script_is_stopped_by_its_operation_limit, a_string_cannot_grow_past_its_limit, a_cancelled_execution_stops_at_its_next_operation, the_engine_is_send_and_sync_for_the_shared_server, +3) na 09c334079f5; doručeno 7ac2fde4a45 (#1162) v grand top 11e53f5a451 | 09c3340 |
Časová osa
- zahájeno
- 2026-10-16T16:43:09Z
- ověřeno
- 2026-10-16T16:43:13Z
- dokončeno
- 2026-10-16T16:43:20Z
Tato tři pole, důkazy výše a stav závislostí jsou vše, z čeho se stav skládá. Neexistuje žádné pole stavu, které by s nimi mohlo být v rozporu.
Kanonický záznam: .ai/repo/project/issues/I1800.yaml. Přečtěte ho zpět pomocí majordomus plan show I1800.