Šķîþ ţö ḿàîñ çöñţéñţ

Ç-04: Üñîţ šţàţé àñđ ţĥé đéçîšîöñ ŕéçöŕđ

Šüḿḿàŕý

À kapi þŕöĵéçţ çàŕŕîéš ţĥŕéé ķîñđš öƒ îñƒöŕḿàţîöñ ŵîţĥ ţĥŕéé đéŕéñţ ĥöḿéš. Ţĥé ŕéçîþé îš çöñƒîĝ. Ţĥé ƒîļéš àŕé ţĥé đéļîṽéŕàƃļé. Ƃéţŵééñ ţĥéḿ šîţš ţĥé þŕöĵéçţ'š ŵöŕķ, àñđ ţĥàţ ŵöŕķ îš îţšéļƒ ţŵö ķîñđš öƒ ţĥîñĝ:

  • Đéŕîṽéđ šţàţé: þàŕšéđ çöñţéñţ, çöṽéŕàĝé þéŕçéñţàĝéš, ţĥé ŕüñĝš öƒ ţĥé ļàđđéŕ ŕéàçĥàƃļé ƒŕöḿ çöñţéñţ. Ŕéƃüîļđàƃļé; îţ ļîṽéš îñ ţĥé çàçĥé üñđéŕ .kapi/work/cache/ àñđ îš îĝñöŕéđ. Đéļéţé îţ àñđ à ŕé-ŕüñ ŕéçöñšţŕüçţš îđéñţîçàļ ŕéšüļţš.
  • Àüţĥöŕéđ üñîţ šţàţé: à þéŕšöñ àþþŕöṽîñĝ à ţŕàñšļàţîöñ, šîĝñîñĝ îţ öƒƒ, þàŕķîñĝ à üñîţ, öŕ ŕéçöŕđîñĝ ŵĥö ŕéṽîéŵéđ ŵĥàţ. Ţĥîš îš ñöţ đéŕîṽàƃļé ƒŕöḿ àñýţĥîñĝ; îţ ḿüšţ ƃé ķéþţ.

Àüţĥöŕéđ šţàţé ñééđš à çàŕŕîéŕ à þļàîñ ţàŕĝéţ ƒîļé çàññöţ þŕöṽîđé: šüçĥ à ƒîļé ŕéçöŕđš ţĥàţ à ţàŕĝéţ éẋîšţš, ñöţ ţĥàţ àñýöñé ƃļéššéđ îţ. core/state îš ţĥàţ çàŕŕîéŕ, à ƒîŕšţ-çļàšš, ƒöŕḿàţ-îñđéþéñđéñţ, çöḿḿîţţéđ ŕéçöŕđ öƒ ŵĥéŕé éàçĥ üñîţ šţàñđš, đîšţîñçţ ƒŕöḿ ƃöţĥ ţĥé đéŕîṽéđ çàçĥé àñđ ţĥé ŕéçýçļé çöñţéñţ ḿéḿöŕý (Ç-09).

Ţĥé éñđ-üšéŕ ṽîéŵ öƒ ŵĥàţ ţĥîš šţàţé ḿéàñš (ţĥé ļàđđéŕš, ţĥé ĝàţéš, àñđ ţĥé ŕéṽîéŵ ǫüéüé đéŕîṽéđ ƒŕöḿ îţ) îš Çöñṽéŕĝéñçé àñđ ţĥé þŕöĵéçţ šţöŕé.

Çöñţéẋţ

Ţĥé çöñṽéŕĝéñçé ḿöđéļ đéŕîṽéš à þŕöĵéçţ'š þéŕ-ļöçàļé šţàñđîñĝ: þéŕ (unit, locale), à ḿöñöţöñé ļàđđéŕ (draft → translated → reviewed → signed-off) àñđ à šýḿḿéţŕîç šöüŕçé ļàđđéŕ (authored → checked → approved). Ţĥé ļöŵéŕ ŕüñĝš àŕé đéŕîṽàƃļé ƒŕöḿ çöñţéñţ: àñ àƃšéñţ ţàŕĝéţ îš ƃéļöŵ ţĥé ļàđđéŕ, à þŕéšéñţ ñöñ-éḿþţý ţàŕĝéţ îš àţ ļéàšţ ţŕàñšļàţéđ. Ţĥé ĥîĝĥéŕ ŕüñĝš àŕé ñöţ: ŵĥéţĥéŕ à þéŕšöñ ŕéṽîéŵéđ ţĥîš éẋàçţ ţŕàñšļàţîöñ îš šöḿéţĥîñĝ šöḿéöñé đîđ, àñđ îţ ĥàš ţö ƃé šţöŕéđ šöḿéŵĥéŕé.

Ţĥé šöüŕçé ļàđđéŕ îš ñöţ ḿéŕéļý ŕéþöŕţéđ: îţ ĝàţéš ţĥé ļööþ šýḿḿéţŕîçàļļý ŵîţĥ ţĥé ţàŕĝéţ ļàđđéŕ. Ĵüšţ àš à ţàŕĝéţ ƃéļöŵ îţš šĥîþ ĝàţé çàññöţ šĥîþ, šöüŕçé ƃéļöŵ ţĥé þŕöĵéçţ'š šöüŕçé ĝàţé (model.DefaultSourceGate, çĥéçķéđ) îš ñöţ ţŕàñšļàţéđ. Ţĥé source-gate ļéàđîñĝ šţàĝé šéţţļéš àñđ ĝàţéš ţĥé šöüŕçé ƃéƒöŕé ţĥé ƒàñ-öüţ, àñđ ĥöļđš üñđéŕ-ŕéàđý šöüŕçé ŕàţĥéŕ ţĥàñ ţŕàñšļàţîñĝ îţ (Çöñṽéŕĝéñçé, šöüŕçé ƒîŕšţ).

Ţĥé ḿöđéļ àļŕéàđý éẋþŕéššéš ţĥéšé ƒàçţš (model.TargetStatus, model.SourceStatus, model.Origin). Ŵĥàţ ţĥéý ñééđ îš à þéŕšîšţéñçé îñđéþéñđéñţ öƒ ţĥé đéļîṽéŕàƃļé ƒöŕḿàţ. Ţĥé đàñĝéŕ îš öṽéŕļöàđîñĝ àñ éẋîšţîñĝ šţöŕé, îñ þàŕţîçüļàŕ ţĥé çöñţéñţ ḿéḿöŕý, ŵĥîçĥ îš çöñţéñţ-ķéýéđ ļéṽéŕàĝé, ñöţ þŕöĵéçţ šţàţé. Çöñƒļàţîñĝ ĥàṽé ŵé éṽéŕ ţŕàñšļàţéđ ţĥîš šţŕîñĝ? (ŕéçýçļé, çöñţéñţ-ķéýéđ) ŵîţĥ îš ţĥîš üñîţ šîĝñéđ öƒƒ, ƃý ŵĥöḿ? (šţàţé, üñîţ-ķéýéđ) îš à çàţéĝöŕý éŕŕöŕ: ţĥé ţŵö ĥàṽé đéŕéñţ ķéýš àñđ đéŕéñţ ļîƒéçýçļéš.

Đéçîšîöñ

Ţŵö ķîñđš öƒ šţàţé, ţŵö ĥöḿéš

Ţĥé îñṽàŕîàñţ "đéļéţé ţĥé çàçĥé àñđ ļöšé ñöţĥîñĝ" ĥöļđš þŕéçîšéļý ƃéçàüšé ţĥé ţŵö àŕé šéþàŕàţéđ:

ĶîñđÉẋàḿþļéšĤöḿéÀüţĥöŕîţàţîṽé?
Đéŕîṽéđþàŕšéđ ƃļöçķš, çöṽéŕàĝé, ŕüñĝš ŕéàçĥàƃļé ƒŕöḿ çöñţéñţ.kapi/work/cache/, àñđ ţĥé đéŕîṽéđ ţàƃļéš öƒ .kapi/work/store.dbñö: ŕéƃüîļđàƃļé, îĝñöŕéđ
Àüţĥöŕéđ üñîţ šţàţéàþþŕöṽàļš, šîĝñ-öƒƒ, þàŕķîñĝ, ŕéṽîéŵéŕ, ñöţéš.kapi/state/ (core/state)ýéš: çöḿḿîţţéđ

Ţĥé çàçĥé ḿàý ḿîŕŕöŕ àüţĥöŕéđ šţàţé îñ ţŕàñšîţ, ƃüţ îţ ñéṽéŕ öŵñš îţ. Ţĥé đüŕàƃļé ĥöḿé îš ţĥé çöḿḿîţţéđ ŕéçöŕđ üñđéŕ .kapi/state/, àñđ ţĥé öñļý ŵîñđöŵ îñ ŵĥîçĥ ţĥé ŕéçöŕđ éẋîšţš ñöŵĥéŕé éļšé îš ƃéţŵééñ ŵŕîţîñĝ îţ àñđ kapi commit.

Çöñţéñţ ḿéḿöŕý îš ŕéçýçļé, ñöţ ţĥé šţàţé çàŕŕîéŕ

Ţĥé çöñţéñţ ḿéḿöŕý (Ç-09) îš ţĥé ŕéçýçļé çöŕþüš: à çöñţéñţ-ķéýéđ þööļ öƒ šöüŕçé→ţàŕĝéţ þàîŕš ŕéüšéđ ţö þŕé-ƒîļļ àñđ ļéṽéŕàĝé ƒüţüŕé ŵöŕķ. Îţ đöéš ñöţ ŕéçöŕđ ŕéṽîéŵ öüţçöḿéš. Àđđîñĝ à þàîŕ ţö ţĥé ḿéḿöŕý (kapi apply ŵîţĥ kind:"memory") îš ŕéçýçļé ļéṽéŕàĝé; àþþŕöṽîñĝ à üñîţ (kapi apply ŵîţĥ kind:"review") ŵŕîţéš ţĥé šţàţé šţöŕé. Àñ àþþŕöṽéđ þàîŕ ḿàý àļšö ļàñđ îñ ţĥé ḿéḿöŕý àš ļéṽéŕàĝé, ƃüţ ţĥàţ îš à šîđé 郃éçţ, ñöţ ŵĥéŕé ţĥé ŕéçöŕđ ļîṽéš.

Ţĥé çöḿḿîţţéđ šéŕîàļîžàţîöñ îš ţĥé ţŕüţĥ; ţĥé ŵöŕķîñĝ šéţ îš àñ îñđéẋ

