Přeskočit na obsah

Tato stránka byla automaticky přeložena z angličtiny, jediného jazyka, ve kterém se tento web píše. Číst originál.

I2873 — The manifest schema is generated from typed sections

Manifest.sections becomes a typed struct, one documented optional path per section the layer knows, and share/schemas/majordomus/manifest/manifest.v1.schema.json is generated from the manifest's Rust types by majordomus generate (as the graph schema is), so the section list, its descriptions and the closed shape live in one place and the hand-written schema goes away.

BLOKOVÁNO vlna 2 · p1 · profil implementation · bezpečné paralelně

Součást two-folder-integration — Repozitář, který přijme Majordomus, získá dva adresáře a dva řádky a může je vrátit.

Blocked. This issue cannot start until I2870, I1980 are done. The status is derived from that, not declared.

Cíl

Manifest.sections becomes a typed struct, one documented optional path per section the layer knows, and share/schemas/majordomus/manifest/manifest.v1.schema.json is generated from the manifest's Rust types by majordomus generate (as the graph schema is), so the section list, its descriptions and the closed shape live in one place and the hand-written schema goes away.

Proč

Split out of I2870 on 2026-10-21. The hand-written manifest schema closes `sections` with a fixed list of names and descriptions, while the Rust type reads them as an open map: generating the schema from today's types would quietly accept any section name on every App::load, a validation regression. Typing the sections first keeps the closed shape and makes the schema a projection (ADR 0004).

Aktuální stav

manifest.v1.schema.json is hand-written; Manifest.sections is a BTreeMap<String, String>; the two describe the section list twice.

Cílový stav

The sections are typed once; the schema is generated from them and generate --check holds it.

Rozsah

  • apps/majordomus-cli/src/repository.rs
  • apps/majordomus-cli/src/generate.rs
  • share/schemas/majordomus/manifest
  • .ai/repo/project/issues/I2873.yaml

Mimo rozsah

  • New sections or layout fields (I2870, I1980)

Závislosti

Co na tom čeká

Kritéria přijetí

  • Manifest.sections is a typed struct and every reader of a section reads its field
  • manifest.v1.schema.json is generated from the Rust types, keeps the closed section list and its descriptions, and generate --check holds it

Validace

  • cargo test --workspace --all-features
  • majordomus generate --check

Požadované důkazy

  • manifest_schema_generated

Důkazy

Nic nezaznamenáno. Za každým tokenem výše musí stát příkaz nebo artefakt, než lze tento úkol dokončit; vyprávění se odmítá.

Časová osa

zahájeno
—
ověřeno
—
dokončeno
—

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.

Canonical record: .ai/repo/project/issues/I2873.yaml. Read it back with majordomus plan show I2873.

Prohledává názvy a popisy všech stránek, které tento web publikuje.