architecture-is-enforced — Porušený invariant shodí kontrolu a zelená znamená, že proběhla každá požadovaná kontrola
Úmyslné porušení architektury shodí pojmenovanou kontrolu; červený nebo zrušený plný běh se ohlásí v den, kdy nastane; pravidlo se hlásí jako doložené jen tehdy, když jeho důkaz běžel; tvar přihlašovacího údaje nikdy neunikne odpovědí, logem ani framem; nainstalovaný release je doložen tím, že obsluhuje repozitář, který není tento.
AKTIVNÍ 3 of 6 issues done
- připraveno
- 1
- blokováno
- 1
- aktivní
- 1
- verify
- 0
- hotovo
- 3
- zrušeno
- 0
Problém
Několik invariantů je vynucováno dobře: žádný stínový inventář operací (projection-check, command-graph, mcp-tool-run, shell-inventory, mesh-check), generovaný drift (generate --check), přeskočené shellové případy (test/run.sh --no-skips). Jiné ne. Úplný plánovaný plán CI, jediný, který vybírá každou kontrolu, nevytvořil zelený verdikt ve svých posledních 10 bězích, zatímco běhy po pushi na masteru zůstávají zelené, a nic nealarmuje; pravidlo project.never-reported-is-not-green je pouze review. rule-proof nazývá pravidlo splněným, když je jeho důkaz pojmenován a přítomen: ze 163 pravidel je 133 'not run'. Žádná ochrana nebrání přihlašovacímu údaji dostat se do odpovědí HTTP, výsledků MCP, logů nebo rámců meshe (apps/majordomus-cli/src/generate.rs:1364,1398 hlídá jen generované dokumenty) a redaction::public_text nemá produkčního volajícího (apps/majordomus-cli/src/redaction.rs:223). Nic nespouští sdílený server z nainstalovaného release v cizím repozitáři a smoke test releasu selhání launcheru pohlcuje (.github/workflows/release.yml:452). Změřeno v auditu runtime baseline z 2026-10-09 na masteru 1fb8d6be44 (plan/RUNTIME_BASELINE.md).
Výsledek
Úmyslné porušení architektury shodí pojmenovanou kontrolu; červený nebo zrušený plný běh se ohlásí v den, kdy nastane; pravidlo se hlásí jako doložené jen tehdy, když jeho důkaz běžel; tvar přihlašovacího údaje nikdy neunikne odpovědí, logem ani framem; nainstalovaný release je doložen tím, že obsluhuje repozitář, který není tento.
Aktuální stav
Zkontrolováno: projekce, generování, příkazy dokumentace, release-follows-CI (scripts/ci/release-verdict). Částečně: falešná zelená (push podmnožina zelená nad červeným plným plánem), důkaz pravidla, tajemství (prompt-privacy a no-machine-paths pokrývají jen sledovaný text), verze na drátě (version-surface pokrývá jen veřejný povrch, viz I2164), dogfood (install-check spouští --standalone proti tomuto repozitáři, scripts/ci/install-check:176). Vzdálená neautentizovaná mutace je I2123.
Cílový stav
Každý řádek vynucovací tabulky auditu (plan/RUNTIME_BASELINE.md) je hlídán v CI fixturou, která kontrolu shodí, a briefing relace ukazuje poslední verdikt celého plánu.
Rozsah
- scripts/ci
- .github/workflows/validate.yml
- .github/workflows/release.yml
- .ai/repo/ci/gates.yaml
- .ai/repo/rules/project
- apps/majordomus-cli/src/redaction.rs
- apps/majordomus-cli/src/logging.rs
- apps/majordomus-cli/src/http
- apps/majordomus-cli/src/execution/redact.rs
- apps/majordomus-cli/tests/executions.rs
- apps/majordomus-cli/tests/redaction.rs
- site/static/install.sh
- test/cases
- docs/DISTRIBUTION.md
Mimo rozsah
- Zkrácení nejpomalejšího případu, kterým je I2115 (milník ci-critical-path).
- Použití public_text při publikaci důkazů, což je I1955 (test-evidence).
- Druhá pipeline CI; kontroly se připojují ke stávajícímu plánu gates.yaml.
Kritéria přijetí
- Plánovaný běh, který skončí červeně nebo zrušený, vytvoří viditelný záznam jmenující selhávající joby
- rule-proof hlásí každé pravidlo ze zaznamenaných běhů a vypíše se počet nespuštěných blokujících pravidel
- Hodnota tvaru přihlašovacího údaje poslaná serveru se nikdy neobjeví v odpovědi, v chybě MCP ani v server.log
- CI nainstaluje archiv releasu, spustí jeho sdílený server v čerstvém cizím repozitáři a přečte jeho readiness
Validace
- bin/majordomus plan validate
- scripts/ci/core-check
- MJ_TEST_JOBS=4 bash test/run.sh <the cases these issues add>
Požadované důkazy
- full_plan_alarm
- rule_proof_from_runs
- secret_never_echoed
- installed_release_dogfood
Rizika
- Hlášení každého zrušeného plánovaného běhu bude hlučné, dokud se bench a macos nevejdou do svých timeoutů; o to jde a první běhy je třeba číst, ne umlčet.
- Otevírání GitHub issues z CI je vnější mutace; musí jít přes scripts/github-sync a být idempotentní.
Ú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 |
|---|---|---|---|---|
| I2161 | HOTOVO | 0 | — | Žádná odpověď, řádek logu ani frame meshe nenese credential, který redaktor zná |
| I2162 | HOTOVO | 0 | — | Vydaný archiv, nainstalovaný, obslouží cizí repozitář přes sdílený server v CI |
| I2708 | HOTOVO | 1 | I2161 | Pole události meshe, které nikdo nevyjmenoval, neprojde kontrolou meshe a žádné pole logu ani tělo review nenese credential, který redaktor zná |
| I2841 | AKTIVNÍ | 0 | — | Prohlížečová sonda webu je rozdělena, takže úloha webu běží s rezervou v rámci svého timeoutu |
| I3090 | PŘIPRAVENO | 0 | — | The UI audit warms every surface and gives an unreachable page a second load |
| I3602 | BLOKOVÁNO | 1 | I2841 | The interaction probe is split, so every control of every page is driven inside its bound |
Graf
flowchart LR
I2161["I2161<br/>No answer, log line or mesh frame carries a credential the redactor knows"]:::done
I2162["I2162<br/>A released archive, installed, serves a foreign repository over the shared server in CI"]:::done
I2708["I2708<br/>A mesh event field nobody listed fails the mesh check, and no log field or review body carries a credential the redactor knows"]:::done
I2841["I2841<br/>The site's browser probe is split, so the site job runs well inside its timeout"]:::active
I3090["I3090<br/>The UI audit warms every surface and gives an unreachable page a second load"]:::ready
I3602["I3602<br/>The interaction probe is split, so every control of every page is driven inside its bound"]:::blocked
I2161 --> I2708
I2841 --> I3602
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)
- I2161 Žádná odpověď, řádek logu ani frame meshe nenese přihlašovací údaj, který redaktor zná
- I2162 Vydaný archiv, nainstalovaný, v CI obsluhuje cizí repozitář přes sdílený server
- I2708 Pole události meshe, které nikdo nevypsal, shodí kontrolu meshe a žádné pole logu ani tělo review nenese přihlašovací údaj, který redaktor zná
- I2841 Prohlížečová sonda webu je rozdělená, takže job webu běží bezpečně v rámci svého timeoutu
- I3090 The UI audit warms every surface and gives an unreachable page a second load
- I3602 The interaction probe is split, so every control of every page is driven inside its bound
Kanonický záznam: .ai/repo/project/milestones/architecture-is-enforced.yaml. Přečtěte si ho zpět pomocí majordomus plan show architecture-is-enforced.