Šţàţé ĥàš ţŵö ŕéþŕéšéñţàţîöñš, àñđ çöñƒļàţîñĝ ţĥéḿ îš ţĥé ţŕàþ ţö àṽöîđ:

  1. Šöüŕçé öƒ ţŕüţĥ: à çöḿḿîţţéđ, đ-ƒŕîéñđļý šéŕîàļîžàţîöñ. ĴŠÖÑ Ļîñéš üñđéŕ .kapi/state/, öñé šĥàŕđ þéŕ đöçüḿéñţ, çöḿḿîţţéđ: ḿéŕĝéàƃļé, ŕéṽîéŵàƃļé îñ à đ, éẋçĥàñĝéàƃļé ţö ẊĻÎƑƑ (<target state=…>, ñöţéš, þĥàšé àñđ öŵñéŕ, Ḿ-01), çàŕŕîéđ ƃý à .kpz þàŕçéļ'š ƃîļîñĝüàļ þŕöƒîļé. Ţĥîš îš ŵĥàţ à ƒŕéšĥ çĥéçķöüţ ŕéšţöŕéš ƒŕöḿ. Éàçĥ ļîñé îš öñé UnitState öƃĵéçţ; ļîñéš àŕé šöŕţéđ ŵîţĥîñ à šĥàŕđ šö à ƒîļé'š ƃýţéš đéþéñđ öñļý öñ îţš çöñţéñţš, àñđ ţĥéŕé îš ñö éñṽéļöþé, ṽéŕšîöñ ƒîéļđ öŕ ĥéàđéŕ.

  2. Ŵöŕķîñĝ šéţ: ţàƃļéš îñ ţĥé þŕöĵéçţ'š öñé đàţàƃàšé. core/state.WorkStore îñšîđé .kapi/work/store.db (Ç-03) îš ţĥé ƒàšţ ŕàñđöḿ-àççéšš ḿöđéļ ŵîţĥ ţŕàñšàçţîöñš àñđ ĥàšĥ ļööķüþš. Đéŕîṽéđ ƒŕöḿ ţĥé ŕéçöŕđ: šééđéđ ƒŕöḿ îţ ŵĥéñ éḿþţý, ḿàţéŕîàļîžéđ ƃàçķ ƃý Commit.

    Ƃéîñĝ à đàţàƃàšé ŕàţĥéŕ ţĥàñ ḿéḿöŕý îš ŵĥàţ ḿàķéš ţĥé ŕéçöŕđ đüŕàƃļé ţĥé ḿöḿéñţ îţ îš ŵŕîţţéñ, šö çöḿḿîţţîñĝ îš àƃöüţ þüƃļîšĥîñĝ îţ ŕàţĥéŕ ţĥàñ àƃöüţ ñöţ ļöšîñĝ îţ. Ţĥàţ îš ŵĥàţ ļéţš çöḿḿîţţîñĝ ƃé éẋþļîçîţ ŵîţĥöüţ îñṽéñţîñĝ à ŵàý ţö ļöšé ŵöŕķ. Îţ îš àñ îñđéẋ îñ éṽéŕý ŕéšþéçţ ƃüţ öñé: đéļéţîñĝ store.db çöšţš ñöţĥîñĝ àļŕéàđý çöḿḿîţţéđ, àñđ îţ çöšţš éẋàçţļý ţĥé üñîţ šţàţé šţàĝéđ šîñçé. Ţĥàţ ƃöüñđéđ éẋþöšüŕé îš ŵĥý ţĥé đàţàƃàšé šîţš àţ ţĥé ţöþ öƒ .kapi/work/ àñđ ñöţ üñđéŕ cache/.

    Îñ ţĥé ƃŕöŵšéŕ, ŵĥéŕé ţĥéŕé îš ñö ŠǪĻîţé, ţĥé ŵöŕķîñĝ šéţ þéŕšîšţš ţö à ĴŠÖÑ šîđéçàŕ, .kapi/work/store.json; ţĥé ḿöđéļ îš üñçĥàñĝéđ.

Çöḿḿîţţîñĝ à ƃîñàŕý đàţàƃàšé àš ţĥé àüţĥöŕîţàţîṽé šţöŕé ŵöüļđ ƃé ĥöšţîļé ţö ŕéṽîéŵ (öþàǫüé, çöñƒļîçţ-þŕöñé) àñđ ŵöüļđ đéƒéàţ éẋçĥàñĝé, šö ţĥé đüŕàƃļé ĥöḿé îš ţĥé ţéẋţ šéŕîàļîžàţîöñ àñđ ţĥé đàţàƃàšé îš öñļý à ŵöŕķîñĝ îñđéẋ öṽéŕ îţ. Đîšçàŕđ ţĥé ŵöŕķîñĝ îñđéẋ, ŕéöþéñ ƒŕöḿ ţĥé çöḿḿîţţéđ ŕéçöŕđ, ļöšé ñöţĥîñĝ ƃéýöñđ ŵĥàţ ŵàš šţàĝéđ.

Ţĥé ŕéçöŕđ ḿöṽéš üñđéŕ ţĥé ŵöŕķîñĝ šéţ

Ţĥé ŕéçöŕđ îš ĝîţ-ţŕàçķéđ àñđ ţĥé ŵöŕķîñĝ šéţ îš ñöţ, šö git switch ŕéþļàçéš éṽéŕý šĥàŕđ ŵĥîļé ţĥé đàţàƃàšé ķééþš ţĥé ŕöŵš öƒ ţĥé ƃŕàñçĥ ļéƒţ ƃéĥîñđ. À çöḿḿîţ ƒŕöḿ ţĥàţ šéţ ŵŕîţéš öñé ƃŕàñçĥ'š đéçîšîöñš îñţö àñöţĥéŕ ƃŕàñçĥ'š ŕéçöŕđ àñđ þŕüñéš ţĥé šĥàŕđš ţĥöšé ŕöŵš đö ñöţ çöṽéŕ, ƃéçàüšé WriteCommitted ŕéþļàçéš à đîŕéçţöŕý ŕàţĥéŕ ţĥàñ àþþéñđîñĝ ţö öñé.

Šö ţĥé šéţ çàŕŕîéš ţĥé îđéñţîţý öƒ ţĥé ŕéçöŕđ îţ ŵàš ƃüîļţ ƒŕöḿ: state.CommittedDigest, öṽéŕ éàçĥ šĥàŕđ'š ñàḿé àñđ ƃýţéš, šţàḿþéđ îñ ţĥé ŵöŕķîñĝ šéţ'š öŵñ state_meta ţàƃļé. Ţĥàţ îš ţĥé šàḿé ķéý-àñđ-ṽàļüé šĥàþé ţĥé ƃļöçķ çàçĥé üšéš ƒöŕ îţš éẋţŕàçţîöñ šţàḿþš (Ç-03). Éṽéŕý öþéñ çöḿþàŕéš ţĥé šţàḿþ àĝàîñšţ ţĥé šĥàŕđš öñ đîšķ, àñđ šö đöéš éṽéŕý ŵŕîţé ţö ţĥé ŕéçöŕđ, šö à þŕöçéšš ĥöļđîñĝ ţĥé šţöŕé öþéñ àçŕöšš à ƃŕàñçĥ šŵîţçĥ þüƃļîšĥéš ƒŕöḿ ţĥé ŕéçöŕđ ţĥîš çĥéçķöüţ ĥöļđš.

À šţàḿþ ţĥàţ ñö ļöñĝéŕ ḿàţçĥéš ḿéàñš ţĥé üñšţàĝéđ ŕöŵš đéšçŕîƃé à ŕéçöŕđ ţĥîš çĥéçķöüţ đöéš ñöţ ĥöļđ. Ţĥöšé ŕöŵš àŕé đŕöþþéđ àñđ ŕéƃüîļţ ƒŕöḿ ţĥé šĥàŕđš, ŵĥîçĥ ţĥé ŕéçöŕđ šüþþļîéš îñ ƒüļļ; à ŕüñ'š öŵñ ƃàšîš ŕéçöŕđš ĝö ŵîţĥ ţĥéḿ, àñđ ţĥé ñéẋţ ŕüñ ŵŕîţéš ţĥéḿ àĝàîñ àĝàîñšţ ţĥé ţŕéé îţ ŕéàđš. Šţàĝéđ đéçîšîöñš çŕöšš ţĥé ŕéƃüîļđ üñţöüçĥéđ (WorkStore.Staged çàŕŕîéš ţĥéḿ), ƃéîñĝ ţĥé öñé ţĥîñĝ îñ ţĥé šéţ ţĥàţ ñö ŕéçöŕđ šüþþļîéš.

Ţĥé çŕöššîñĝ îš ŕéþöŕţéđ. kapi status àñđ kapi commit éàçĥ šţàţé ţĥàţ ţĥé ŕéçöŕđ çĥàñĝéđ šîñçé ţĥé šéţ ŵàš šééđéđ ƒŕöḿ îţ àñđ ĥöŵ ḿàñý šţàĝéđ đéçîšîöñš çàḿé àçŕöšš, šö à þéŕšöñ çàñ šéé ţĥàţ đéçîšîöñš ḿàđé öñ àñöţĥéŕ ƃŕàñçĥ àŕé àƃöüţ ţö ƃé ŵŕîţţéñ ĥéŕé. kapi commit --dry-run ŕéþöŕţš ŵĥàţ à çöḿḿîţ ŵöüļđ ŵŕîţé àñđ ŵŕîţéš ñöţĥîñĝ.

Öñé ļîñé þéŕ üñîţ, šĥàŕđéđ ƃý đöçüḿéñţ, ŕàţĥéŕ ţĥàñ öñé ĴŠÖÑ àŕŕàý. À šîñĝļé îñđéñţéđ đöçüḿéñţ ḿéàñš öñé àþþŕöṽàļ ŕéŵŕîţéš éṽéŕý ƃýţé öƒ ţĥé ƒîļé: ţĥé đ ƒöŕ à öñé-ŵöŕđ çĥàñĝé îš ţĥé ŵĥöļé þŕöĵéçţ, ţŵö ƃŕàñçĥéš ţöüçĥîñĝ üñŕéļàţéđ đöçüḿéñţš çöñƒļîçţ öñ šîĝĥţ, àñđ à ŕüñ àþþŕöṽîñĝ ḿàñý üñîţš ḿöṽéš öŕđéŕš öƒ ḿàĝñîţüđé ḿöŕé ƃýţéš ţĥàñ îţ ŵŕîţéš. À ļîñé þéŕ üñîţ ḿàķéš àñ àþþŕöṽàļ à öñé-ļîñé đ; à šĥàŕđ þéŕ đöçüḿéñţ ķééþš à đöçüḿéñţàţîöñ éđîţ ƒŕöḿ çĥüŕñîñĝ ţĥé šĥàŕđ ĥöļđîñĝ ţĥé îñţéŕƒàçé šţŕîñĝš.

Ŕéçöŕđîñĝ îš îḿþļîçîţ; þüƃļîšĥîñĝ îš éẋþļîçîţ

Ḿüţàţîöñš ţö ţĥé ŵöŕķîñĝ šéţ àŕé ñöţ þüƃļîšĥéđ üñţîļ àñ éẋþļîçîţ Commit, ţĥé ḿéñţàļ ḿöđéļ öƒ šţàĝéđ çĥàñĝéš:

  • Put / Delete ḿüţàţé ţĥé ŵöŕķîñĝ šéţ.
  • Pending() ŕéþöŕţš ĥöŵ ḿàñý üñîţ-šţàţé çĥàñĝéš àŕé šţàĝéđ. kapi status šüŕƒàçéš ţĥé çöüñţ àñđ ñàḿéš ţĥé çöḿḿàñđ ţĥàţ þüƃļîšĥéš ţĥéḿ, šţàýîñĝ šîļéñţ ŵĥéñ ţĥéŕé àŕé ñöñé, öñ ţĥé ĥàƃîţ ţĥàţ à çļéàñ þŕöĵéçţ šĥöüļđ ŕéàđ çļéàñ.
  • Commit() ḿàţéŕîàļîžéš ţĥé ŵöŕķîñĝ šéţ ţö ţĥé đüŕàƃļé ĥöḿé îñ öñé àüđîţàƃļé šţéþ, ŕàţĥéŕ ţĥàñ çĥüŕñîñĝ à ŵŕîţé öñ éṽéŕý àþþŕöṽàļ. kapi commit îš ţĥé ṽéŕƃ, àñđ kapi commit --dry-run ŕéþöŕţš ŵĥàţ îţ ŵöüļđ ŵŕîţé.

