I3124 — A JUnit XML report a repository already produces is imported into the evidence ledger, and nothing in that repository changes
Add an importer (majordomus evidence import --junit <file>) that normalises test cases into ledger executions with suite, case, outcome, duration, commit and tree state. Malformed XML, duplicate imports, missing artifacts and a stale revision are typed refusals. For a foreign repository this is the default Observe mode: discover and import, never instrument.
PŘIPRAVENO vlna 1 · p2 · profil implementation · bezpečné paralelně
Připraveno. Všechny závislosti jsou hotové, takže majordomus plan start I3124 bude přijato.
Cíl
Add an importer (majordomus evidence import --junit <file>) that normalises test cases into ledger executions with suite, case, outcome, duration, commit and tree state. Malformed XML, duplicate imports, missing artifacts and a stale revision are typed refusals. For a foreign repository this is the default Observe mode: discover and import, never instrument.
Proč
On 2026-10-13 (c246#0, #3) the owner asked for derived JUnit/Cobertura and for non-invasive integration. A second adopter (TypeScript, Vitest) cannot bring its results today. ADR 0041 rejected JUnit as the store; as an import format it does not contradict that decision (see the ADR proposal). It extends milestone test-evidence. Proposed in ADR 0189 (JUnit and Cobertura are formats evidence is imported from and exported to; the tracked ledger stays the only store) (proposed; it carries no authority until the owner accepts it). Sources: chatgpt-majordomus:c246#0, chatgpt-majordomus:c246#3, chatgpt-majordomus:c246#4, chatgpt-majordomus:c246#7.
Aktuální stav
Only this repository's runners reach the ledger (I1954 BLOCKED, I2786 READY). No importer exists.
Cílový stav
A Vitest or cargo-nextest JUnit file from a fixture repository becomes ledger executions that claims can cite.
Rozsah
- apps/majordomus-cli/src/evidence
- apps/majordomus-cli/src/commands/evidence.rs
- docs/EVIDENCE.md
Mimo rozsah
- Cucumber, LCOV and Cobertura (I3125)
- Running tests
Závislosti
Co na tom čeká
Kritéria přijetí
- A valid report imports deterministically and a second import is a no-op
- Malformed, stale and duplicate imports are refused with distinct codes
- A fixture foreign repository is byte-identical after import, outside .ai/local
Validace
- cargo test --manifest-path apps/majordomus-cli/Cargo.toml --lib evidence
Požadované důkazy
- case_junit_import
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/I3124.yaml. Read it back with majordomus plan show I3124.