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.

I1503 — Uzavřená relace se podruhé neuzavírá pod stejnou identitou

Zabránit uzavírači relací zapsat druhý záznam pro relaci, která už jeden má, aby identita relace označovala jeden záznam a index nevylučoval každého, kdo si ji nárokuje.

HOTOVO vlna 0 · p0 · profil implementation · bezpečné souběžně

Součást development-runtime — The runtime has a development surface.

Cíl

Zabránit uzavírači relací zapsat druhý záznam pro relaci, která už jeden má, aby identita relace označovala jeden záznam a index nevylučoval každého, kdo si ji nárokuje.

Proč

Kolize identit, kterou to způsobuje, není kosmetické zjištění: repozitář ohlásil svůj stav jako `degraded` a protože je každý nárokovatel sporné identity vyloučen, relace chyběla v registru, jehož celý účel je ji držet. Záznam, který nikdo nemůže přečíst, není záznam. Datová polovina byla opravena — čtyři soubory si nárokovaly majordomus://session/s-20260909152316-024f, tři z nich zapsané následující ráno s odstupem třinácti a patnácti sekund uzavíračem, který znovu uzavřel relaci uzavřenou večer předtím, a každý přísná nadmnožina commitnutého — ale oprava dat neopraví zapisovač a zapisovač vyrobí další kolizi.

Aktuální stav

Opraveno jako data na vlastní větvi tohoto milníku: ponechán jeden záznam, úplný, dokázaný jako nadmnožina porovnáním množin commitů, ne předpokladem. Zapisovač je beze změny. Nic neodmítne druhé uzavření už uzavřené relace a nic v cestě commitu nezaznamená, že dva sledované záznamy tvrdí jednu identitu — kolize byla nalezena čtením diagnostiky serveru, ne kontrolou.

Cílový stav

Uzavření již uzavřené relace je no-op nebo odmítnutí, ne druhý záznam. Sledovaný strom, ve kterém dva objekty jakéhokoli druhu nárokují jednu identitu, selže v kontrole před commitem, místo aby zhoršil index toho, kdo ho čte příště.

Rozsah

  • lib
  • .ai/repo/sessions
  • test/cases

Mimo rozsah

  • Mazání jakéhokoli záznamu relace. Oprava, která tomuto úkolu předcházela, ponechala úplný záznam a smazala jen částečný, který obsahuje.
  • Širší otázka, kdy epizoda začíná a končí, kterou vlastní ADR 0052 na vlastní větvi.

Závislosti

Žádné. Tento úkol je kořenem grafu.

Kritéria přijetí

  • Uzavření už uzavřené relace nevytvoří druhý záznam pod toutéž identitou
  • Strom nesoucí dva objekty, které si nárokují jednu identitu, kontrola odmítne a jmenuje obě cesty
  • Vlastní diagnostika repozitáře na čistém stromu nehlásí žádné duplicate_identity

Validace

  • bin/majordomus doctor
  • bash test/run.sh

Požadované důkazy

  • second_close_is_refused
  • duplicate_identity_is_gated

Důkazy

pokrývátypcommandvýsledeku commitu
second_close_is_refusedtestMJ_TEST_JOBS=2 bash test/run.sh 220_exactly_once_closetesty: 1 prošel, 0 selhalo, 0 přeskočeno (běh 2026-10-14 mezi 07:40Z a 07:58Z na masteru ce5959db59)ce5959d
duplicate_identity_is_gatedtestMJ_TEST_JOBS=2 bash test/run.sh 72_rust_mcp 63_session_records && cargo test --locked --manifest-path apps/majordomus-cli/Cargo.toml --test cli an_inspection_names_each_diagnostic_and_ends_10_on_an_errorpřípady: 2 prošly, 0 selhaly; výsledek testu: ok. 1 prošel; 0 selhalo (běh 2026-10-14 mezi 07:40Z a 07:58Z na masteru ce5959db59)ce5959d

Riziko

Nízké. Selhání, kterému je třeba se vyhnout, je uzavírač, který odmítne legitimní opětovné uzavření po pádu a nechá relaci otevřenou navždy; odmítnutí musí být specifické pro identitu, která už má úplný záznam.

Časová osa

zahájeno
2026-10-14T07:58:26Z
ověřeno
—
dokončeno
2026-10-14T07:58:34Z

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/I1503.yaml. Přečtěte jej zpět pomocí majordomus plan show I1503.

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