Ŕéçöŕđîñĝ àñđ þüƃļîšĥîñĝ àŕé đéŕéñţ àçţš. À ŕüñ öƒ àüţöḿàţéđ àþþŕöṽàļš šĥöüļđ ñöţ ļàñđ îñ ţĥé ţŕàçķéđ ŕéçöŕđ ƃéƒöŕé àñýöñé ĥàš ļööķéđ àţ îţ, àñđ àñ éẋþļîçîţ çöḿḿîţ îš ţĥé ḿöḿéñţ àţ ŵĥîçĥ šöḿéöñé çàñ.

Ƃéçàüšé ţĥé ŵöŕķîñĝ šéţ îš à đàţàƃàšé ŕàţĥéŕ ţĥàñ ḿéḿöŕý, šţàĝéđ šţàţé šüŕṽîṽéš ţĥé þŕöçéšš. Ţĥé ţîéŕš àŕé šţàĝéđ àñđ çöḿḿîţţéđ, ñöţ îñ ţŕàñšîţ àñđ đüŕàƃļé.

Üñîţ šţàţé îš üñîţ-ķéýéđ àñđ ƃöüñđ ţö ţĥé þàîŕîñĝ îţ ƃļéššéđ

Šţàţé îš ķéýéđ ƃý ţĥé üñîţ: (document, unit identity, variant), ŵĥéŕé ţĥé ṽàŕîàñţ îš ţĥé ļöçàļé þļüš àñý ƒüŕţĥéŕ ǫüàļîƒîçàţîöñ, ñöţ ƃý çöñţéñţ.

Ţĥé đöçüḿéñţ îš îđéñţîţý, ñöţ à ļàƃéļ ƃéšîđé îţ. À üñîţ îđ îš üñîǫüé îñšîđé îţš đöçüḿéñţ àñđ ñöŵĥéŕé ŵîđéŕ: à ŕéàđéŕ ñàḿéš ƃļöçķš ƃý ŵĥàţ ţĥé ƒöŕḿàţ ĝîṽéš îţ, àñđ ƒöŕ þŕöšé ţĥöšé ñàḿéš ƒöļļöŵ þöšîţîöñ, šö éṽéŕý þàĝé öƒ à đöçüḿéñţàţîöñ çöļļéçţîöñ çàŕŕîéš àñ h, à p àñđ àñ fm_title. Ķéýéđ öñ ļéšš, öñé þàĝé'š đéçîšîöñ îš ţĥé çöļļéçţîöñ'š đéçîšîöñ: ţĥé ŕéṽîéŵéŕ'š àþþŕöṽàļš àŕé àççéþţéđ, ŕéþöŕţéđ àþþļîéđ, àñđ àļļ ƃüţ ţĥé ļàšţ đöçüḿéñţ'š đîšçàŕđéđ, àñđ ţĥé þàĝéš ţĥàţ ļöšţ ţĥéîŕš ţĥéñ ŕéàđ àš šţàļé àĝàîñšţ à šöüŕçé ñöƃöđý éđîţéđ.

Ţĥé đöçüḿéñţ'š îđéñţîţý îš à đüŕàƃļé ķéý, ñöţ îţš þàţĥ. Ŵĥéñ éẋţŕàçţîöñ ŕéàđš à đöçüḿéñţ, ţĥé ŵöŕķîñĝ šéţ ŕéçöŕđš ŵĥàţ ţĥé đöçüḿéñţ ĥéļđ àš ŵéļļ àš ŵĥéŕé îţ ļîṽéš (project.DocumentAdopter, îḿþļéḿéñţéđ ƃý ţĥé þŕöĵéçţ þööļ), àñđ WorkStore.AdoptDocuments ḿàţçĥéš éàçĥ ŕéàđ àĝàîñšţ ţĥé đöçüḿéñţš ţĥé þŕöĵéçţ àļŕéàđý ķñöŵš, ḿöṽîñĝ ţĥé đéçîšîöñš ƒîļéđ üñđéŕ àñ àđđŕéšš öñţö ţĥé îđéñţîţý. À ŕüñ ŕéšöļṽéš ţĥé šçöþé öƒ éṽéŕý đéçîšîöñ îţ ŕéçöŕđš öŕ ŕéàđš ţĥŕöüĝĥ öñé host.DocumentIndex, ŕéàđ öñçé ƒŕöḿ ţĥé šţöŕé. À ƒîļé ţĥàţ ḿöṽéš ķééþš îţš àþþŕöṽàļš. Ţĥé þàţĥ îš ţĥé đöçüḿéñţ'š àđđŕéšš: îţ îš ŵĥàţ à đéçîšîöñ îš šçöþéđ ƃý ŵĥéŕé ţĥé þŕöĵéçţ ĥöļđš ñö ķéý (à ƒŕéšĥ çĥéçķöüţ, à ƃüîļđ ŵîţĥ ñö šţöŕé), àñđ host.DecisionScope îš ţĥàţ öñé ƒàļļƃàçķ đéƒîñîţîöñ, šö éṽéŕý þàŕţý ñàḿéš àñ üñŕéšöļṽéđ đöçüḿéñţ ţĥé šàḿé ŵàý. Îţ îš àļšö ţĥé ñàḿé ţĥé çöññéçţöŕ ĝîṽéš ţĥé îţéḿ, šö à đéçîšîöñ ţŕàṽéļš ţĥé šýñç þŕöţöçöļ šçöþéđ ţö ţĥé îţéḿ îţ ŵàš ḿàđé îñ.

À đéçîšîöñ îš ñöţ àƃöüţ à ţŕàñšļàţîöñ; îţ îš àƃöüţ à þàîŕîñĝ: ţĥîš ŕéñđéŕîñĝ, öƒ ţĥîš šöüŕçé. Éàçĥ ŕéçöŕđ ţĥéŕéƒöŕé çàŕŕîéš ƃöţĥ ĥàļṽéš, çöḿþüţéđ ƃý ţĥé öñé đéƒîñîţîöñ éṽéŕý þàŕţý üšéš:

  • targetHash: ţĥé çöñţéñţ ĥàšĥ öƒ ţĥé šþéçîƒîç ţŕàñšļàţîöñ îţ ƃļéššéš (state.TargetHash).
  • contentHash: ţĥé ƃàšîš, ţĥé çöñţéñţ ĥàšĥ öƒ ţĥé šöüŕçé ŵöŕđîñĝ îţ ƃļéššéđ ţĥàţ ţŕàñšļàţîöñ ƒöŕ (state.SourceHash, ŵĥîçĥ îš model.ComputeContentHash, ţĥé šàḿé ñöŕḿàļîžàţîöñ core/reconcile ḿàţçĥéš îđéñţîţý öñ, šö à üñîţ'š ƃàšîš àñđ îţš îđéñţîţý šîĝñàļ àŕé öñé ñüḿƃéŕ).

À ŕéçöŕđ îš šţàļé ŵĥéñ éîţĥéŕ ĥàļƒ ñö ļöñĝéŕ ḿàţçĥéš ŵĥàţ ţĥé þŕöĵéçţ ĥöļđš. Éđîţîñĝ àñ àþþŕöṽéđ ţŕàñšļàţîöñ đŕöþš ţĥé üñîţ ƃàçķ ƃéļöŵ ŕéṽîéŵéđ; ŕéŵŕîţîñĝ îţš šöüŕçé đöéš ţĥé šàḿé. Ƃîñđîñĝ öñļý ţĥé ţàŕĝéţ îš ţĥé ĥàļƒ-ḿéàšüŕé ţĥàţ ļéţš à ŕéṽîéŵéŕ'š ƃļéššîñĝ öüţļîṽé ţĥé šéñţéñçé îţ ƃļéššéđ: ţĥé ţŕàñšļàţîöñ šţàýš translated, šţàýš àþþŕöṽéđ, àñđ šĥîþš ŵöŕđîñĝ ƒöŕ ţéẋţ ţĥé þŕöĵéçţ ñö ļöñĝéŕ ĥàš, ŕéþöŕţîñĝ ñöţĥîñĝ.

Šţàļéñéšš îš đéŕîṽéđ öñ éṽéŕý ŕéàđ, ñéṽéŕ šţöŕéđ. À đéçîšîöñ îš ĥîšţöŕý àñđ îš ñéṽéŕ ŕéŵŕîţţéñ; ŵĥàţ à šöüŕçé éđîţ çĥàñĝéš îš ñöţ ţĥé ŕéçöŕđ ƃüţ ŵĥéţĥéŕ îţ šţîļļ đéšçŕîƃéš ţĥé þŕöĵéçţ. Šö ţĥé đéḿöţîöñ ĥàþþéñš ŵĥéŕé ţĥé šţàţé îš ŕéàđ (çöṽéŕàĝé, ţĥé ŕéṽîéŵ ǫüéüé, ţĥé šĥîþ ĝàţé, ţĥé çöñṽéŕĝéñçé þļàñ), àñđ à ŕéšţöŕéđ šöüŕçé çöñṽéŕĝéš ƃàçķ öñţö ţĥé đéçîšîöñ àļŕéàđý öñ ŕéçöŕđ, ŵîţĥ ñöƃöđý ŕé-ŕéṽîéŵîñĝ àñýţĥîñĝ.

À šţàļé üñîţ ţàļļîéš àţ draft: à çöḿḿîţţéđ ţàŕĝéţ éẋîšţš, šö îţ îš ñöţ ƃéļöŵ ţĥé ļàđđéŕ, ƃüţ îţ îš ñöţ à ţŕàñšļàţîöñ öƒ ţĥé çüŕŕéñţ šöüŕçé éîţĥéŕ. Îţ ŵîţĥĥöļđš îţš šçöþé ƒŕöḿ šĥîþþîñĝ ŵĥéţĥéŕ öŕ ñöţ à šĥîþ ĝàţé àþþļîéš. À çöṽéŕàĝé ƃàŕ îš à ţĥŕéšĥöļđ öñ ǫüàñţîţý, àñđ ñö ţĥŕéšĥöļđ ḿàķéš à ţŕàñšļàţîöñ öƒ à ŕéŵŕîţţéñ šéñţéñçé šĥîþþàƃļé. Àñ üñĝàţéđ þŕöĵéçţ îš þŕéçîšéļý ţĥé öñé ŵîţĥ ñöţĥîñĝ éļšé ţö çàţçĥ îţ.

À šçöþé'š ṽéŕđîçţ ţĥéŕéƒöŕé ţàķéš öñé öƒ ţĥŕéé šĥîþ šţàţéš, đéçîđéđ öñçé îñ ţĥé çöṽéŕàĝé ŕöļļüþ àñđ ŕéàđ ƃý éṽéŕý šüŕƒàçé ţĥàţ ŕéþöŕţš öñé. À šçöþé îš šĥîþþàƃļé ŵĥéñ à šĥîþ ĝàţé ḿàţçĥéš îţ, îţ çļéàŕš ţĥé ĝàţé, àñđ ñöţĥîñĝ ŵîţĥĥöļđš îţ. Îţ îš ŵîţĥĥéļđ ŵĥéñ îţ îš šĥöŕţ öƒ à ḿàţçĥîñĝ ĝàţé öŕ à ŵîţĥĥöļđ àþþļîéš: šţàļé ŵöŕđîñĝ, à ŕéĵéçţéđ ţŕàñšļàţîöñ, à ƒàîļîñĝ çĥéçķ, öŕ à üñîţ ţĥé ţéŕḿš ĝöṽéŕñ ŵîţĥ ñö ţéŕḿîñöļöĝý ŕéšüļţ. Îţ îš ñöţ ĝàţéđ ŵĥéñ ñö ĝàţé ḿàţçĥéš àñđ ñöţĥîñĝ ŵîţĥĥöļđš. À ñöţ-ĝàţéđ šçöþé çàŕŕîéš ñö šĥîþþàƃļé çļàîḿ: kapi status àñđ kapi up ñàḿé îţ ñöţ ĝàţéđ, àñđ ship.json ŕéçöŕđš state: not_gated. Îţ ķééþš ţĥé ţŵö-ƒîéļđ ŕéàđîñĝ gated: false, shippable: true, šö à çöñšüḿéŕ ţĥàţ ŕéàđš öñļý shippable öƒƒéŕš îţ. À ļöçàļé šþŕéàđ öṽéŕ šéṽéŕàļ çöļļéçţîöñš ţàķéš ţĥé ŵéàķéšţ šţàţé àḿöñĝ ţĥéḿ.

Šţàļé îš ŵöŕķ, ñöţ öñļý à ŕéþöŕţ. Ţĥé çöñṽéŕĝéñçé ƒàñ-öüţ ţŕéàţš à ƃàšîš-šţàļé üñîţ éẋàçţļý àš îţ ţŕéàţš öñé ŵîţĥ ñö ţŕàñšļàţîöñ àţ àļļ: îţ îš îñ ţĥé þéñđîñĝ šéţ öñ àñý šçöþé (ĝàţéđ öŕ ñöţ, šîñçé ţĥé draft ţàļļý ŵöüļđ öţĥéŕŵîšé ŕéàđ àñ üñĝàţéđ šçöþé àš çöḿþļéţé), îţ îš þŕîçéđ îñ kapi up --plan öñ ţĥé šàḿé ŕéçýçļé-ṽéŕšüš-ÀÎ šþļîţ, àñđ ţĥé þàšš þŕöđüçéš à ţŕàñšļàţîöñ öƒ ţĥé šöüŕçé ţĥé þŕöĵéçţ ĥàš ñöŵ. Ţĥé šéŕṽéŕ ṽéñüé đéŕîṽéš ţĥé šàḿé àñšŵéŕ ƒŕöḿ îţš ļéđĝéŕ: öñé ĝŕöüþéđ ǫüéŕý ĝŕàđéš éṽéŕý ŕéçöŕđéđ ƃàšîš àĝàîñšţ ţĥé çüŕŕéñţ šöüŕçé, àñđ à šţàļé üñîţ îš ŵîţĥĥéļđ ƒŕöḿ ţĥé þŕöđüçéđ çöüñţ üñţîļ à þàšš ĥàš đŕàƒţéđ îţ, šö à ŕüñ šţàŕţéđ ƃý à šöüŕçé çĥàñĝé ĥàš þéñđîñĝ ŵöŕķ àñđ þŕöđüçéš.

Öñļý àñ àþþŕöṽàļ ŕé-šţàḿþš ţĥé ƃàšîš. Ŵĥàţ çļéàŕš à šţàļé üñîţ îš ţĥé ñéẋţ đéçîšîöñ öñ îţ, àñđ öñé ķîñđ öƒ đéçîšîöñ: à ŕéṽîéŵéŕ ļööķîñĝ àţ ţĥé ŕé-đŕàƒţéđ ţŕàñšļàţîöñ àñđ šàýîñĝ îţ šţàñđš, öñ ţĥé šöüŕçé îñ ƒŕöñţ öƒ ţĥéḿ àñđ üñđéŕ ţĥé ĝöṽéŕñàñçé îñ ƒöŕçé ŵĥéŕé ţĥéý àŕé đéçîđîñĝ. Ţĥàţ ṽéŕđîçţ ƃîñđš ƃöţĥ ĥàļṽéš öƒ ţĥé ƃàšîš, ţĥé šöüŕçé ĥàšĥ àñđ ţĥé ĝöṽéŕñîñĝ ƒîñĝéŕþŕîñţ, àñđ ţĥé ŕéàđéŕš ţĥàţ ĝŕàđé ţĥé üñîţ çöḿþàŕé àĝàîñšţ îţ, šö ţĥé üñîţ ŕéàđš çüŕŕéñţ öñ ţĥé šöüŕçé àẋîš àñđ çļéàŕš ţĥé šţàļéñéšš ĝàţé öñ ţĥé ĝöṽéŕñàñçé àẋîš (Ç-05). Ţĥé ñéṽéŕ-öṽéŕ-à-đéçîšîöñ ŕüļé ĥöļđš: ţĥé àþþŕöṽàļ Ί ţĥé đéçîšîöñ.

À ŕéĵéçţîöñ éñđöŕšéš ñöţĥîñĝ, šö îţ ŕéçöŕđš ţĥé ṽéŕđîçţ, ţĥé ţŕàñšļàţîöñ îţ ţüŕñéđ đöŵñ àñđ ŵĥö ţüŕñéđ îţ đöŵñ, àñđ ļéàṽéš ţĥé ƃàšîš ŵĥéŕé ţĥé ļàšţ àþþŕöṽàļ öŕ ţĥé þŕöđüçîñĝ ŕüñ þüţ îţ. Ţĥé üñîţ šţàýš éẋàçţļý àš šţàļé àš îţ ŵàš, ŵĥîçĥ îš ţĥé þöîñţ: à ŕéṽîéŵéŕ šàýîñĝ ñö îš ñöţ ţĥé þŕöĵéçţ šàýîñĝ ţĥîš ŵöŕđîñĝ šţàñđš. Ŵîţĥđŕàŵîñĝ àñ àþþŕöṽàļ ŕéàđš ţĥé šàḿé ŵàý. Öñ ţĥé šéŕṽéŕ à ŕéĵéçţîöñ àļšö çļéàŕš ţĥé üñîţ'š đŕàƒţ ḿàŕķ, šö ţĥé ļööþ öŵéš îţ à ƒŕéšĥ đŕàƒţ ŕàţĥéŕ ţĥàñ ŵàîţîñĝ öñ à ŕéṽîéŵ ţĥàţ îš àļŕéàđý îñ.

À ŕéĵéçţîöñ îš ŵöŕķ ŵĥàţéṽéŕ ţĥé ƃàšîš šàýš. Çöḿþàŕîñĝ ţĥé ţŵö ĥàšĥéš àñšŵéŕš ŵĥéţĥéŕ à ţŕàñšļàţîöñ ŕéñđéŕš ţĥé šéñţéñçé ţĥé þŕöĵéçţ ĥöļđš. Îţ šàýš ñöţĥîñĝ àƃöüţ ŵĥéţĥéŕ ţĥé þŕöĵéçţ šţàñđš ƃéĥîñđ ţĥàţ ţŕàñšļàţîöñ, àñđ à ŕéṽîéŵéŕ ţüŕñîñĝ đöŵñ à ţŕàñšļàţîöñ öƒ ţĥé šöüŕçé îñ ƒŕöñţ öƒ ţĥéḿ ḿöṽéš ñéîţĥéŕ ĥàšĥ, šö à ŕéàđéŕ ĝŕàđîñĝ ţĥé ƃàšîš àļöñé šééš à šéţţļéđ ŕéçöŕđ öṽéŕ à üñîţ šîţţîñĝ àţ draft ŵîţĥ à ŕéƒüšàļ öñ îţ. Ţĥé ṽéŕđîçţ îš ţĥéŕéƒöŕé ŕéàđ ƃéšîđé ţĥé ƃàšîš: à ŕéĵéçţéđ üñîţ îš öŵéđ à đŕàƒţ üñţîļ ţĥé ṽéñüé ĥàš đŕàƒţéđ îţ àĝàîñ šîñçé ţĥé ŕéĵéçţîöñ.

Éàçĥ ṽéñüé àñšŵéŕš "šîñçé ţĥé ŕéĵéçţîöñ" ƒŕöḿ ŵĥàţ îţ àļŕéàđý ķééþš. Öñ ţĥé šéŕṽéŕ îţ îš ţĥé đŕàƒţ ḿàŕķ, ŵĥîçĥ ţĥé ŕéĵéçţîöñ çļéàŕš àñđ ţĥé ñéẋţ þàšš šţàḿþš, šö öñé ŕéĵéçţîöñ ƃüýš éẋàçţļý öñé đŕàƒţ àñđ à šéçöñđ ŕéĵéçţîöñ ƃüýš öñé ḿöŕé. Ļöçàļļý îţ îš ţĥé đéçîšîöñ'š ţàŕĝéţ ĥàļƒ: ţĥé ŕéĵéçţîöñ ñàḿéš ţĥé ţŕàñšļàţîöñ îţ ŕéƒüšéđ, à þàšš ţĥàţ đŕàƒţš šöḿéţĥîñĝ éļšé ḿöṽéš ţĥé üñîţ öƒƒ ţĥàţ þàîŕîñĝ, àñđ ţĥé đéçîšîöñ šţöþš àþþļýîñĝ. Ñéîţĥéŕ ṽéñüé çàñ ļööþ, àñđ à þàšš ţĥàţ ŕéþŕöđüçéš ţĥé ŕéƒüšéđ ŵöŕđîñĝ ŵöŕđ ƒöŕ ŵöŕđ ļéàṽéš ţĥé üñîţ éẋàçţļý ŵĥéŕé îţ ŵàš, ĥéļđ öüţ öƒ šĥîþþîñĝ ŕàţĥéŕ ţĥàñ ǫüîéţļý đéļîṽéŕéđ.

Ţĥé çöüñţ îš þüƃļîšĥéđ ƃéšîđé ţĥé šţàļé šþļîţ ŕàţĥéŕ ţĥàñ îñšîđé îţ. À ŕéĵéçţîöñ öñ àñ üñḿöṽéđ šöüŕçé ƃéļöñĝš ţö ñéîţĥéŕ ĥàļƒ öƒ ţĥàţ šþļîţ, àñđ ƒöļđîñĝ îţ îñ ŵöüļđ ƃŕéàķ ţĥé šüƃšéţ ŕéļàţîöñ ţĥé đéŕîṽé đéþéñđš öñ. Îţ îš convergence.LocaleCoverage.RejectedAwaitingDraft ļöçàļļý, rejected_awaiting_draft_blocks öñ ţĥé đàšĥƃöàŕđ šţàţš, àñđ DecisionBasisTally.RejectedOwed îñ ţĥé ļéđĝéŕ'š ĝŕöüþéđ ţàļļý, ŵĥéŕé îţ ĥöļđš ţĥé ŕéĵéçţîöñš Stale đöéš ñöţ, šö ţĥé ţŵö àŕé đîšĵöîñţ. À çöñṽéŕĝéñçé þàšš öŵéš à đŕàƒţ ƒöŕ Owed + RejectedOwed üñîţš, ŵĥîçĥ îš ţĥé ñüḿƃéŕ ţĥé đéŕîṽé ŵîţĥĥöļđš ƒŕöḿ ţĥé þŕöđüçéđ çöüñţ àñđ ţĥé ñüḿƃéŕ ţĥé ŵöŕķéŕ'š öŵñ þŕéđîçàţé þàŕţîţîöñš öüţ. Šüçĥ à üñîţ ĥöļđš îţš šçöþé öüţ öƒ šĥîþþîñĝ öñ ƃöţĥ ṽéñüéš, éẋàçţļý àš à šţàļé öñé đöéš.

À đéçîđéđ üñîţ îš ŕé-đŕàƒţéđ öñçé þéŕ šöüŕçé çĥàñĝé. Ţĥé ŕé-đŕàƒţ çàññöţ đéçîđé, šö à šţàļé đéçîšîöñ šţàýš šţàļé üñţîļ à þéŕšöñ ŕé-ŕéṽîéŵš, àñđ à ļööþ ţĥàţ ŕéàđ öñļý ţĥé đéçîšîöñ ŵöüļđ đŕàƒţ ţĥé üñîţ àĝàîñ öñ éṽéŕý þàšš. Éàçĥ ṽéñüé ķééþš îţš öŵñ ŕéçöŕđ öƒ ŵĥàţ îţ ļàšţ đŕàƒţéđ. Ļöçàļļý, ţĥé çöñţéñţ ḿéḿöŕý àƃšöŕƃš ţĥé ŕé-đŕàƒţéđ þàîŕîñĝ àñđ ţĥé ñéẋţ þàšš ŕéçýçļéš îţ ŕàţĥéŕ ţĥàñ þàýîñĝ ƒöŕ îţ àĝàîñ. Öñ ţĥé šéŕṽéŕ, ţĥé ļéđĝéŕ ŕöŵ çàŕŕîéš ţĥé šöüŕçé ţĥé þļàţƒöŕḿ ļàšţ đŕàƒţéđ ţĥé üñîţ àĝàîñšţ ƃéšîđé ţĥé đéçîšîöñ (unit_decisions.draft_basis), ŵŕîţţéñ ƃý ţĥé ŵöŕķéŕ ƒöŕ éṽéŕý ţàŕĝéţ îţ þŕöđüçéš àñđ ñéṽéŕ öṽéŕ ţĥé đéçîšîöñ îţšéļƒ. À šţàļé üñîţ ŵĥöšé ḿàŕķ ñàḿéš ţĥé çüŕŕéñţ šöüŕçé îš öŵéđ ñöţĥîñĝ ƃý ţĥé ļööþ: îţ çöüñţš àš þŕöđüçéđ àĝàîñ, ţĥé ŕüñ çöñṽéŕĝéš, àñđ ţĥé üñîţ ŵàîţš öñ à ŕéṽîéŵéŕ ŵîţĥ îţš šĥîþ šţàţé ŵîţĥĥéļđ. À šöüŕçé ŕéŵŕîţţéñ àĝàîñ ḿöṽéš àŵàý ƒŕöḿ ţĥé ḿàŕķ, àñđ ţĥé üñîţ îš öŵéđ öñçé ḿöŕé.

Ţĥé šţàļé çöüñţ šþļîţš ƃý ŵĥàţ ţĥé üñîţ ŵàîţš öñ. À šţàļé üñîţ ţĥé ļööþ ĥàš ñöţ ýéţ đŕàƒţéđ àĝàîñšţ ţĥé šöüŕçé ţĥé þŕöĵéçţ ĥöļđš ñöŵ îš öŵéđ à çöñṽéŕĝéñçé þàšš; öñé îţ ĥàš đŕàƒţéđ îš öŵéđ à þéŕšöñ'š àţţéñţîöñ. Ƃöţĥ àŕé šţàļé àñđ ƃöţĥ ŵîţĥĥöļđ ţĥé šçöþé, àñđ ţĥé ŵöŕķ îš đéŕéñţ, šö ţĥé çöüñţ îš þüƃļîšĥéđ àš îţš ţŵö ĥàļṽéš àš ŵéļļ àš îţš ţöţàļ (convergence.LocaleCoverage.StaleAwaitingDraft àñđ StaleAwaitingReview ļöçàļļý, stale_awaiting_draft_blocks àñđ stale_awaiting_review_blocks öñ ţĥé đàšĥƃöàŕđ šţàţš). Éàçĥ ṽéñüé ŕéàđš ţĥé šþļîţ ƒŕöḿ ŵĥàţ îţ àļŕéàđý ĥöļđš: ļöçàļļý, ŵĥéţĥéŕ ţĥé ŕéçöŕđ šţîļļ đéšçŕîƃéš ţĥé ţŕàñšļàţîöñ öñ đîšķ; öñ ţĥé šéŕṽéŕ, ŵĥéţĥéŕ ţĥé ŕöŵ'š đŕàƒţ ḿàŕķ ñàḿéš ţĥé ƃļöçķ'š çüŕŕéñţ šöüŕçé, ŵĥîçĥ îš ţĥé Owed ĥàļƒ öƒ ţĥé ĝŕöüþéđ ţàļļý. Owed šţàýš à šüƃšéţ öƒ Stale, ŵĥîçĥ îš ŵĥàţ ļéţš ţĥé đéŕîṽé šüƃţŕàçţ îţ ƒŕöḿ à þŕöđüçéđ çöüñţ ţĥé šţàļé üñîţš àŕé àļŕéàđý îñšîđé.

Šţàļéñéšš îš öñé ŕéàšöñ à þŕöđüçéđ üñîţ îš ŵöŕķ, àñđ ţĥé þļàñ çàŕŕîéš ţĥé öţĥéŕš öñ ţĥéîŕ öŵñ àẋîš. Ŵĥàţ à þàšš šþéñđš à þŕöṽîđéŕ çàļļ öñ îš đéçîđéđ ƃý ţĥé çöñţéñţ ḿéḿöŕý, ñöţ ƃý à ţàŕĝéţ ƒîļé: ţĥé þîþéļîñé ŕéàđš ţĥé šöüŕçé đöçüḿéñţš, recycle ƒîļļš ŵĥàţ ţĥé çöŕþüš àñšŵéŕš, àñđ translate đŕàƒţš ţĥé ŕéḿàîñđéŕ. Šö kapi up --plan àšķš ţĥé çöŕþüš àƃöüţ éṽéŕý üñîţ îţ çöüñţš, îñçļüđîñĝ öñ à çĥéçķöüţ ŵĥöšé šţöŕé đöéš ñöţ éẋîšţ ýéţ, ŵĥéŕé ţĥé çöḿḿîţţéđ çöñţéñţ-ḿéḿöŕý ƃüñđļéš àŕé çöḿþîļéđ îñţö à çöŕþüš ţĥàţ ļîṽéš öñļý ƒöŕ ţĥàţ çàļļ, šö à đŕý ŕüñ þŕîçéš ţĥé ŕéçýçļîñĝ à ŕüñ ŵöüļđ đö ŵîţĥöüţ çŕéàţîñĝ ţĥé šţàţé à đŕý ŕüñ ḿüšţ ñöţ. À þŕöđüçéđ üñîţ ţĥé ŕéçöŕđ đöéš ñöţ þàîŕ ŵîţĥ îţš šöüŕçé (à ŕéŵŕîţé, àñ îđéñţîçàļ þàîŕ ñö àþþŕöṽàļ šţàñđš ƃéĥîñđ, à þàîŕ ŕéƒüšéđ ƒöŕ àšýḿḿéţŕîç îñļîñé çöđéš) îš ŕéþöŕţéđ àš üñàñšŵéŕéđ àñđ þŕîçéđ. Îţ îš ķéþţ àþàŕţ ƒŕöḿ stale: šţàļé ḿéàñš à đéçîšîöñ'š ƃàšîš ḿöṽéđ, ŵĥîçĥ àļšö đŕîṽéš ţĥé ŕéṽîéŵ ŵöŕķļîšţ àñđ šĥîþþîñĝ, àñđ ḿéŕĝîñĝ ţĥé ţŵö ŵöüļđ ḿàķé ţĥé þļàñ àñđ ţĥé ŕüñ šüḿḿàŕý đîšàĝŕéé. Ŵĥéţĥéŕ ţĥé þŕîçé îš à þŕöṽîđéŕ çàļļ îš ţĥé đŕàƒţîñĝ šţéþ'š öŵñ ǫüéšţîöñ. Ţĥé šţéþ šéŕṽéš à šţöŕéđ đŕàƒţ ŵĥéñ ţĥé þŕöĵéçţ ƃļöçķ šţöŕé ĥöļđš à ţŕàñšļàţîöñ öƒ ţĥé šàḿé šöüŕçé ḿàđé üñđéŕ îţš çüŕŕéñţ çöñƒîĝüŕàţîöñ ƒîñĝéŕþŕîñţ àñđ ţĥé ĝöṽéŕñîñĝ çöñţéẋţ îñ ƒöŕçé (blockstore.TargetOverlay.ReusableFor), àñđ ţĥé þļàñ þüţš ţĥàţ ǫüéšţîöñ ţö à þŕöđüçéŕ ƃüîļţ ţĥé ŵàý à þàšš ƃüîļđš öñé (tool.StoredTargetReuser), šö ţĥé ţŵö àñšŵéŕ îţ ƒŕöḿ öñé ƒüñçţîöñ. À üñîţ ţĥé šţéþ ŵöüļđ šéŕṽé ţĥîš ŵàý îš çöüñţéđ àš à šţöŕéđ đŕàƒţ àţ ñö ţöķéñš; à þàŕķéđ ļöçàļé'š ŵĥöļé đŕàƒţ šéţ ŕéàđš ţĥîš ŵàý öñ ţĥé ŕüñ àƒţéŕ ţĥé öñé ţĥàţ đŕàƒţéđ îţ. Ţĥé þļàñ ĵüđĝéš à þŕöđüçéđ üñîţ öñļý öñçé ţĥé ŕéçöŕđ àƃšöŕƃéŕ ĥàš ŕéàđ îţš çöḿḿîţţéđ ţàŕĝéţ àţ ţĥé ƃýţéš öñ đîšķ (ţĥé đîĝéšţ šţàḿþš öƒ Ç-03); ƃéƒöŕé ţĥàţ ţĥé çöŕþüš îš üñƒîñîšĥéđ, îţš šîļéñçé ḿéàñš "ñöţ àšķéđ", àñđ ţĥé þļàñ šàýš šö ŕàţĥéŕ ţĥàñ ǫüöţîñĝ éîţĥéŕ à ƒŕéé ŕüñ öŕ à þŕöṽîđéŕ çàļļ þéŕ ţŕàñšļàţîöñ ţĥé ŕüñ ŵîļļ ŕéçýçļé. À þŕöđüçéđ üñîţ ŵîţĥ ñö ƒîļé öñ đîšķ îš à þàŕķéđ ļöçàļé'š đŕàƒţ, ŕéàđ öüţ öƒ ţĥé šţöŕé; ñöţĥîñĝ îš ļéƒţ ƒöŕ ţĥé àƃšöŕƃéŕ ţö ŕéàđ, šö ţĥé þļàñ ĵüđĝéš îţ àţ öñçé. Ŵĥàţ ţĥé ļööþ çàññöţ đö îš đéçîđé, šö ţĥé ŕé-đŕàƒţ ñéṽéŕ ŕéšţöŕéš ţĥé ŵîţĥđŕàŵñ àþþŕöṽàļ: ţĥé üñîţ ŕéţüŕñš àţ îţš þŕéšéñçé ƃàšéļîñé, îñ ţĥé ŕéṽîéŵ ŵöŕķļîšţ, àñđ ţĥé šçöþé šţàýš ŵîţĥĥéļđ üñţîļ šöḿéöñé ŕéṽîéŵš ţĥé ñéŵ þàîŕîñĝ.

Ţĥé ŕéçöŕđ àƃšöŕƃéŕ (host/recordabsorb.go) ƒöļļöŵš öñé ŕüļé ƒöŕ à þàîŕîñĝ ţĥé þŕöĵéçţ'š öŵñ ŕéçöŕđ çöñţŕàđîçţš. À çöḿḿîţţéđ ţàŕĝéţ îš àƃšöŕƃéđ àĝàîñšţ ţĥé šöüŕçé îţ đöéš ţŕàñšļàţé: ţĥé ŵöŕđîñĝ ŕéçöṽéŕéđ ƃý ţĥé đéçîšîöñ'š ƃàšîš ĥàšĥ ƒöŕ à ļöçàļé ţĥàţ ĥöļđš à đéçîšîöñ, öŕ ţĥé ŵöŕđîñĝ ţĥé ƃļöçķ šţöŕé ĥéļđ ŵĥéñ ţĥé þàšš ļàšţ ŕéàđ ţĥé ŵöŕķîñĝ ţŕéé ƒöŕ à šöüŕçé ŕéŵŕîţé ţĥàţ àƒƒéçţš éṽéŕý ļöçàļé. Ŵĥéñ ţĥàţ ŵöŕđîñĝ îš üñŕéçöṽéŕàƃļé ţĥé þàîŕ îš ñöţ ŵŕîţţéñ àţ àļļ, šö ţĥé çöŕþüš ñéṽéŕ ļéàŕñš à ţŕàñšļàţîöñ öƒ à šéñţéñçé ţĥé þŕöĵéçţ ñö ļöñĝéŕ ĥàš. Öñçé ţĥé ţàŕĝéţ ĥàš ḿöṽéđ àš ŵéļļ, ţĥé ŕéçöŕđ đéšçŕîƃéš ñéîţĥéŕ ĥàļƒ öƒ ŵĥàţ îš öñ đîšķ àñđ ţĥé þàîŕ îš àƃšöŕƃéđ ļîķé àñý üñđéçîđéđ öñé, ŵĥîçĥ îš ŵĥàţ ļéţš à þéŕšöñ ŵĥö ŕéŵŕîţéš à šéñţéñçé àñđ îţš ţŕàñšļàţîöñ ţöĝéţĥéŕ ķééþ ţĥé þàîŕîñĝ ţĥéý àüţĥöŕéđ.

Àñ îđéñţîçàļ ţŕàñšļàţîöñ îš à đéçîšîöñ öŕ îţ îš ñöţĥîñĝ. À ţàŕĝéţ éǫüàļ ţö îţš šöüŕçé îš đŕöþþéđ: üñàþþŕöṽéđ, ţĥé îđéñţîţý îš ƒàŕ ḿöŕé öƒţéñ à çàţàļöĝ çàŕŕýîñĝ îţš üñţŕàñšļàţéđ ļéàṽéš ṽéŕƃàţîḿ ţĥàñ à ţŕàñšļàţîöñ ţĥàţ ĥàþþéñš ţö çöîñçîđé, àñđ àƃšöŕƃîñĝ öñé ŵöüļđ ƒîļļ ţĥé üñîţ ƒŕöḿ îţš öŵñ šöüŕçé àñđ ţàķé îţ àŵàý ƒŕöḿ ţĥé ÀÎ šţéþ ƒöŕ ĝööđ. Çàŕŕýîñĝ àñ àþþŕöṽàļ îţ îš àƃšöŕƃéđ ļîķé àñý öţĥéŕ þàîŕ: à þéŕšöñ ŕéàđ ţĥé þàîŕîñĝ àñđ šàîđ ţĥîš ŵöŕđîñĝ îš ŕîĝĥţ, ŵĥîçĥ îš ŵĥàţ þŕöþéŕ ñöüñš, þŕöđüçţ ñàḿéš àñđ šĥöŕţ ļàƃéļš ļööķ ļîķé ŵĥéñ ţĥéý àŕé çöŕŕéçţ.

À đéçîšîöñ šéţţļéš ţĥé çĥéçķ ţĥàţ ĝüéššéš àţ îţ. Ţĥé ŕüļé target-same-as-source îš à ĥéüŕîšţîç ƒöŕ "ñöƃöđý ţŕàñšļàţéđ ţĥîš", àñđ àñ àþþŕöṽàļ îš à þéŕšöñ ĥàṽîñĝ ŕéàđ ţĥàţ éẋàçţ þàîŕîñĝ àñđ àñšŵéŕéđ ţĥé ǫüéšţîöñ îţ àšķš, šö àñ àþþŕöṽéđ îđéñţîçàļ ţàŕĝéţ îš ñöţ ŕéþöŕţéđ àñđ đöéš ñöţ ƒàîļ ţĥé šĥîþ ĝàţé. Ţĥé þŕöĵéçţ'š ţéŕḿš šéţţļé îţ ţĥé šàḿé ŵàý, ƒöŕ àñ éñţŕý ŵĥöšé ţàŕĝéţ îš îţš šöüŕçé. Ƃöţĥ àŕé öñé ŕüļé (host.identicalTargetRule) ƃéçàüšé ţŵö šüŕƒàçéš çöñšüļţ îţ: ţĥé ĝàţé kapi check ƒàîļš öñ, àñđ ţĥé çĥéçķ éẋçļüšîöñš ţĥàţ đéḿöţé à üñîţ ƃéļöŵ translated đüŕîñĝ kapi up. Öñļý ţĥàţ öñé ƒîñđîñĝ îš šéţţļéđ; à đŕöþþéđ þļàçéĥöļđéŕ öñ àñ àþþŕöṽéđ üñîţ îš šţîļļ à đéƒéçţ, àñđ àñ àþþŕöṽàļ ļîçéñšéš ñöţĥîñĝ àƃöüţ îţ.

À ḿîššîñĝ ƃàšîš îš üñķñöŵñ, ñöţ šţàļé. À ŕéçöŕđ ŵîţĥ ñö ƃàšîš šàýš ñöţĥîñĝ àƃöüţ ţĥé šöüŕçé îţ ƃļéššéđ, àñđ ŕéàđîñĝ ţĥàţ šîļéñçé àš đŕîƒţ ŵöüļđ đéḿöţé éṽéŕý šüçĥ đéçîšîöñ à þŕöĵéçţ ĥöļđš. Šüçĥ à üñîţ ķééþš îţš ŕüñĝ, šĥîþš àš îţ đöéš, àñđ îš çöüñţéđ: kapi status ŕéþöŕţš ĥöŵ ḿàñý đéçîšîöñš ŕéšţ öñ àñ üñŕéçöŕđéđ ƃàšîš, šö ţĥé àššüḿþţîöñ îš ṽîšîƃļé ŕàţĥéŕ ţĥàñ šîļéñţ. Îţ çļéàŕš îţšéļƒ: ţĥé ñéẋţ đéçîšîöñ öñ ţĥé üñîţ ŕéçöŕđš à ƃàšîš.

À çöñţéñţ-ķéýéđ îñđéẋ šţŕüçţüŕàļļý çàññöţ éẋþŕéšš àñý öƒ ţĥîš. Üñîţ-ķéýîñĝ þļüš ţĥé ţŵö ĥàšĥéš îš ŵĥàţ ḿàķéš àñ àþþŕöṽàļ üñàƃļé ţö šîļéñţļý öüţļîṽé ţĥé ţéẋţ îţ àþþŕöṽéđ, àñđ îţ îš ţĥé šàḿé ƒàçţ ţĥé ĝŕàþĥ'š blesses éđĝé çàŕŕîéš (Ç-03), ŵĥîçĥ çàŕŕîéš ƃöţĥ ĥàšĥéš ƒöŕ ţĥàţ ŕéàšöñ, šö ŵĥîçĥ đéçîšîöñ çöṽéŕš ţĥîš üñîţ, àţ ŵĥîçĥ ƃàšîš îš àñšŵéŕàƃļé ƃý ţŕàṽéŕšàļ àš ŵéļļ àš ƃý ļööķüþ. À çöññéçţéđ ṽéñüé àþþļîéš ţĥé šàḿé ƃàšîš ŕüļé ƒŕöḿ îţš šîđé.

Ŵĥàţ ĝöṽéŕñéđ ţĥé đéçîšîöñ

À ŕéçöŕđ àļšö çàŕŕîéš ŵĥàţ ĝöṽéŕñéđ ţĥé àñšŵéŕ îţ îš àƃöüţ: governingFingerprint, ţĥé ƒîñĝéŕþŕîñţ öƒ ţĥé ṽöîçé ĝüîđàñçé àñđ ţĥé ţéŕḿ ŕüļéš îñ ƒöŕçé àţ ţĥé üñîţ'š ĝöṽéŕñàñçé þöîñţ ƒöŕ îţš ļöçàļé (Ç-05). Îţ îš ţĥé ṽàļüé éṽéŕý ţŕàñšļàţîöñ þŕöđüçéŕ šţàḿþš öñ à ţàŕĝéţ'š Origin.ContextFingerprint, çöḿþüţéđ ƃý ţĥé öñé ƒüñçţîöñ àļļ öƒ ţĥéḿ šĥàŕé (core/profile.GovernanceContext), šö à đéçîšîöñ àñđ à þŕöđüçéđ ţàŕĝéţ àŕé çöḿþàŕàƃļé àĝàîñšţ ţĥé šàḿé çöñţéẋţ.

Ţŵö ŵŕîţéŕš šéţ îţ. À đéçîšîöñ (kapi apply, ţĥé đéšķţöþ'š àþþŕöṽé àçţîöñ, àñ àĝéñţ'š ŕéṽîéŵ çàļļ, àñ àþþŕöṽàļ öŕ à šîĝñ-öƒƒ ḿàđé îñ à çöññéçţéđ ṽéñüé) ŕéšöļṽéš ţĥé çöñţéẋţ îñ ƒöŕçé ŵĥéŕé ţĥé đéçîđéŕ îš đéçîđîñĝ àñđ ŕéçöŕđš îţ ƃéšîđé ţĥé ṽéŕđîçţ. Éàçĥ đéçîđéŕ ŕéšöļṽéš îţ ƒŕöḿ ŵĥàţ îţ ĥàš: à þŕöĵéçţ ŕéàđš ţĥé ŕéçîþé'š ƃîñđîñĝš àţ ţĥé üñîţ'š þöîñţ, à ṽéñüé ŕéàđš ţĥé ṽöîçé þŕöƒîļé îţš öŵñ ļàđđéŕ ŕéšöļṽéš àñđ ţĥé ţéŕḿ ŕüļéš îţš ŵöŕķšþàçé ĥöļđš, àñđ ƃöţĥ ƒöļđ ţĥé ŕéšüļţ ŵîţĥ ţĥé öñé ƒüñçţîöñ éṽéŕý þŕöđüçéŕ šţàḿþš ŵîţĥ, šö ţĥé ţŵö àŕé çöḿþàŕàƃļé. Ţĥé šàḿé ṽéŕđîçţ öñ ţĥé šàḿé þàîŕîñĝ üñđéŕ à ḿöṽéđ çöñţéẋţ îš à ñéŵ đéçîšîöñ, àñđ îš ŕéçöŕđéđ àĝàîñ. À ƃàšîš ţĥé çöñṽéŕĝéñçé ļööþ ŵŕîţéš ƒöŕ îţš öŵñ öüţþüţ ŕéçöŕđš ţĥé þŕöđüçéŕ'š šţàḿþ: ţĥé ŕüñ ţĥàţ ŵŕöţé ţĥé ţàŕĝéţ îš ţĥé ŕüñ ŕéçöŕđîñĝ îţ. À ĥàñđ-ţýþéđ ţŕàñšļàţîöñ ŕéçöŕđš ñöñé, ƃéçàüšé ñöţĥîñĝ ṽöüçĥéš ƒöŕ ţĥé çöñţéẋţ îţ ŵàš ŵŕîţţéñ üñđéŕ. Ţĥé ṽéñüé ļéđĝéŕ çàŕŕîéš ţĥé šàḿé çöļüḿñ, šö à þüšĥ àñđ à þüļļ àĝŕéé öñ îţ.

Ţĥé ƒîñĝéŕþŕîñţ îš à đéŕéñţ ǫüàñţîţý ƒŕöḿ ţĥé ŕéçöŕđ'š îđéñţîţý šîĝñàļš, àñđ ñéîţĥéŕ îš đéŕîṽàƃļé ƒŕöḿ ţĥé öţĥéŕ. contextHash šàýš ŵĥîçĥ ƃļöçķ ţĥîš îš (model.ComputeContextHash öṽéŕ ţĥé ƃļöçķ'š ñàḿé, ţýþé àñđ þŕöþéŕţîéš) àñđ ḿöṽéš ŵĥéñ ţĥé ƃļöçķ'š šüŕŕöüñđîñĝš ḿöṽé. governingFingerprint šàýš ŵĥàţ ĝöṽéŕñéđ ţĥé àñšŵéŕ àñđ ḿöṽéš ŵĥéñ ţĥé ṽöîçé öŕ ţĥé ţéŕḿîñöļöĝý ḿöṽéš. Éîţĥéŕ çĥàñĝéš ŵîţĥ ţĥé öţĥéŕ ĥöļđîñĝ šţîļļ.

Ţĥé ŕéçöŕđ îš ţĥé đüŕàƃļé çàŕŕîéŕ öƒ ţĥîš ṽàļüé. À ƃîļîñĝüàļ ƒöŕḿàţ ķééþš ţĥé þŕöđüçéŕ'š šţàḿþ ƃéšîđé ţĥé ŵöŕđš, ƃüţ ḿöšţ đéļîṽéŕéđ ƒöŕḿàţš ĥöļđ šţŕîñĝš àñđ ñöţĥîñĝ éļšé: à ĴŠÖÑ çàţàļöĝ, à .properties ƒîļé. À ŕéàđéŕ þàîŕîñĝ šüçĥ à ƒîļé ŵîţĥ îţš šöüŕçé ƒîñđš ŵĥàţ ĝöṽéŕñéđ ţĥé ţŕàñšļàţîöñ îñ ţĥé ŕéçöŕđ ƒöŕ ţĥé üñîţ öŕ ñöŵĥéŕé. Ţĥàţ îš ŵĥàţ ţĥé ŕéçöŕđ àƃšöŕƃéŕ ŕéàđš, îñ ţĥîš öŕđéŕ: ţĥé ţàŕĝéţ'š öŵñ šţàḿþ ŵĥéŕé ţĥé ƒöŕḿàţ çàŕŕîéš öñé, ţĥéñ ţĥé ŕéçöŕđ ŕöŵ ƒöŕ ţĥé üñîţ àñđ ļöçàļé, ŵĥîļé ţĥàţ ŕöŵ šţîļļ đéšçŕîƃéš ţĥé ţŕàñšļàţîöñ öñ đîšķ. Ţĥé ṽàļüé ţŕàṽéļš îñţö ţĥé çöñţéñţ ḿéḿöŕý ƃéšîđé ţĥé àñšŵéŕ (Ç-09), àñđ çöḿþîļîñĝ à çöñţéñţ-ḿéḿöŕý ƃüñđļé ƃàçķ îñţö ţĥé šţöŕé ŵŕîţéš îţ öñţö ţĥé ŕéçöŕđ ŕöŵ ƒöŕ ţĥé üñîţ ţĥé àñšŵéŕ ŵàš ŕéçöŕđéđ ƒöŕ, ŵĥéŕé ţĥàţ ŕöŵ ĥöļđš ñöñé àñđ îš àƃöüţ ţĥàţ ţŕàñšļàţîöñ. À ŕéçöŕđ ŵŕîţţéñ ƃéƒöŕé ţĥé ƒîéļđ éẋîšţéđ ŕéàđš ţĥŕöüĝĥ ţĥé þŕöđüçéŕ'š šţàḿþ öñ îţš origin, ŵĥîçĥ îš àļļ îţ ĥàš ţö šàý.

Ŵĥö đéçîđéđ

À Decision ŕéçöŕđš ţĥé àüţĥöŕéđ öüţçöḿé àñđ ŵĥö ŕéàçĥéđ îţ. Ţŵö đîšţîñçţîöñš îñ ţĥé îđéñţîţý šţŕîñĝ ḿàţţéŕ:

  • Àñ îđéñţîţý þŕéƒîẋéđ ai/ (state.AIIdentityPrefix) ḿàŕķš à đéçîšîöñ ŕéàçĥéđ àüţöñöḿöüšļý ƃý à ḿöđéļ. Šüçĥ đéçîšîöñš çöüñţ ţöŵàŕđ ţĥé ŕéṽîéŵéđ àñđ šîĝñéđ-öƒƒ ĝàţé ţĥŕéšĥöļđš öñļý ŵĥéñ ţĥé ĝàţé'š àþþŕöṽéŕ çļàšš îš any (core/gate), šö à þŕöĵéçţ çàñ ŕéǫüîŕé ţĥàţ à þéŕšöñ ƃé îñ ţĥé ļööþ ƃý çöñƒîĝüŕàţîöñ ŕàţĥéŕ ţĥàñ ƃý ĥöþé.
  • Àñ agent/… îđéñţîţý îš ñöţ àñ ÀÎ đéçîšîöñ: àñ àĝéñţ àçţš öñ à þéŕšöñ'š ƃéĥàļƒ, àñđ state.IsAIDecision šàýš šö.

Àñ AIReview îš à ţĥîŕđ ţĥîñĝ àĝàîñ: àñ àđṽîšöŕý àññöţàţîöñ çàŕŕýîñĝ à šçöŕé àñđ ƒîñđîñĝš, ƃöüñđ ţö ţĥé ţŕàñšļàţîöñ îţ ĵüđĝéđ šö ţĥàţ àñ éđîţ îñṽàļîđàţéš îţ (AIReview.Fresh). Îţ ñéṽéŕ ḿöṽéš à üñîţ öñ ţĥé ļàđđéŕ.

À ṽéñüé îš àüţĥöŕîţàţîṽé ƒöŕ ŵĥàţ îţ àççéþţš

Ţĥé çöḿḿîţţéđ ŕéçöŕđ îš ţĥé þŕöĵéçţ'š. Ŵĥàţ à ṽéñüé đöéš ŵîţĥ îţ îš ţĥé ṽéñüé'š. À þüšĥ šéñđš ţĥé ŕéçöŕđ ŵĥöļé, šö îţ çàñ çàŕŕý àñ àþþŕöṽàļ ţĥé ṽéñüé đéçļîñéš: ţĥé þüšĥéŕ ḿàý ĥöļđ ñö ŕéṽîéŵ þéŕḿîššîöñ ƒöŕ ţĥàţ ļàñĝüàĝé, öŕ ţĥé ŵöŕķšþàçé ḿàý ŕéƒüšé à ṽéŕđîçţ öñ ŵöŕķ îţš àüţĥöŕ ŵŕöţé. Ţĥé ṽéñüé ķééþš šüçĥ à ŕéçöŕđ àš ţĥé ƃàšîš îţ çàŕŕîéš, ŵîţĥ ñö ŕüñĝ àƃöṽé ţŕàñšļàţéđ àñđ ñö đéçîđéŕ, àñđ ŕéþöŕţš ŵĥàţ îţ ŕéƒüšéđ.

Ţĥé þŕöĵéçţ ƒöļļöŵš ţĥàţ àñšŵéŕ ŕàţĥéŕ ţĥàñ ŕéšţàţîñĝ îţš öŵñ. À ŕéƒüšéđ ṽéŕđîçţ îš ŕéţîŕéđ ļöçàļļý ţö ţĥé šàḿé ƃàšîš, ŕéçöŕđéđ ŕàţĥéŕ ţĥàñ šţàĝéđ, ƃéçàüšé ţĥé ṽéñüé'š àñšŵéŕ àƃöüţ þüƃļîšĥéđ ŵöŕķ îš ñöţ à þéŕšöñ'š þéñđîñĝ đéçîšîöñ. Ƃöţĥ éñđš çöḿþüţé ţĥé šàḿé ŕéçöŕđ, šö ţĥé đéçîšîöñ çöḿþöñéñţ öƒ ţĥé ƒŕéšĥñéšš ŕéƒ àĝŕééš àĝàîñ àñđ ţĥé ñéẋţ þüšĥ ĥàš ñöţĥîñĝ ţö šéñđ. Ŵîţĥöüţ ţĥàţ šţéþ ţĥé ţŵö ƒöļđš đéŕ ƒöŕ ĝööđ, àñđ éṽéŕý þüšĥ ŕé-šéñđš ţĥé šàḿé ŕéƒüšéđ àþþŕöṽàļš.

Ţĥé ṽéñüé đéçļîñéš ţĥé öţĥéŕ đîŕéçţîöñ öñ ţĥé šàḿé ţéŕḿš. À þüšĥ ŵĥöšé ŕéçöŕđ ţàķéš ƃàçķ à šîĝñ-öƒƒ ţĥé ṽéñüé ĥöļđš, öṽéŕ ţĥé šàḿé ţŕàñšļàţîöñ öƒ ţĥé šàḿé šöüŕçé, îš à ŵîţĥđŕàŵàļ, àñđ ţĥé ṽéñüé àþþļîéš îţ öñļý ƒöŕ à þüšĥéŕ ĥöļđîñĝ ŕéṽîéŵ þéŕḿîššîöñ ƒöŕ ţĥé ļàñĝüàĝé. À ŕéƒüšéđ ŵîţĥđŕàŵàļ ķééþš ţĥé ṽéñüé'š ŕéçöŕđ, àñđ ţĥé ŕéþöŕţ çàŕŕîéš ţĥàţ ŕéçöŕđ ƃàçķ; ţĥé þŕöĵéçţ ŵŕîţéš îţ îñţö îţš çöḿḿîţţéđ ŕéçöŕđ, ŕéçöŕđéđ ŕàţĥéŕ ţĥàñ šţàĝéđ, šö ţĥé ţŵö àĝŕéé àĝàîñ ŵîţĥ ñö þüļļ ƃéţŵééñ ţĥéḿ.

À ŕéĵéçţîöñ îš ƃöüñđ ţö ţĥé ţŕàñšļàţîöñ îţ ĵüđĝéđ îñ ţĥé šàḿé ŵàý. À þüšĥéđ ŕéĵéçţîöñ öƒ à ţŕàñšļàţîöñ ţĥé ṽéñüé ĥàš šîñçé ŕéþļàçéđ çĥàñĝéš ñöţĥîñĝ ţĥé ṽéñüé ĥöļđš: ţĥé ṽéñüé ķééþš ţĥé üñîţ'š ŕéçöŕđ, ŕéþöŕţš ţĥé ŕéĵéçţîöñ îţ đîđ ñöţ àþþļý àñđ çàŕŕîéš îţš ŕéçöŕđ ƃàçķ. Ţĥé þŕöĵéçţ ţàķéš ţĥàţ ŕéçöŕđ, öŕ ķééþš ţĥé ƃàšîš ŵîţĥöüţ ţĥé ŕéĵéçţîöñ ŵĥéŕé ţĥé ṽéñüé ĥöļđš ñöñé.

À ṽéñüé àļšö ķééþš à đéçîšîöñ àƒţéŕ ţĥé çöñţéñţ îţ ĵüđĝéđ îš ŕéḿöṽéđ. À ƒîļé ļéàṽîñĝ à çĥéçķöüţ šàýš ñöţĥîñĝ àƃöüţ ţĥé ŕéçöŕđ, ŵĥîçĥ šţîļļ ĥöļđš ţĥé đéçîšîöñ, àñđ à þŕöĵéçţ šéñđš îţš ŕéçöŕđ àĝàîñ öñļý ŵĥéñ ţĥàţ ŕéçöŕđ'š ƒöļđ ḿöṽéš. À ṽéñüé ţĥàţ đŕöþþéđ ţĥé đéçîšîöñ ŵöüļđ ĥàṽé ñöţĥîñĝ ţö ƃŕîñĝ îţ ƃàçķ, šö îţ ķééþš ţĥé đéçîšîöñ àñđ ŵĥàţéṽéŕ éñţŕý ţĥé đéçîšîöñ ĥàñĝš ƒŕöḿ, àñđ çöñţéñţ àŕŕîṽîñĝ àţ ţĥàţ þàţĥ àĝàîñ ļàñđš öñ ţĥàţ éñţŕý, ŵîţĥ ţĥé đéçîšîöñ šţîļļ ŕéçöŕđéđ àĝàîñšţ îţ. Ŵĥàţ ţĥé ṽéñüé ŕéþöŕţš àš çöñţéñţ ļéàṽéš ţĥàţ éñţŕý öüţ, šö à þŕöĵéçţ îš ñéṽéŕ àšķéđ ţö àççöüñţ ƒöŕ à ƒîļé îţ đöéš ñöţ ĥàṽé.

Ţĥé çöḿḿîţţéđ ļöçàţîöñ îš ƒîẋéđ

Ţĥé ŕéçöŕđ ļîṽéš àţ .kapi/state/, đéŕîṽéđ ƒŕöḿ ţĥé þŕöĵéçţ ļàýöüţ: îñšîđé ţĥé çöḿḿîţţéđ çöñţéẋţ, ƃéšîđé ţĥé ţéŕḿš àñđ ţĥé çöñţéñţ ḿéḿöŕý îţ ḿàķéš çļàîḿš àƃöüţ. kapi status àñđ kapi commit ţàķé ñö þàţĥ, àñđ ţĥé ŕéçîþé ƃîñđš ñöţĥîñĝ: ţĥé ŕéçöŕđ îš à đîŕéçţöŕý ŵĥöšé çöñţéñţš kapi öŵñš àñđ þŕüñéš, šö þöîñţîñĝ îţ àţ àñ àŕƃîţŕàŕý ļöçàţîöñ ŵöüļđ îñṽîţé à þŕöĵéçţ ţö àîḿ îţ šöḿéŵĥéŕé kapi đéļéţéš ƒŕöḿ. Ţĥàţ îš ţĥé đéŕéñçé ƒŕöḿ terms_source àñđ memory_source, ŵĥîçĥ ƃîñđ àñý þàţĥ ƃéçàüšé à þéŕšöñ àüţĥöŕš ţĥöšé ƒîļéš.

Ĝéţţîñĝ ţĥé ŕéçöŕđ öüţ öƒ kapi'š öŵñ ļàýöüţ îš à ĵöƃ ƒöŕ éẋçĥàñĝé ŕàţĥéŕ ţĥàñ ŕéļöçàţîöñ (kapi merge, ẊĻÎƑƑ <target state=…>, ţĥé .kpz ƃîļîñĝüàļ þŕöƒîļé), ŵĥîçĥ çöñṽéŕţš ţĥé ŕéçöŕđ îñţö à ƒöŕḿàţ à ţĥîŕđ þàŕţý çàñ ŕéàđ îñšţéàđ öƒ ḿöṽîñĝ îţ.

Ŵĥý ţĥé çöḿḿîţţéđ ŕéçöŕđ šţàýš, ŵĥàţéṽéŕ éļšé éẋîšţš

À ĥöšţéđ ļàýéŕ çàñ çööŕđîñàţé ŕéṽîéŵ: çöñçüŕŕéñţ ŕéṽîéŵéŕš, àššîĝñḿéñţ, ǫüéüéš, àñđ à þļàçé ƒöŕ ŕéṽîéŵš đöñé ƃý þéöþļé ŵîţĥ ñö çĥéçķöüţ. Ţĥàţ îš çööŕđîñàţîöñ àŕöüñđ ţĥé ŕéçöŕđ ŕàţĥéŕ ţĥàñ à ŕéþļàçéḿéñţ ƒöŕ îţ, àñđ ţĥé çöḿḿîţţéđ ŕéçöŕđ ķééþš þŕöþéŕţîéš ñö ļîṽé đàţàƃàšé çàñ:

  • kapi ŕüñš öñ îţš öŵñ. ΃ üñîţ šţàţé ŕéǫüîŕéđ à šéŕṽîçé, à þļàîñ kapi þŕöĵéçţ çöüļđ ñöţ çöñṽéŕĝé àţ àļļ.
  • Ţĥé ŕéçöŕđ ƃéļöñĝš ţö ţĥé çĥàñĝé ţĥàţ çàüšéđ îţ. Šöüŕçé đŕîƒţ ĥàþþéñš îñ à þüļļ ŕéǫüéšţ, àñđ ţĥé šţàţé çĥàñĝé ƃéļöñĝš îñ ţĥàţ šàḿé đ, ŵĥéŕé à ŕéṽîéŵéŕ šééš ţĥàţ àñ éđîţ îñṽàļîđàţéđ ţŵéļṽé àþþŕöṽàļš. À ļîṽé đàţàƃàšé îš ñöŵ, ñöţ àţ ţĥîš çöḿḿîţ.
  • À çĥéçķöüţ àţ à þàšţ çöḿḿîţ ḿüšţ çöñṽéŕĝé îđéñţîçàļļý. Šţàţé ṽéŕšîöñéđ àļöñĝšîđé ţĥé šöüŕçé ĝîṽéš ţĥàţ.
  • Ļöçàļ-ƒîŕšţ ĥöļđš éļšéŵĥéŕé ţöö. Ŕéđàçţîöñ (Ç-10) éẋîšţš šö çöñţéñţ çàñ ƃé ŵîţĥĥéļđ ƒŕöḿ à ñàḿéđ đéšţîñàţîöñ. À đéšîĝñ ŵĥéŕé üñîţ šţàţé ĥàš ţö ŕöüñđ-ţŕîþ ţĥàţ đéšţîñàţîöñ çöñţŕàđîçţš îţ.

Ļàýéŕîñĝ: ţĥé ḿöđéļ îñ core/, ţĥé ÎÖ ŵîţĥ îţš šüŕƒàçé

Ţĥé šţàţé ŕéçöŕđ, îţš ŵöŕķîñĝ šéţ, àñđ ţĥé çöñṽéŕĝéñçé ḿöđéļ (ţĥé ļàđđéŕ ţýþéš àñđ ţĥé þéŕ-ƃļöçķ ŕüñĝ ĥéļþéŕš) ļîṽé îñ core/state àñđ core/convergence, šö éṽéŕý šüŕƒàçé àĝŕééš öñ ŵĥàţ ţĥé ŕüñĝš ḿéàñ. Ţĥé öŕçĥéšţŕàţîöñ ţĥàţ ŕéàđš ƒîļéš àñđ çöḿþüţéš à ŕéþöŕţ šţàýš ŵîţĥ îţš ÎÖ. Ţĥé ÇĻÎ ŕé-éẋþöŕţš ţĥé çöŕé ţýþéš ţĥŕöüĝĥ àļîàšéš šö đöŵñšţŕéàḿ çöđé šééš öñé îḿþöŕţ.

Çöñšéǫüéñçéš

  • core/state ĥöļđš UnitState (šţàţüš, šöüŕçé šţàţüš, öŕîĝîñ, ţàŕĝéţ ĥàšĥ, ƃàšîš, ĝöṽéŕñîñĝ ƒîñĝéŕþŕîñţ, đéçîšîöñ, üþđàţéđ), à Key, ţĥé Stale/Fresh/Reviewed ļàđđéŕ ĥéļþéŕš, àñđ WorkStore, ţĥé ŵöŕķîñĝ šéţ öṽéŕ ţĥé šĥàŕđéđ çöḿḿîţţéđ ŕéçöŕđ (Get/Put/Delete/All/Pending/Commit, þļüš Documents àñđ AdoptDocuments ƒöŕ đöçüḿéñţ îđéñţîţý, àñđ CommittedDigest, SyncWithCommitted àñđ Reseed ƒöŕ àĝŕééḿéñţ ŵîţĥ ţĥé ŕéçöŕđ öñ đîšķ).
  • Àþþŕöṽàļš ƒļöŵ ţĥŕöüĝĥ öñé ṽéŕƃ. kapi apply ŵîţĥ kind:"review" ŕéçöŕđš ţĥé üñîţ šţàţé îñ ţĥé þŕöĵéçţ šţöŕé, àđđŕéššéđ ƃý (file, id, locale) éẋàçţļý àš kapi status --review ļîšţš îţ. Ţĥé đéšķţöþ'š àþþŕöṽé àçţîöñ àñđ ţĥé ÇĻÎ ṽéŕƃ šĥàŕé öñé þàţĥ.
  • Çöṽéŕàĝé đéŕîṽéš ƒŕöḿ ţĥé šţàţé šţöŕé þļüš ţĥé ţàŕĝéţ ƒîļéš, ñéṽéŕ ƒŕöḿ çöñţéñţ-ḿéḿöŕý þŕöþéŕţîéš.
  • Éẋçĥàñĝé àñđ þàŕçéļš çàŕŕý šţàţé, šö à ĥàñđ-öƒƒ đöéš ñöţ đŕöþ îţ.
  • Ţĥé ŕéçîþé šţàýš çļéàñ. Îţ ƃîñđš šöüŕçéš, ñéṽéŕ à đéŕîṽéđ àŕţîƒàçţ; ţĥé šţàţé ŕéçöŕđ àñđ ţĥé đàţàƃàšé ţĥàţ šţàĝéš îţ àŕé ƃöţĥ ƒîẋéđ ƃý ţĥé ļàýöüţ.

Šéé àļšö