Ç-11: Çöñţéẋţ öþéŕàţîöñš
Šüḿḿàŕý
Éṽéŕý çĥàñĝé ţö à þŕöĵéçţ'š çöñţéẋţ îš àñ öþéŕàţîöñ: àñ àçţöŕ, à ķîñđ, à šüƃĵéçţ, ţĥé éṽîđéñçé ƃéĥîñđ îţ, ţĥé ĝöṽéŕñàñçé îţ ŵàš ḿàđé àĝàîñšţ, àñđ à ţîḿéšţàḿþ ƒŕöḿ Ĝö'š çļöçķ. Öþéŕàţîöñš àŕé àþþéñđéđ ţö ţĥé ŵöŕķšþàçé'š öþéŕàţîöñ ļöĝ (Ç-03) àñđ ñéṽéŕ éđîţéđ. À šţàţüš çĥàñĝé îš à ñéŵ öþéŕàţîöñ ñàḿîñĝ ţĥé éàŕļîéŕ öñé.
À šüĝĝéšţéđ ŕüļé ţàķéš éƒƒéçţ àţ öñçé àš àđṽîçé. Çĥéçķš ŕéþöŕţ îţ ŵîţĥ ñö ŵéîĝĥţ îñ ţĥé šçöŕé, šö à šüĝĝéšţîöñ šĥöŵš üþ ŵĥéŕéṽéŕ à ŕüļé ŵöüļđ àñđ çàñ ñéṽéŕ ƒàîļ à çĥéçķ. À šüĝĝéšţîöñ îš éšţàƃļîšĥéđ ŵĥéñ àţ ļéàšţ öñé šîĝñàļ ƒŕöḿ à þéŕšöñ ƃàçķš îţ àñđ ñöţĥîñĝ öþéñ çöñţŕàđîçţš îţ: à þéŕšöñ ķééþîñĝ îţ, à çöŕŕéçţîöñ ţöŵàŕđ îţ, öŕ ţĥé çĥàñĝé ŕéàçĥîñĝ ţĥé đéƒàüļţ ƃŕàñçĥ. Šéţţļîñĝ îš à ƒüñçţîöñ öƒ ţĥé ļöĝ àļöñé, šö éṽéŕý ḿàçĥîñé ĥöļđîñĝ ţĥé šàḿé öþéŕàţîöñš ŕéàçĥéš ţĥé šàḿé àñšŵéŕ. Àñ éšţàƃļîšĥéđ ŕüļé ƒàîļš à çĥéçķ üñļéšš îţ îš ḿàŕķéđ àđṽîšöŕý, àñđ îš ŵŕîţţéñ îñţö ţĥé šüƃšýšţéḿ ţĥàţ àļŕéàđý ŕéàđš îţ: ţĥé ţéŕḿš šţöŕé öŕ ţĥé çöñţéñţ ḿéḿöŕý. Ţĥé ļöĝ îš ţĥé ĥîšţöŕý àñđ ţĥé šöüŕçé öƒ šüĝĝéšţîöñš; éšţàƃļîšĥéđ ŕüļéš ļîṽé îñ ţĥé šţöŕéš.
contextop.PersonDecides đéƒîñéš ţĥé þéŕḿîššîöñ þöļîçý. Àñ àĝéñţ öŕ à ţööļ
ḿàý öƃšéŕṽé, ŕéçöŕđ à çöŕŕéçţîöñ, àñđ ŵîţĥđŕàŵ îţš öŵñ šüĝĝéšţîöñ îñ ţĥé
šéššîöñ ţĥàţ ŕéçöŕđéđ îţ. Àñý àçţöŕ ḿàý ŕéçöŕđ à çĥéçķ ŕüñ (check), ŵĥîçĥ
çĥàñĝéš ñöţĥîñĝ ţĥé çöñţéẋţ ĥöļđš. Öñļý à ţööļ ŕéçöŕđš éṽîđéñçé (signal) àñđ
ţĥé éšţàƃļîšĥḿéñţš šéţţļîñĝ đéŕîṽéš ƒŕöḿ îţ (establish). Öñļý à þéŕšöñ ķééþš,
éđîţš, đŕöþš, îḿþöŕţš, ŵîđéñš, öŕ ŕéšéţš ţĥé çöñţéẋţ ţö àñ éàŕļîéŕ þöîñţ.
Ţĥé çöḿḿàñđ ļîñé šþļîţš àļöñĝ ţĥé šàḿé ļîñé. kapi context çàŕŕîéš à
þéŕšöñ'š ṽéŕƃš (<path>, search, review, reset, sync) àñđ ļîšţš ţĥé
ţŵö àñ àššîšţàñţ üšéš, note àñđ log, üñđéŕ à ĥéàđîñĝ öƒ ţĥéîŕ öŵñ, Ƒöŕ
àššîšţàñţš. Ḿàîñţéñàñçé öƒ ţĥé šţöŕé îţšéļƒ (import, export, rebuild,
locales) îš à šéþàŕàţé çöḿḿàñđ, kapi store.
Çöñţéẋţ
Þŕöĵéçţš àççüḿüļàţé çöñţéẋţ ţĥŕöüĝĥ öƃšéŕṽàţîöñš àñđ çöŕŕéçţîöñš ḿàđé đüŕîñĝ ñöŕḿàļ ŵŕîţîñĝ ŵöŕķ. Àĝéñţš çàñ þŕöþöšé ŕüļéš ŵîţĥ éṽîđéñçé; þéöþļé ŕéṽîéŵ ţĥöšé þŕöþöšàļš ƃéƒöŕé çĥéçķš éñƒöŕçé ţĥéḿ.
Ñöţéš àƃöüţ ŵĥàţ ţĥé ƒîļéš đö àñđ ŵĥàţ à þéŕšöñ çĥàñĝéđ ƃéçöḿé šüĝĝéšţîöñš. À þéŕšöñ ķééþš à šüĝĝéšţîöñ îñ ŕéṽîéŵ ƃéƒöŕé çĥéçķš éñƒöŕçé îţ.
Šüĝĝéšţîöñš ḿüšţ ñöţ ƒàîļ ƃüîļđš ƃéƒöŕé ŕéṽîéŵ. Öþéŕàţîöñš ḿüšţ àļšö ƃé
àţţŕîƃüţàƃļé àñđ ŕéṽéŕšîƃļé. Ţĥé đéšîĝñ ƒöļļöŵš ţĥé üñîţ-đéçîšîöñ ḿöđéļ îñ
core/state (Ç-04): àñ àþþéñđ-öñļý ļéđĝéŕ
àñđ à šĥàŕéđ þöļîçý ƒüñçţîöñ ƒöŕ àļļ ŵŕîţéŕš.
Đéçîšîöñ
Àñ öþéŕàţîöñ îš ţĥé üñîţ
contextop.Record îš öñé ŕéçöŕđéđ çĥàñĝé:
type Record struct {
ID string // the operation id, the same in every log that holds it
Short string // its first ten characters, as a log line shows it
Project workspace.ProjectKey
Actor Actor // person | agent | tool, a name, an agent's session
Kind Kind // observe | correct | import | edit | keep | drop | withdraw | reset | widen | signal | establish
Subject Subject // a term rule, a content-memory pair, a note
Correction *Correction // the wording before and the wording after
Evidence []Evidence // file, unit, quotation: where this was seen
Basis Basis // the governance in force when it was recorded
Scope Scope // where it applies, and for how long
Target string // the operation this one acts on
Before string // the first operation a reset sets aside
Note string // why, in the recorder's words
At time.Time
Status Status // folded from the log, never stored
ContestedBy []string // the operations on the other side of a disagreement
Established bool // kept, imported, written, or settled on a person's signal
Signal *Signal // the evidence a signal carries
Because []string // the signals an establishment rested on
Standing *Standing // the counts for and against, folded from the log
}
Ţĥé ķîñđš, þéŕšîšţéđ àš context.<kind>, đîṽîđé îñţö ţĥöšé ţĥàţ çàŕŕý à
šüƃĵéçţ, ţĥöšé ţĥàţ àçţ öñ öñé, àñđ check, ŵĥîçĥ đöéš ñéîţĥéŕ.
observeŕéçöŕđš šöḿéţĥîñĝ šöḿéƃöđý ñöţîçéđ. Šţàţéđ îñ þŕöšé, îţ îš à ñöţé, šüçĥ àš ŵĥö ţĥé đöçüḿéñţš àđđŕéšš. Šţàţéđ àš ţĥé ƒöŕḿ ţĥé þŕöĵéçţ üšéš ƒöŕ à ŵöŕđ àñđ ţĥé ƒöŕḿš îţ àṽöîđš, îţ îš à ţéŕḿ ŕüļé.correctŕéçöŕđš ţĥàţ šöḿéöñé çĥàñĝéđ ŵöŕđîñĝ ƒŕöḿ öñé ƒöŕḿ ţö àñöţĥéŕ àţ à ļöçàţîöñ, çàŕŕîéš ƃöţĥ ŵöŕđîñĝš îñCorrection, àñđ ḿàý çàŕŕý ţĥé ţéŕḿ ŕüļé ţĥé çĥàñĝé îḿþļîéš àš îţš šüƃĵéçţ.importŕéçöŕđš öñé çöñţéẋţ ƒîļé à þéŕšöñ ŕéàđ îñţö ţĥé þŕöĵéçţ'š šţöŕéš, àñđeditŕéçöŕđš à ŕüļé à þéŕšöñ ŵŕöţé đîŕéçţļý, ŵîţĥkapi applyöŕ ƃý éđîţîñĝ ţĥé ṽöîçé þŕöƒîļé. Ƃöţĥ àŕé éšţàƃļîšĥéđ ƒŕöḿ ţĥé šţàŕţ.keep,drop,withdrawàñđwidenñàḿé àñ éàŕļîéŕ öþéŕàţîöñ àñđ šàý ŵĥàţ ƃéçàḿé öƒ îţ.resetñàḿéš à þöîñţ îñ ţĥé ļöĝ, ţĥé ƒîŕšţ öþéŕàţîöñ îţ šéţš àšîđé, àñđ ŕéŵîñđš ţĥé þŕöĵéçţ'š çöñţéẋţ ţö ĥöŵ îţ šţööđ ţĥéŕé (ƃéļöŵ).signalŕéçöŕđš éṽîđéñçé àƃöüţ à šüĝĝéšţîöñ ţĥàţ ñöƃöđý ŵŕöţé đöŵñ ƃý ĥàñđ, àñđestablishŕéçöŕđš ţĥàţ šéţţļîñĝ éšţàƃļîšĥéđ öñé (ƃéļöŵ).checkŕéçöŕđš öñé ŕüñ öƒ ţĥé þŕöĵéçţ'š çĥéçķš ƒöŕ àñ àššîšţàñţ: ţĥé Çļàüđé Çöđé Šţöþ ĥööķ ŕüññîñĝkapi check --shipàš à ţüŕñ éñđš (CheckRun.Hookstop), öŕ îţš ÞöšţŢööļÜšé ĥööķ ŕüññîñĝkapi check <file>öñ ţĥé öñé ƒîļé àñ éđîţ ŵŕöţé (edit). ÎţšCheckRunĥöļđš ţĥé ƒîļéš ţĥé ţüŕñ éđîţéđ, ţĥé ƒàîļîñĝ ƒîñđîñĝš ƃý ƒîļé, ŕüļé îđ àñđ ǫüöţé, àñđ ŵĥéţĥéŕ ţĥé ŕüñ ŵàš çļéàñ. Îţš îđ îš đéŕîṽéđ ƒŕöḿ ţĥé šéššîöñ àñđ ţĥé éṽéñţ ţĥé ŕüñ àñšŵéŕéđ: ƒöŕ à Šţöþ ĥööķ ŕüñ, ţĥé îđ öƒ ţĥé ţŕàñšçŕîþţ'š ļàšţ éñţŕý, ŵĥîçĥ Çļàüđé Çöđé ŵŕîţéš àƒţéŕ éṽéŕý Šţöþ ĥööķ, šö éàçĥ Šţöþ îš à ŕüñ öƒ îţš öŵñ; ƒöŕ àñ éđîţ ĥööķ ŕüñ, ţĥé îđ öƒ ţĥé ţööļ çàļļ. À ĥööķ ŕüññîñĝ ţŵîçé ƒöŕ öñé éṽéñţ ŕéçöŕđš öñé öþéŕàţîöñ. À çĥéçķ ŕüñ šţàýš öñ ţĥé ḿàçĥîñé ţĥàţ ŕéçöŕđéđ îţ: šĥàŕîñĝ ţĥé çöñţéẋţ ļéàṽéš îţ öüţ (projector.LocalKinds). À ƒàîļîñĝ ƒîñđîñĝ ţĥàţ öñé ŕüñ ŕéþöŕţš àñđ ţĥé šéššîöñ'š ñéẋţ ŕüñ öñ ţĥé šàḿé ƒîļé đöéš ñöţ ƒîñđ çöüñţš àš çàüĝĥţ. À Šţöþ ĥööķ ŕüñ çöṽéŕš éṽéŕý ƒîļé; àñ éđîţ ĥööķ ŕüñ çöṽéŕš îţš öñé ƒîļé àñđ ţĥé ƒîñđîñĝš ŵĥöšé ŕüļé ţĥé ŵŕîţîñĝ çĥéçķ ŕéþöŕţš (CheckRun.Covers), šö à ƒîñđîñĝ öñ àñöţĥéŕ ƒîļé ŵàîţš ƒöŕ ţĥé ñéẋţ ŕüñ ţĥàţ çĥéçķš ţĥàţ ƒîļé;host.SessionOutcomesđéŕîṽéš ţĥé çöüñţ ƒŕöḿ ţĥé ļöĝ àñđ ñöţĥîñĝ šţöŕéš îţ.
contextop.Ledger đéŕîṽéš šţàţüš ƃý ŕéþļàýîñĝ ţĥé ļöĝ îñ öŕđéŕ àñđ àþþļýîñĝ
šüƃšéǫüéñţ öþéŕàţîöñš ţö éàçĥ šüƃĵéçţ:
| Šţàţüš | Ŵĥàţ îţ ḿéàñš | Àñšŵéŕš |
|---|---|---|
suggested | ñöţĥîñĝ ĥàš àçţéđ öñ îţ | àđṽîšéš |
established | à þéŕšöñ ķéþţ, îḿþöŕţéđ öŕ ŵŕöţé îţ, öŕ à þéŕšöñ'š šîĝñàļ šéţţļéđ îţ | ƒàîļš à çĥéçķ üñļéšš àđṽîšöŕý |
contested | îţ đîšàĝŕééš ŵîţĥ àñöţĥéŕ ŕüļé, ñàḿéđ îñ ContestedBy | àđṽîšéš |
withdrawn | îţš àüţĥöŕ ţööķ îţ ƃàçķ îñ ţĥé šéššîöñ ţĥàţ ŕéçöŕđéđ îţ | šîļéñţ |
dropped | à þéŕšöñ šéţ îţ àšîđé, àš à šüĝĝéšţîöñ öŕ àš à ŕüļé îñ ƒöŕçé | šîļéñţ |
reset | à ŕéšéţ šéţ îţ àšîđé | šîļéñţ |
Àñ öƃšéŕṽàţîöñ šţàţéš à ţéŕḿ ŕüļé ƃý îţš ƒöŕḿš
kapi context note --term Quickcast --instead-of "Quick cast" ŕéçöŕđš ţĥé
ƒöŕḿ ţĥé þŕöĵéçţ üšéš àñđ à ƒöŕḿ îţ àṽöîđš. contextop.AvoidedForms đéŕîṽéš
ţĥé ŕéšţ đéţéŕḿîñîšţîçàļļý, ŵîţĥ ñö ḿöđéļ: ţĥé --instead-of ƒöŕḿš, ţĥéñ ţĥé
šþàçîñĝ, ĥýþĥéñ àñđ çàþîţàļîšàţîöñ ṽàŕîàñţš öƒ à çöḿþöüñđ. Ţĥé ŕüļé àƃöṽé
àṽöîđš Quick cast, Quick-cast àñđ QuickCast.
À çöḿþöüñđ'š þàŕţš çöḿé ƒŕöḿ ţĥé ţéŕḿ'š öŵñ šþàçéš, ĥýþĥéñš àñđ çàšé çĥàñĝéš,
öŕ, ƒöŕ à çļöšéđ ŵöŕđ šüçĥ àš Quickcast, ƒŕöḿ àñ --instead-of ƒöŕḿ ţĥàţ
ƃŕéàķš îţ. À ļöŵéŕ-çàšé þĥŕàšé šüçĥ àš content memory ýîéļđš öñļý
content-memory, ŵîţĥöüţ ĝéñéŕàţîñĝ à çļöšéđ çöḿþöüñđ. À ŵöŕđ ŵîţĥ ñéîţĥéŕ ĥàš ñö
þàŕţš ţö ṽàŕý, àñđ îţš ŕüļé àṽöîđš ŵĥàţ --instead-of ļîšţš. Ţĥé ƒîŕšţ àṽöîđéđ
ƒöŕḿ ƃéçöḿéš ţĥé ŕüļé'š ţéŕḿ àñđ ţĥé ŕéšţ îţš ƒöŕḿš. À ŕüļé ŵĥöšé àṽöîđéđ ƒöŕḿš
đéŕ ƒŕöḿ ţĥé ţéŕḿ öñļý îñ çàšé ḿàţçĥéš àš ŵŕîţţéñ, šö ţĥé ŕüļé àƃöüţ
quickcast ñéṽéŕ ƒîŕéš öñ Quickcast.
Šüĝĝéšţîöñš àđṽîšé, éšţàƃļîšĥéđ ŕüļéš ƃîñđ
À šüĝĝéšţîöñ öŕ à çöñţéšţéđ ŕüļé îš þŕöĵéçţéđ îñţö çĥéçķš àš à šüĝĝéšţéđ ŕüļé
šéţ (profile.TermRuleSet.Suggested). Ţĥé ḿàţçĥéŕ ŕàîšéš éṽéŕý ĥîţ àĝàîñšţ šüçĥ
à šéţ ŵîţĥ Fails ƒàļšé, ŵĥàţéṽéŕ ţĥé ŕüļé đéçļàŕéš, àñđ šţàḿþš Suggested öñ
ţĥé ĥîţ, ţĥé ƒîñđîñĝ àñđ ţĥé đîàĝñöšţîç. À šüĝĝéšţéđ ƒîñđîñĝ ŵéîĝĥš žéŕö îñ ţĥé
šçöŕé àñđ çöüñţš îñţö Summary.Reporting, šö à šüĝĝéšţîöñ çàññöţ ƒàîļ à çĥéçķ.
Ţĥé ƒļàĝ îš ŵĥàţ à šüŕƒàçé ŕéàđš ţö šĥöŵ ţĥé ƒîñđîñĝ àš à šüĝĝéšţîöñ ŕàţĥéŕ ţĥàñ
à ƃŕöķéñ ŕüļé, àñđ HitsToFindings ŵöŕđš ţĥé ḿéššàĝé àççöŕđîñĝļý: Šüĝĝéšţéđ
ŕüļé àƃöüţ "üţîļîšé", ñöţ ýéţ éšţàƃļîšĥéđ.
Šüĝĝéšţéđ-ŕüļé çĥéçķš ŕüñ ƃéƒöŕé àñđ îñđéþéñđéñţļý öƒ ţĥé terms àñàļýžéŕ.
Ţĥîš àļļöŵš þŕöĵéçţš ŵîţĥöüţ à ṽöîçé þŕöƒîļé öŕ ţéŕḿš šţöŕé ţö ŕéþöŕţ
šüĝĝéšţîöñš. Šüĝĝéšţéđ ƒîñđîñĝš ĥàṽé žéŕö šçöŕîñĝ ŵéîĝĥţ àñđ đö ñöţ àƒƒéçţ
ĝàţéš öŕ ţĥé àñàļýžéŕ'š çàñàŕý ṽàļîđàţîöñ.
Ķééþîñĝ à ŕüļé ŵŕîţéš îţ îñţö ţĥé þŕöĵéçţ'š šţöŕéš. Šüƃšéǫüéñţ çĥéçķš üšé ţĥé ŕüļé'š àđṽîšöŕý šéţţîñĝ: ṽîöļàţîöñš öƒ àñ éšţàƃļîšĥéđ ŕüļé ƒàîļ üñļéšš îţ îš ḿàŕķéđ àđṽîšöŕý.
Šüĝĝéšţîöñš šéţţļé ƃý éṽîđéñçé
contextop.settle ŕüñš îñšîđé ţĥé ƒöļđ, àƒţéŕ éṽéŕý þéŕšöñ'š đéçîšîöñ ĥàš ƃééñ
àþþļîéđ àñđ ƃéƒöŕé đîšàĝŕééḿéñţš àŕé ḿàŕķéđ. Îţ ĝŕöüþš ţĥé šüĝĝéšţîöñš ţĥàţ
šţàţé öñé ŕüļé (ţĥé šàḿé ƒöŕḿ ţö üšé, à ƒöŕḿ ţö àṽöîđ îñ çöḿḿöñ, àţ þöîñţš ţĥàţ
ḿééţ) àñđ ŕéàđš ţĥé éṽîđéñçé ƒöŕ ţĥé ĝŕöüþ ƒŕöḿ ţĥé ļöĝ:
| Šîĝñàļ | Ŕéçöŕđéđ àš | Ƀƒéçţ |
|---|---|---|
| À þéŕšöñ ķééþš îţ | keep | Éšţàƃļîšĥéš îţ àţ öñçé |
| À çöŕŕéçţîöñ ţöŵàŕđ îţ, ƃý à þéŕšöñ öŕ ƃý àñ àĝéñţ ŕéçöŕđîñĝ ŵĥàţ ţĥé þéŕšöñ çĥàñĝéđ | correct | Þéŕšöñ šîĝñàļ |
| Ţĥé çĥàñĝé ŕéàçĥéđ ţĥé đéƒàüļţ ƃŕàñçĥ | signal ŵîţĥ šöüŕçé merge | Þéŕšöñ šîĝñàļ |
| Àñöţĥéŕ šéššîöñ ŕéçöŕđš ţĥé šàḿé ŕüļé | observe | Šţàñđîñĝ öñļý |
| Ţĥé çöñţéñţ ŵŕîţéš ţĥé þŕéƒéŕŕéđ ƒöŕḿ | signal ŵîţĥ šöüŕçé usage | Šţàñđîñĝ öñļý |
| Àñ àĝéñţ'š àþþļîéđ éđîţ ŵŕîţéš ţĥé þŕéƒéŕŕéđ ƒöŕḿ | signal ŵîţĥ šöüŕçé applied | Šţàñđîñĝ öñļý |
| À çöŕŕéçţîöñ àŵàý ƒŕöḿ îţ | correct | Àĝàîñšţ |
| Îţš àüţĥöŕ ŵîţĥđŕàŵš îţ | withdraw | Àĝàîñšţ |
| Ţĥé çöñţéñţ ḿöṽéš ţö à ŕéĵéçţéđ ƒöŕḿ àƒţéŕ îţ ŵàš ŕéçöŕđéđ | signal ŵîţĥ šöüŕçé usage | Àĝàîñšţ |
Ţĥé ĝŕöüþ šĥàŕéš öñé šţàñđîñĝ, àñđ éàçĥ ḿéḿƃéŕ îš šéţţļéđ öñ ţĥé þéŕšöñ
šîĝñàļš šééñ ŵĥéŕé ţĥàţ ḿéḿƃéŕ ĥöļđš. À çöŕŕéçţîöñ çöüñţš ƒöŕ à ḿéḿƃéŕ ŵĥöšé
šçöþé çöṽéŕš ţĥé þöîñţ ţĥé çöŕŕéçţîöñ ŵàš ŕéçöŕđéđ àţ (seenWithin), àñđ à
ḿéŕĝé šîĝñàļ ñàḿéš ţĥé ḿéḿƃéŕ ŵĥöšé šçöþé ţĥé çĥàñĝé'š ƒîļéš šàţ îñ, šö îţ
çöüñţš ƒöŕ ţĥàţ ḿéḿƃéŕ àļöñé. Šüĝĝéšţîöñš àţ à þöîñţ ŵîţĥ ñö çööŕđîñàţéš ḿééţ
éṽéŕý öţĥéŕ þöîñţ, šö à ĝŕöüþ çàñ šþàñ ţĥé ĥéļþ þàĝéš àñđ ţĥé ļéĝàļ ţéŕḿš
ţĥŕöüĝĥ öñé öƒ ţĥéḿ; ţĥé éṽîđéñçé îš šţîļļ ŕéàđ þéŕ ḿéḿƃéŕ, àñđ à çöŕŕéçţîöñ
îñ ţĥé ĥéļþ þàĝéš éšţàƃļîšĥéš ţĥé ĥéļþ þàĝéš' šüĝĝéšţîöñ àñđ ļéàṽéš ţĥé ļéĝàļ
ţéŕḿš' šüĝĝéšţîöñ àš îţ ŵàš.
À ḿéḿƃéŕ ŵîţĥ à þéŕšöñ šîĝñàļ àñđ ñöţĥîñĝ àĝàîñšţ îţ îš éšţàƃļîšĥéđ. À ḿéḿƃéŕ ŵîţĥ à þéŕšöñ šîĝñàļ àñđ à šîĝñàļ àĝàîñšţ îţ, öŕ à ŕîṽàļ ŕüļé ţĥàţ đîšàĝŕééš ŵîţĥ îţ, îš çöñţéšţéđ àñđ ŵàîţš ƒöŕ à þéŕšöñ. À ḿéḿƃéŕ ŵîţĥöüţ à þéŕšöñ šîĝñàļ šţàýš à šüĝĝéšţîöñ ŵĥàţéṽéŕ îţš šţàñđîñĝ, àñđ ţîḿé àļöñé šéţţļéš ñöţĥîñĝ. Ţĥé çöŕŕéçţîöñ à šüĝĝéšţîöñ ŵàš đŕàŵñ ƒŕöḿ îš ñöţ éṽîđéñçé ƒöŕ ţĥàţ šüĝĝéšţîöñ àļöñé. À þéŕšöñ đŕöþþîñĝ ţĥé ŕüļé šéţš àšîđé ŵĥàţ ŵàš ŕéçöŕđéđ ƃéƒöŕé ţĥé đŕöþ, ţöĝéţĥéŕ ŵîţĥ ţĥé éṽîđéñçé ĝàţĥéŕéđ ƃéƒöŕé îţ.
Àñ àĝéñţ'š šüĝĝéšţîöñ àþþļîéš öñļý ŵĥéŕé îţ ŵàš šééñ üñţîļ à þéŕšöñ ŵîđéñš îţ
îñ ŕéṽîéŵ (placed). Öñé ţĥàţ ñàḿéš ñö ƒîļé îţ ŵàš šééñ îñ ĥàš ñö þļàçé, šö
šéţţļîñĝ ñéṽéŕ éšţàƃļîšĥéš îţ; à þéŕšöñ ķééþš îţ àñđ çĥööšéš ŵĥéŕé îţ ĥöļđš.
Šéţţļîñĝ ŕéçöŕđš àñ establish ŵîţĥ ţĥé šüĝĝéšţîöñ'š öŵñ šçöþé àñđ ñéṽéŕ
çĥàñĝéš îţ: éṽîđéñçé éšţàƃļîšĥéš à ŕüļé ŵĥéŕé îţ ŵàš šééñ àñđ ŵîđéñš ñöţĥîñĝ.
Ŵĥéñ ţĥé ļöĝ šüþþöŕţš éšţàƃļîšĥîñĝ à šüĝĝéšţîöñ ţĥàţ ñö establish ñàḿéš ýéţ,
Ledger.Settle ŕéçöŕđš öñé: àçţöŕ tool settle, ţĥé šüĝĝéšţîöñ àš îţš ţàŕĝéţ,
àñđ ţĥé þéŕšöñ šîĝñàļš îţ ŕéšţéđ öñ îñ Because. Îţš çöñţéñţ àđđŕéšš îš
đéŕîṽéđ ƒŕöḿ ţĥé ţàŕĝéţ àñđ ţĥàţ éṽîđéñçé, šö ţŵö ḿàçĥîñéš šéţţļîñĝ ţĥé šàḿé
ļöĝ ŕéçöŕđ öñé öþéŕàţîöñ. Ţĥé ĥöšţ ļàñđš ţĥé ŕüļé ţĥé ŵàý à ķééþ đöéš, àñđ à
ļàţéŕ šîĝñàļ àĝàîñšţ îţ ţàķéš îţ ƃàçķ öüţ öƒ ţĥé šţöŕé ţĥŕöüĝĥ ţĥé šàḿé
ŕéçöñçîļîàţîöñ à çöñţéšţîñĝ çöŕŕéçţîöñ üšéš. Ƃéçàüšé ţĥé ƒöļđ ŕéàđš ţĥé
éṽîđéñçé àĝàîñ öñ éṽéŕý ŕéàđ, àñ establish ŵĥöšé éṽîđéñçé ƒàîļš ţö ĥöļđ
šţöþš ƃîñđîñĝ, àñđ ţĥé öüţçöḿé îš ţĥé šàḿé ŵĥàţéṽéŕ öŕđéŕ ţŵö ļöĝš ŵéŕé ḿéŕĝéđ
îñ.
Record.Standing çàŕŕîéš ţĥé çöüñţš ƃéĥîñđ éàçĥ šüĝĝéšţîöñ, àñđ éṽéŕý šüŕƒàçé
šĥöŵš ţĥéḿ àš çöüñţš, ñéṽéŕ àš à šçöŕé: seen in 3 sessions · 14 of 15 uses in docs/ · merged in #412.
kapi context sync --merged <range> ŕéçöŕđš ţĥé ḿéŕĝé šîĝñàļ
(host.App.SettleContext, ŵĥîçĥ SyncProjectContext ŕüñš ƃéţŵééñ îţš þüļļ àñđ
îţš þüšĥ, àñđ àļöñé îñ à þŕöĵéçţ ţĥàţ šĥàŕéš îţš çöñţéẋţ ñöŵĥéŕé). Îţ ŕéàđš ţĥé
đ ţĥé ŕàñĝé ḿàđé îñšîđé ţĥé þŕöĵéçţ, àñđ ƒöŕ éàçĥ šüĝĝéšţîöñ ŵĥöšé šçöþé
çöṽéŕš à çĥàñĝéđ ƒîļé îţ çöüñţš ţĥé àđđéđ ļîñéš ţĥàţ ŵŕîţé ţĥé þŕéƒéŕŕéđ ƒöŕḿ
àñđ ţĥé ŕéḿöṽéđ ļîñéš ţĥàţ ĥéļđ à ŕéĵéçţéđ öñé. À šüĝĝéšţîöñ ŵîţĥ éîţĥéŕ çöüñţ
àƃöṽé žéŕö ĝéţš à signal ñàḿîñĝ ţĥé çöḿḿîţ, ţĥé þüļļ ŕéǫüéšţ (ŕéàđ ƒŕöḿ à
šǫüàšĥ öŕ ḿéŕĝé çöḿḿîţ'š šüƃĵéçţ ŵĥéñ ñöţ ĝîṽéñ) àñđ ţĥé ḿéŕĝéŕ. Ţĥé šîĝñàļ'š
àđđŕéšš çöṽéŕš ţĥé šüĝĝéšţîöñ, ţĥé çöḿḿîţ àñđ ţĥé çöüñţš, šö šéţţļîñĝ öñé ŕàñĝé
ţŵîçé ŕéçöŕđš ñöţĥîñĝ ñéŵ. ÇÎ ŕüñš îţ àƒţéŕ à ḿéŕĝé öŕ à þüšĥ ţö ţĥé đéƒàüļţ
ƃŕàñçĥ (Çöñṽéŕĝéñçé îñ ÇÎ).
Ţĥé öţĥéŕ šîĝñàļš àŕé ŕéçöŕđéđ ŵĥéŕé ţĥé çöñţéñţ îš ŕéàđ. À ŵĥöļé-þŕöĵéçţ
kapi check àñđ à kapi up ŕüñ çöüñţ, ƒöŕ éàçĥ šüĝĝéšţîöñ àñđ éàçĥ
éšţàƃļîšĥéđ ŕüļé ŵĥöšé šçöþé çöṽéŕš ţĥé çöñţéñţ, ţĥé üšéš öƒ îţš þŕéƒéŕŕéđ ƒöŕḿ
àñđ öƒ ţĥé ƒöŕḿš îţ àṽöîđš îñ ţĥé šöüŕçé ţĥéý ŕéàđ, àñđ ŕéçöŕđ à usage šîĝñàļ
àš ţööļ check; à çĥéçķ öƒ ñàḿéđ ƒîļéš öŕ öƒ à đ ŕéçöŕđš ñöñé, ƃéçàüšé þàŕţ
öƒ ţĥé çöñţéñţ šàýš ñöţĥîñĝ àƃöüţ ĥöŵ ţĥé þŕöĵéçţ ŵŕîţéš. À ŕüļé'š çöüñţš àŕé
ŕéçöŕđéđ öñļý ŵĥéñ ţĥéý đéŕ ƒŕöḿ ţĥé ļàţéšţ ŕéçöŕđéđ ƒöŕ îţ, šö à ŕüñ öṽéŕ
üñçĥàñĝéđ çöñţéñţ àđđš ñöţĥîñĝ ţö ţĥé ļöĝ. Ƒöŕ à šüĝĝéšţîöñ ţĥé
çöüñţ îš šţàñđîñĝ. Ƒöŕ àñ éšţàƃļîšĥéđ ŕüļé, à ļàţéŕ çöüñţ ţĥàţ ŵŕîţéš à
ŕéĵéçţéđ ƒöŕḿ ḿöŕé öƒţéñ ţĥàñ ţĥé çöüñţ ţàķéñ ŵĥéñ ţĥé ŕüļé çàḿé îñţö ƒöŕçé îš
đŕîƒţ, ŵĥîçĥ ţĥé ŕéṽîéŵ đîĝéšţ ŕéþöŕţš (Š-07).
Àñ àĝéñţ'š çöñţéñţ éđîţ àþþļîéđ ţĥŕöüĝĥ kapi apply öŕ ţĥé apply_edits ţööļ
ŕéçöŕđš àñ applied šîĝñàļ àš ţööļ apply ƒöŕ éàçĥ šüĝĝéšţîöñ ŵĥöšé þŕéƒéŕŕéđ
ƒöŕḿ ţĥé éđîţ ŵŕîţéš, ñàḿîñĝ ţĥé àĝéñţ'š šéššîöñ.
Đîšàĝŕééḿéñţš àŕé çöñţéšţéđ üñţîļ à þéŕšöñ çĥööšéš
Ţŵö ŕüļéš đîšàĝŕéé ŵĥéñ ţĥéý šĥàŕé à ƒöŕḿ ţö àṽöîđ àñđ ñàḿé đéŕéñţ ƒöŕḿš ţö
üšé, öŕ ŵĥéñ öñé àṽöîđš ţĥé ƒöŕḿ ţĥé öţĥéŕ þŕéšçŕîƃéš. Ţŵö ŕüļéš đîšàĝŕéé
öñļý îƒ ƃöţĥ çàñ àþþļý àţ ţĥé šàḿé þöîñţ àñđ îñšţàñţ. Ŕüļéš îñ đéŕéñţ
þŕöĵéçţš, ŕüļéš àţ çööŕđîñàţéš ţĥàţ çàññöţ öṽéŕļàþ, àñđ ŕüļéš ŵĥöšé ļîƒéţîḿé
ŵîñđöŵš šĥàŕé ñö îñšţàñţ ñéṽéŕ đîšàĝŕéé. À ŕéñàḿé ţĥàţ éñđš öñ ţĥé đàý îţš
ŕéþļàçéḿéñţ ƃéĝîñš îš ţĥéŕéƒöŕé ţŵö ŕüļéš îñ šéǫüéñçé.
Ţĥé ƒöļđ ḿàŕķš à đîšàĝŕééḿéñţ contested àñđ ñàḿéš ţĥé öţĥéŕ šîđé îñ
ContestedBy:
- Ţŵö šüĝĝéšţîöñš àƃöüţ ţĥé šàḿé ŵöŕđ àŕé ƃöţĥ çöñţéšţéđ, éàçĥ ñàḿîñĝ ţĥé
öţĥéŕ. Ƃöţĥ àđṽîšé, àñđ ñéîţĥéŕ çàñ ƃé ķéþţ üñţîļ à þéŕšöñ çĥööšéš öñé:
host.App.ChooseContextSide(kapi context review --choose) đŕöþš ţĥé ŕîṽàļš àñđ ķééþš ţĥé çĥöšéñ šîđé, öñé öþéŕàţîöñ þéŕ šţéþ. - À šüĝĝéšţîöñ ţĥàţ çöñţŕàđîçţš àñ éšţàƃļîšĥéđ ŕüļé îš çöñţéšţéđ ƃý ţĥé ŕüļé, àñđ ţĥé ŕüļé šţàýš îñ ƒöŕçé.
- À þéŕšöñ'š çöŕŕéçţîöñ ţĥàţ ŕéṽéŕšéš àñ éšţàƃļîšĥéđ ŕüļé çöñţéšţš ţĥé ŕüļé,
àñđ ţĥé ŕüļé çöñţéšţš ţĥé çöŕŕéçţîöñ. Ţĥé ŕüļé îš ţàķéñ öüţ öƒ ţĥé ţéŕḿš
šţöŕé àñđ ŕéþöŕţš îñšţéàđ öƒ ƒàîļîñĝ, üñţîļ à þéŕšöñ ķééþš îţ àĝàîñ öŕ đŕöþš
ţĥé çöŕŕéçţîöñ, šö à þéŕšöñ'š öŵñ éđîţ ñéṽéŕ ƒàîļš ţĥéîŕ ƃüîļđ. Ķééþîñĝ ţĥé
çöŕŕéçţîöñ îš à çĥöîçé ļîķé àñý öţĥéŕ šîđé'š:
review --keepŕéƒüšéš îţ àñđ ñàḿéš ţĥé ŕüļé, àñđreview --chooseđŕöþš ţĥé ŕüļé àñđ ķééþš ţĥé çöŕŕéçţîöñ.
kapi context review --session <id> --keep all ķééþš éṽéŕýţĥîñĝ öñé šéššîöñ
šüĝĝéšţéđ àñđ ļéàṽéš éàçĥ çöñţéšţéđ šüĝĝéšţîöñ ƒöŕ ļàţéŕ, ñàḿîñĝ ţĥé öţĥéŕ
šîđé.
Ŕéṽîéŵ îš ŵĥéŕé à þéŕšöñ đéçîđéš
host.App.DecideContextReview ţàķéš öñé ŕöüñđ öƒ đéçîšîöñš
(ContextReviewRequest: Keep, Drop, Choose, Session, WidenTo,
Replacement, Advisory, ValidFrom, ValidTo, Note) àñđ ŕéçöŕđš ţĥéḿ îñ à ƒîẋéđ öŕđéŕ: ţĥé
çĥöîçé, ţĥéñ ţĥé đŕöþš, ţĥéñ ţĥé ķééþš, šö à ķééþ ñéṽéŕ ḿééţš à ŕîṽàļ ţĥé šàḿé
ŕöüñđ đŕöþš. kapi context review ŕéàçĥéš îţ ţŵö ŵàýš. Îñ à ţéŕḿîñàļ îţ ŵàļķš
ţĥé đîĝéšţ öñé îţéḿ àţ à ţîḿé àñđ àšķš; éļšéŵĥéŕé îţ þŕîñţš ţĥé đîĝéšţ, àñđ
ţĥé đéçîšîöñš àŕŕîṽé àš ƒļàĝš. Ƃöţĥ ŕéçöŕđ ţĥé šàḿé öþéŕàţîöñš.
À đîĝéšţ îţéḿ šàýš ŵĥàţ à þéŕšöñ ḿàý đö ŵîţĥ îţ: Droppable ĥöļđš ƒöŕ à
šüĝĝéšţîöñ àñđ ƒöŕ à ŕüļé îñ ƒöŕçé, àñđ Widenable ƒöŕ à ŕüļé îñ ƒöŕçé ţĥàţ
çàñ àþþļý ḿöŕé ŵîđéļý. Đŕöþþîñĝ à ŕüļé îñ ƒöŕçé ŕéçöŕđš à drop àñđ ţàķéš ţĥé
ŕüļé ƃàçķ öüţ öƒ ţĥé šţöŕéš ķééþîñĝ ŵŕöţé îţ ţö
(host.App.DropContextOperation). Ţĥéŕé îš ñö üñđö ƒöŕ à šîñĝļé đéçîšîöñ:
çĥàñĝîñĝ ýöüŕ ḿîñđ àƃöüţ à ŕüļé îš à ñéŵ đéçîšîöñ, ŕéçöŕđéđ ƃéšîđé ţĥé öñé îţ
ŕéþļàçéš.
Ķééþîñĝ ŵŕîţéš ţĥŕöüĝĥ ţĥé éẋîšţîñĝ àþþļîéŕš
kapi apply îš ţĥé öñé ŵŕîţé ṽéŕƃ, àñđ îţš àššéţ öþéŕàţîöñš ŵŕîţé ţĥé þŕöĵéçţ'š
ţéŕḿš šţöŕé öŕ çöñţéñţ ḿéḿöŕý (Ç-08,
Ç-09). À ŵöŕđ ŕüļé îš à ţéŕḿ, šö ķééþîñĝ öñé ŵŕîţéš à
çöñçéþţ, ḿàŕķéđ àđṽîšöŕý ŵĥéñ ţĥé ŕüļé îš. Ķééþîñĝ à
ŕüļé ƃüîļđš ţĥé šàḿé çĥàñĝé-šéţ éñţŕý àñđ ŕüñš ţĥé šàḿé àþþļîéŕ, šö ŕéţŕîéṽàļ,
çĥéçķš, đŕàƒţîñĝ, ţĥé ĝöṽéŕñîñĝ ƒîñĝéŕþŕîñţ àñđ éṽéŕý ḿàçĥîñé ţĥàţ þüļļš àļļ šéé
îţ ŵîţĥ ñö šéçöñđ çöđé þàţĥ. À ţéŕḿ ŕüļé ŵîţĥ šéṽéŕàļ ƒöŕḿš ţö àṽöîđ ļàñđš éàçĥ
ƒöŕḿ, àñđ à ƒöŕḿ ţĥàţ đéŕš ƒŕöḿ ţĥé ƒöŕḿ ţö üšé öñļý îñ çàšé šţàýš öüţ öƒ
ţĥé šţöŕé, ŵĥîçĥ ƒöļđš çàšé.
À ñöţé îñ þŕöšé šţàţéš ñö ŕüļé, šö ķééþîñĝ öñé ŵŕîţéš ţö ñö šţöŕé. Ţĥé ķééþ
öþéŕàţîöñ îñ ţĥé ļöĝ îš ţĥé öñļý ŕéçöŕđ öƒ îţ. Éṽéŕý ƃý-ļöçàţîöñ àñšŵéŕ ŵĥöšé
þöîñţ ţĥé ñöţé'š šçöþé àñđ ŵîñđöŵ çöṽéŕ ļîšţš îţ üñđéŕ Éšţàƃļîšĥéđ ñöţéš
(Ç-06). Ţĥé ŕüļéš ƒîļé öƒ éàçĥ ƒöļđéŕ àţ šüçĥ à þöîñţ
ļîšţš îţ üñđéŕ Ñöţéš à þéŕšöñ ķéþţ
(Ç-06). Ţĥé ķééþ ŕéþöŕţš ţĥé öþéŕàţîöñ ļöĝ àš
ŵĥéŕé ţĥé ñöţé ŵàš ŵŕîţţéñ. Ţĥé ŵîđéšţ šçöþé à ñöţé çàñ ĥàṽé îš îţš þŕöĵéçţ,
ƃéçàüšé ţĥé ŵöŕķšþàçé'š ŕüļé šţöŕé ĥöļđš öñļý ţéŕḿ ŕüļéš.
ContextWidenOptions öƒƒéŕš à ñöţé öñļý îţš àẋéš, àñđ à ŕéǫüéšţ ţö ŵîđéñ à
ñöţé ţö ţĥé ŵöŕķšþàçé îš ŕéƒüšéđ ƃéƒöŕé àñýţĥîñĝ îš ŕéçöŕđéđ.
Đŕöþþîñĝ àñ éšţàƃļîšĥéđ ŕüļé ŕéṽéŕšéš îţ àĝàîñšţ ţĥé šàḿé šţöŕéš: ţĥé ţéŕḿ îš đéļéţéđ ƒŕöḿ ţĥé ţéŕḿš šţöŕé, öŕ ţĥé þàîŕ ƒŕöḿ ţĥé çöñţéñţ ḿéḿöŕý. Öţĥéŕ ţéŕḿš îñ ţĥé çöñçéþţ àŕé þŕéšéŕṽéđ ƃéçàüšé đéļéţîöñ ţàŕĝéţš ţĥé ţéŕḿ.
Éṽéŕý öñé öƒ ţĥéšé šţöŕé ŵŕîţéš ĝöéš ţĥŕöüĝĥ ţĥé þŕöĵéçţöŕ
(Ç-03),
šö ţĥé ļöĝ ĥöļđš éàçĥ ŕüļé ţŵîçé öṽéŕ: ţĥé çöñţéẋţ öþéŕàţîöñ ţĥàţ đéçîđéđ îţ,
àñđ ţĥé terms.write, memory.write, voice.write öŕ rules.write öþéŕàţîöñ
çàŕŕýîñĝ ţĥé ŕöŵš ţĥé đéçîšîöñ ŵŕöţé, ŵĥöšé öŕîĝîñ ñàḿéš ţĥé öþéŕàţîöñ îţ
çàŕŕîéš öüţ. Ţĥé çöñţéẋţ öþéŕàţîöñš ƒöļđ îñţö šţàţüšéš; ţĥé šţöŕé öþéŕàţîöñš
ŕéþļàý îñţö ţĥé šţöŕéš.
À çàļļ ţĥàţ ŵŕîţéš à ŕüļé ţö à šţöŕé, ŕéḿöṽéš öñé, öŕ ķééþš öŕ đŕöþš à ñöţé
àļšö ŕéƒŕéšĥéš ţĥé þŕöĵéçţ'š ŕüļéš ƒîļéš ŵĥéñ îţ éñđš. Ţĥé AGENTS.md àñđ
CLAUDE.md àñ àĝéñţ ļöàđš ţĥéñ ļîšţ ţĥé ŕüļéš àñđ ñöţéš îñ ƒöŕçé
(Ç-06).
kapi apply ŕéçöŕđš öñé edit öþéŕàţîöñ ƒöŕ éàçĥ ţéŕḿ öŕ çöñţéñţ-ḿéḿöŕý
öþéŕàţîöñ îţ àþþļîéš, éšţàƃļîšĥéđ ƒŕöḿ ţĥé šţàŕţ àñđ àţţŕîƃüţéđ ţö ţĥé þéŕšöñ
ŵĥö ŕàñ ţĥé çöḿḿàñđ. Ţĥé ţŕàñšþöŕţ šţàḿþš ţĥé àçţöŕ àñđ à çĥàñĝé šéţ ĥàš ñö
ƒîéļđ ƒöŕ öñé: kapi apply šţàḿþš ţĥé àçţöŕ ţĥé éñṽîŕöñḿéñţ ñàḿéš, àš éṽéŕý kapi context çöḿḿàñđ
đöéš, àñđ apply_edits šţàḿþš ţĥé çàļļîñĝ àĝéñţ àñđ ţĥé šéŕṽéŕ'š šéššîöñ. Ţĥé
þöļîçý ŕéƒüšéš à ţéŕḿ, çöñţéñţ-ḿéḿöŕý öŕ ŕéçîþé éñţŕý ƒŕöḿ àñ àĝéñţ ƃéƒöŕé
àñýţĥîñĝ îš ŵŕîţţéñ, šö àñ àĝéñţ ŕéçöŕđš à ñöţé îñšţéàđ.
Ŕéàđîñĝ à çĥéçķöüţ'š çöñţéẋţ ƒîļéš îš àñ öþéŕàţîöñ ţöö
kapi store import îš ţĥé öñé çöḿḿàñđ ţĥàţ öþéñš à çöñţéẋţ ƒîļé îñ à
çĥéçķöüţ (Ç-01). Ŵĥàţ îţ ŕéàđš îţ ŕéçöŕđš: öñé
import öþéŕàţîöñ þéŕ ƒîļé, éšţàƃļîšĥéđ ƒŕöḿ ţĥé šţàŕţ, ŵîţĥ àñ àçţöŕ öƒ ķîñđ
þéŕšöñ, çàŕŕýîñĝ ţĥé
ƒîļé'š þŕöĵéçţ-ŕéļàţîṽé þàţĥ àñđ ţĥé ŠĤÀ-256 öƒ ţĥé ƃýţéš îţ ŕéàđ àš éṽîđéñçé.
kapi context log ţĥéñ šĥöŵš àñ îḿþöŕţ ƃéšîđé éṽéŕý öţĥéŕ çĥàñĝé ţö ţĥé
þŕöĵéçţ'š çöñţéẋţ, àñđ à ŕéàđéŕ çàñ ţéļļ ŵĥîçĥ ŕüļéš çàḿé ƒŕöḿ à ƒîļé àñđ ŵĥîçĥ
ƒŕöḿ à đéçîšîöñ šöḿéƃöđý ţööķ. Ŵĥàţ ţĥé ƒîļé ĥéļđ ţŕàṽéļš îñ ţĥé ļöĝ àš ŵéļļ:
éàçĥ ƒîļé îš ŕéàđ àš öñé þŕöĵéçţöŕ ƃàţçĥ, ŕéçöŕđéđ àš öñé šţöŕé öþéŕàţîöñ þéŕ
šţöŕé îţ ŕéàçĥéš, ŵîţĥ ţĥé þàŕšéđ çöñçéþţš, éñţŕîéš öŕ þŕöƒîļé îñ à ƃļöƃ ŵĥéñ
ţĥéý àŕé ļàŕĝé. À šéçöñđ ḿàçĥîñé ŕéþļàýîñĝ ţĥé ļöĝ ţĥéŕéƒöŕé ĝéţš ţĥé îḿþöŕţéđ
çöñţéñţ, àñđ ñééđš ñéîţĥéŕ ţĥé ƒîļé ñöŕ îţš ƃýţéš.
À þéŕšöñ ŕüñš îţ. Ţĥé þöļîçý ƒüñçţîöñ ƃéļöŵ ŕéƒüšéš àñ àĝéñţ'š îḿþöŕţ, ñàḿîñĝ
ţĥé çöḿḿàñđ ƒöŕ ţĥé þéŕšöñ ţö ŕüñ, ƃéçàüšé ŕéàđîñĝ à çĥéçķöüţ'š ƒîļéš þüţš ţĥéḿ
îñ ƒöŕçé ƒöŕ éṽéŕýöñé ŵöŕķîñĝ îñ ţĥé þŕöĵéçţ. kapi voice edit ŕéçöŕđš öñé
edit öþéŕàţîöñ ŵĥöšé ñöţé šàýš ţĥé þŕöƒîļé ŵàš éđîţéđ ŵĥöļé.
Ţĥé šķîþ šţàḿþš ļîṽé îñ ţĥé ŵöŕķšþàçé, ķéýéđ ƃý ţĥé ñöŕḿàļîžéđ çĥéçķöüţ þàţĥ àñđ
ţĥé ƒîļé'š þŕöĵéçţ-ŕéļàţîṽé þàţĥ, šö ţŵö çĥéçķöüţš öƒ öñé þŕöĵéçţ ñéṽéŕ šķîþ
éàçĥ öţĥéŕ'š ƒîļéš àñđ à šéçöñđ îḿþöŕţ öƒ üñḿöṽéđ ƃýţéš ŕéþöŕţš ţĥàţ îţ ŕéàđ
ñöţĥîñĝ. --force ŕéàđš ŕéĝàŕđļéšš.
host.ContextFilesUnread đéţéçţš à çĥéçķöüţ ŵîţĥ çöñţéẋţ ƒîļéš àñđ àñ éḿþţý
þŕöĵéçţ çöñţéẋţ šţöŕé. Îţ çĥéçķš ƒîļé ḿéţàđàţà àñđ ŵĥéţĥéŕ ţĥé šţöŕé çöñţàîñš
àñý çöñçéþţ, ḿéḿöŕý éñţŕý, ṽöîçé þŕöƒîļé öŕ đéçîšîöñ, ŵîţĥöüţ ŕéàđîñĝ ţĥé
çöñţéẋţ ƒîļéš. Îţ ŕéţüŕñš ţĥé ƒîļé ļîšţ àñđ îḿþöŕţ çöḿḿàñđ.
Éṽéŕý šüŕƒàçé üšéš ţĥîš ŕéšüļţ (Š-02,
Š-03). kapi check ŕéþöŕţš îţ àš à
çöñƒîĝüŕàţîöñ ŵàŕñîñĝ ţĥàţ àƒƒéçţš ñéîţĥéŕ šçöŕéš ñöŕ ṽéŕđîçţš.
Šçöþé îš šéţ ƃý éṽîđéñçé, àñđ ŵîđéñéđ đéļîƃéŕàţéļý
Àñ öþéŕàţîöñ îš šçöþéđ ţö ţĥé þöîñţ îţš éṽîđéñçé ŵàš šééñ àţ: ţĥé çööŕđîñàţéš
ResolveGovernanceFor ŕéšöļṽéš ƒöŕ ţĥé ƒîļé îţ ŵàš šééñ îñ
(Ç-02), ŵĥîçĥ ƒöŕ à ñéŵ þŕöĵéçţ ŵîţĥ ñö
đéçļàŕéđ àẋéš îš ţĥàţ þŕöĵéçţ. À ŕüļé àñšŵéŕš ŵĥéŕé îţš šçöþé çöṽéŕš ţĥé þöîñţ
ƃéîñĝ çĥéçķéđ, šö à ŕüļé šééñ îñ öñé þŕöđüçţ'š ŕéƒéŕéñçé þàĝéš šàýš ñöţĥîñĝ
àƃöüţ àñöţĥéŕ þŕöđüçţ'š ţüţöŕîàļš.
À ŕüļé ļàñđš îñ ţĥé ţéŕḿš šţöŕé àţ îţš þöîñţ ţöö. Ķééþîñĝ öŕ šéţţļîñĝ à ŕüļé
ŵĥöšé éṽîđéñçé ŵàš šééñ ŵĥéŕé à þŕöƒîļé ĝöṽéŕñš ŵŕîţéš îţš çöñçéþţ ŵîţĥ ţĥàţ
þŕöƒîļé îñ terms.PropProfile àñđ ţĥé þöîñţ'š çööŕđîñàţéš îñ
terms.PropCoordinates (channel=app,product=quickcast). kapi store import
šçöþéš ţĥé ŵöŕđ ŕüļéš îñ à þŕöƒîļé'š öŵñ ṽöîçé öŕ ţéŕḿš ƒîļé üñđéŕ
.kapi/profiles/<name>/ ţö ţĥàţ þŕöƒîļé. Ƃöţĥ ŵŕîţéš ĝö ţĥŕöüĝĥ ţĥé þŕöĵéçţöŕ
ļîķé éṽéŕý öţĥéŕ šţöŕé ŵŕîţé. projectConcepts ķééþš, àţ à þöîñţ, ţĥé çöñçéþţš
ţĥàţ ĥöļđ ţĥéŕé (terms.AtPoint): šçöþéđ ţö ñö þŕöƒîļé öŕ ţö ţĥé þŕöƒîļé
ĝöṽéŕñîñĝ ţĥéŕé, àñđ ţö ñö çööŕđîñàţéš öŕ ţö çööŕđîñàţéš ţĥé þöîñţ šîţš àţ. À
ŕüļé ķéþţ ƒŕöḿ àñ àþþ'š šţŕîñĝš ţĥéŕéƒöŕé šàýš ñöţĥîñĝ àƃöüţ ţĥé šàḿé
þŕöđüçţ'š đöçüḿéñţàţîöñ, àñđ çĥéçķš, ŕéţŕîéṽàļ àñđ ţĥé ţŕàñšļàţîöñ ţööļš àļļ
ŕéàđ ţĥé šàḿé ƒîļţéŕ. Ţĥé þŕöĵéçţ-ŵîđé àñšŵéŕ, àšķéđ ŵîţĥ ñö þöîñţ, ļîšţš éṽéŕý
çöñçéþţ.
Àñ àñšŵéŕ ƒöŕ à þöîñţ ñàḿéš ţĥé ŕüļéš ĥéļđ àţ ţĥé þŕöĵéçţ'š öţĥéŕ þļàçéš àñđ ñöţ ţĥéŕé, àš ţĥé ŵöŕđîñĝ ţĥàţ šţàýš çöŕŕéçţ (Ç-06). Ŵîţĥöüţ ţĥàţ ļîñé àñ àĝéñţ ţöļđ ţö ŕéñàḿé šöḿéţĥîñĝ éṽéŕýŵĥéŕé ŕéñàḿéš îţ àţ à þöîñţ ţĥé ŕüļé ñéṽéŕ ŕéàçĥéđ, àñđ îţš ñöţé öƒ ţĥé ŕéñàḿé ţĥéŕé ŵöüļđ ţĥéñ ƃé à šüĝĝéšţîöñ àţ ţĥàţ þöîñţ ţöö.
Ķééþîñĝ îš àļšö ţĥé ḿöḿéñţ à þéŕšöñ ḿàý ŵîđéñ, ŵîţĥ
kapi context review --keep <id> --widen-to <where>; ţĥé šàḿé ƒļàĝš öñ à ŕüļé
àļŕéàđý îñ ƒöŕçé ŕéçöŕđ à widen. Ţĥé šţéþš ñéšţ:
--widen-to | Ŵĥàţ ţĥé ŕüļé'š šçöþé đŕöþš | Ŵĥéŕé îţ ţĥéñ ĥöļđš |
|---|---|---|
àñ àẋîš, šüçĥ àš channel | ţĥàţ àẋîš; product đŕöþš ţĥé þŕöƒîļé ţöö | éṽéŕý ṽàļüé öƒ ţĥé àẋîš, àţ ţĥé ŕéšţ öƒ ţĥé þöîñţ |
project | ţĥé þŕöƒîļé àñđ ţĥé àẋéš îţ đéŕîṽéš (product, channel) | éṽéŕý þöîñţ öƒ ţĥé þŕöĵéçţ |
workspace | ţĥé þŕöƒîļé, îţš àẋéš àñđ ţĥé þŕöĵéçţ | éṽéŕý þŕöĵéçţ öƒ ţĥé ŵöŕķšþàçé |
Àñ àẋîš ñö þŕöƒîļé đéŕîṽéš, šüçĥ àš à ƃŕàñđ ţĥé ŕéçîþé đéçļàŕéš, šţàýš ţĥŕöüĝĥ
project àñđ workspace, šö à ŕüļé ŵîđéñéđ ƒŕöḿ öñé ƃŕàñđ'š þŕöĵéçţ ĥöļđš
ŵĥéŕéṽéŕ ţĥàţ ƃŕàñđ đöéš. Ŵîđéñîñĝ ḿöṽéš ţĥé ŕüļé'š çöñçéþţ ŵîţĥ îţ: ţĥé
çöñçéþţ à ķééþ ŵŕöţé îš ŕéšçöþéđ ţö ţĥé ŵîđéŕ þöîñţ îñ ţĥé šàḿé ŵŕîţé.
Ŵöŕķšþàçé-ŵîđé ŕüļéš üšé workspace.Rule ŕöŵš îñ workspace.db. Éàçĥ ŕöŵ
çöñţàîñš àñ îđ, ķîñđ, šöüŕçé þŕöĵéçţ àñđ öþàǫüé ĴŠÖÑ þàýļöàđ. Ţĥîš ķééþš
ŵöŕķšþàçé šţöŕàĝé îñđéþéñđéñţ öƒ ţĥé ŕüļé ţýþé. Þŕöĵéçţ-šþéçîƒîç ţéŕḿš ţàķé
þŕéçéđéñçé öṽéŕ ŵöŕķšþàçé ŕüļéš ƒöŕ ţĥé šàḿé ţéŕḿ, àñđ kapi context search
ŕéþöŕţš à ŵöŕķšþàçé ŕüļé ƃéšîđé ţĥé þŕöĵéçţ'š ţéŕḿš, ḿàŕķéđ àš ĥöļđîñĝ àçŕöšš
ţĥé ŵöŕķšþàçé.
À ŵîđéñéđ ŕüļé îš ŵŕîţţéñ ţĥŕöüĝĥ ţĥé þŕöĵéçţöŕ àš à rules.write öþéŕàţîöñ
ŕéçöŕđéđ üñđéŕ ţĥé þŕöĵéçţ ţĥàţ đéçîđéđ îţ, šö îţ ţŕàṽéļš ļîķé éṽéŕý öţĥéŕ
öþéŕàţîöñ öƒ ţĥé þŕöĵéçţ: à þüšĥ çàŕŕîéš îţ, à þüļļ öŕ àñ îḿþöŕţ àþþļîéš îţ ţö
ţĥé ŕéçéîṽîñĝ ḿàçĥîñé'š ŵöŕķšþàçé, àñđ à çĥéçķþöîñţ ĥöļđš ţĥé þŕöĵéçţ'š ŵîđéñéđ
ŕüļéš. Ñàŕŕöŵîñĝ îţ, ƃý đŕöþþîñĝ ţĥé ŕüļé öŕ çöñţéšţîñĝ îţ, ţŕàṽéļš ţĥé šàḿé
ŵàý.
Çöṽéŕàĝé ŕéàđš ţĥé þŕöĵéçţ'š ţýþéđ àẋéš
À ŕüļé àþþļîéš àţ à þöîñţ ŵĥéñ îţš šçöþé çöṽéŕš ţĥé þöîñţ. Ţĥé þŕöĵéçţ'š
axes: ƃļöçķ đéƒîñéš çöṽéŕàĝé öñ éàçĥ àẋîš
(Ç-02).
Scope.CoversIn(space, point) îš ţŕüé ŵĥéñ, ƒöŕ éṽéŕý àẋîš ţĥé šçöþé ñàḿéš,
ţĥé þöîñţ'š ṽàļüé šîţš ŵîţĥîñ ţĥé šçöþé'š ṽàļüé (axis.Space.Contains). À ŕüļé
šçöþéđ ţö market: nordics àþþļîéš àţ market: no àñđ ñöţ àţ market: de. À
ŕüļé šçöþéđ ţö age: 13-17 àþþļîéš àţ 14-16 àñđ ñöţ àţ 18-. Öñ à ĝéö àẋîš
ţĥé çöḿþàŕîšöñ üšéš ţĥé þŕöĵéçţ'š ĝàžéţţééŕ (Ç-12), šö à ŕüļé
àţ market: no àþþļîéš àţ market: oslo ŵĥéñ ţĥé ŕéçîþé đéçļàŕéš Öšļö ŵîţĥîñ
ţĥé çöüñţý no-03. Àñ àẋîš ţĥé šþàçé đöéš ñöţ ţýþé çöḿþàŕéš ƃý éǫüàļîţý, àñđ
Scope.Covers(point) îš CoversIn(nil, point). ResolveRequest.Space þàššéš
ţĥé šþàçé ţö Resolve. Éṽéŕý ĥöšţ ƒîļţéŕ àţ à þöîñţ üšéš ţĥé šàḿé šþàçé: ţĥé
çĥéçķ'š šüĝĝéšţéđ àñđ ƃîñđîñĝ ŕüļéš, ţĥé ƃý-ļöçàţîöñ àñšŵéŕ'š ñöţéš, ţĥé üšàĝé
çöüñţš àñđ ḿéŕĝé šîĝñàļš üšéđ îñ šéţţļîñĝ, àñđ ţĥé ţéŕḿš šţöŕé'š çöñçéþţš
(terms.AtPointIn, ţĥŕöüĝĥ StoreSelection.Holding).
Ţĥé ƒöļđ àļšö üšéš éàçĥ þŕöĵéçţ'š šþàçé. Ledger.WithAxes šüþþļîéš à ƒüñçţîöñ
ƒŕöḿ à þŕöĵéçţ ţö îţš àẋîš šþàçé. Ţĥé ƒöļđ šţàḿþš éṽéŕý ŕéçöŕđ ŵîţĥ îţš
þŕöĵéçţ'š šþàçé ƃéƒöŕé šéţţļîñĝ àñđ çöñţéšţ đéţéçţîöñ çöḿþàŕé šçöþéš. Ţŵö
ŕüļéš öƒ öñé þŕöĵéçţ öṽéŕļàþ ŵĥéŕé ţĥéîŕ ṽàļüéš öñ éṽéŕý šĥàŕéđ àẋîš öṽéŕļàþ
(axis.Space.Overlaps). À šüĝĝéšţîöñ àţ market: nordics öṽéŕļàþš öñé àţ
market: no. À šüĝĝéšţîöñ àţ market: greater-oslo öṽéŕļàþš öñé àţ
market: oslo, àñđ age: 13-17 öṽéŕļàþš age: 16-20. À çöŕŕéçţîöñ ŕéçöŕđéđ
àţ market: no çöüñţš ƒöŕ à šüĝĝéšţîöñ šçöþéđ ţö ţĥé Ñöŕđîçš (seenWithin
çàļļš CoversIn). Ŕüļéš öƒ ţŵö þŕöĵéçţš çàñ öṽéŕļàþ öñļý ŵĥéñ öñé îš ŵîđéñéđ
ţö ţĥé ŵöŕķšþàçé, àñđ ţĥéý çöḿþàŕé ƃý éǫüàļîţý.
Ţĥé ĥöšţ ƃüîļđš éṽéŕý ļéđĝéŕ ţĥŕöüĝĥ öñé ĥéļþéŕ (App.contextLedger). Îţ
ţýþéš à þŕöĵéçţ'š àẋéš ƒŕöḿ ţĥé ŕéçîþé öƒ à çĥéçķöüţ ţĥàţ ţĥé ŵöŕķšþàçé
ŕéĝîšţŕý ļîšţš ƒöŕ ţĥé þŕöĵéçţ öñ ţĥîš ḿàçĥîñé, àñđ çàçĥéš ţĥé ŕéšüļţ ƃý ţĥé
ŕéçîþé'š ḿöđîƒîçàţîöñ ţîḿé. Ŕéçöŕđîñĝ àñ öþéŕàţîöñ ƒŕöḿ à çĥéçķöüţ ŕéĝîšţéŕš
ţĥàţ çĥéçķöüţ. Éṽéŕý ļàţéŕ ŕéàđéŕ öƒ à þŕöĵéçţ ŕéçöŕđéđ öñ ţĥîš ḿàçĥîñé
ţĥéŕéƒöŕé üšéš îţš ţýþéđ àẋéš, àñđ ţĥé đîĝéšţ, ţĥé ļöĝ, ţĥé çĥéçķ àñđ ţĥé àţļàš
ƒöļđ ţĥé ļöĝ îñ ţĥé šàḿé ŵàý. Ƒöŕ à þŕöĵéçţ ŵîţĥ ñö çĥéçķöüţ öñ ţĥîš ḿàçĥîñé,
çööŕđîñàţéš çöḿþàŕé ƃý éǫüàļîţý.
À šüƃḿîššîöñ ḿàý ñàŕŕöŵ îţš þöîñţ
À ñöţé, à çöŕŕéçţîöñ àñđ à šüĝĝéšţéđ ŕüļé ţàķé ţĥé þöîñţ ţĥàţ ţĥéîŕ éṽîđéñçé
ŕéšöļṽéš ţö (basisAt). À šüƃḿîššîöñ ḿàý àļšö ĝîṽé à þöîñţ éẋþļîçîţļý:
kapi context note --point axis=value (ŕéþéàţàƃļé), point öñ ḾÇÞ
context_note, àñđ ContextObserveRequest.Point àñđ
ContextCorrectRequest.Point îñ ţĥé ĥöšţ. Ţĥé éẋþļîçîţ þöîñţ çàñ öñļý ñàŕŕöŵ
ţĥé éṽîđéñçé'š þöîñţ. Ƒöŕ éàçĥ àẋîš îţ ñàḿéš (narrowScope):
- ţĥé ṽàļüé ḿüšţ ƃé ļéĝàļ ƒöŕ ţĥé àẋîš àš ţĥé ŕéçîþé ţýþéš îţ;
- ŵĥéŕé ţĥé éṽîđéñçé'š þöîñţ àļŕéàđý šéţš ţĥé àẋîš, ţĥé ñéŵ ṽàļüé ḿüšţ šîţ
ŵîţĥîñ ţĥàţ ṽàļüé. Éṽîđéñçé ƒŕöḿ ţĥé Ñöŕđîç þàĝéš çàñ ñàŕŕöŵ à ñöţé ţö
market: no, àñđ çàññöţ ḿöṽé îţ ţömarket: deöŕ ŵîđéñ îţ ţöeurope; - ŵĥéŕé ţĥé éṽîđéñçé'š þöîñţ đöéš ñöţ šéţ ţĥé àẋîš, ţĥé àẋîš îš àđđéđ;
productàñđchannelàŕé ŕéĵéçţéđ, ƃéçàüšé ţĥéý çöḿé ƒŕöḿ ţĥé ƒîļé ţĥé éṽîđéñçé îš îñ. Ţĥé éŕŕöŕ ñàḿéš ţĥàţ ƒîļé àš ţĥé ŵàý ţö šéţ ţĥéḿ.
Öñļý à þéŕšöñ çàñ ŵîđéñ à ŕüļé, îñ ŕéṽîéŵ (--widen-to). Ţĥé éŕŕöŕ ƒöŕ à
ŵîđéñîñĝ þöîñţ ñàḿéš ţĥàţ çöḿḿàñđ.
À ŕüļé ĥöļđš ƒöŕ à ŵîñđöŵ öƒ ţîḿé
Scope çàŕŕîéš à ļîƒéţîḿé ŵîñđöŵ, ValidFrom (îñçļüšîṽé) àñđ ValidTo
(éẋçļüšîṽé), ţĥé ĥàļƒ-öþéñ ḿöđéļ ţĥàţ þŕöƒîļéš, ţéŕḿš àñđ ĝŕàþĥ éđĝéš üšé.
Éàçĥ ƃöüñđ îš à ƃàŕé đàţé öŕ àñ ŔƑÇ3339 îñšţàñţ, þàŕšéđ ļîķé à þŕöƒîļé'š ŵîñđöŵ
(project.ParseValidityBound), šö à valid_to đàţé éẋçļüđéš ţĥàţ ŵĥöļé đàý. À
ŵîñđöŵ îš šéţ ŵĥéñ à ŕüļé îš ŕéçöŕđéđ (--valid-from àñđ --valid-to öñ
kapi context note, valid_from àñđ valid_to öñ ḾÇÞ context_note) öŕ ŵĥéñ
à þéŕšöñ ķééþš îţ (kapi context review --keep <id> --valid-from/--valid-to,
ContextKeepRequest). Îñ ţĥé ƒöļđ, à ķééþ ŵîţĥ à ŵîñđöŵ ŕéþļàçéš ţĥé ŕüļé'š
ŵîñđöŵ, îñ ţĥé šàḿé ŵàý ţĥàţ à ķééþ ŵîţĥ à šçöþé ŕéþļàçéš îţš šçöþé.
Scope.InForce(at) ŕéþöŕţš ŵĥéţĥéŕ ţĥé ŵîñđöŵ îñçļüđéš àñ îñšţàñţ.
ResolveRequest.At îš ţĥé îñšţàñţ à ŕéšöļüţîöñ îš çöḿþüţéđ ƒöŕ. À ŕüļé öüţšîđé
îţš ŵîñđöŵ đöéš ñöţ àþþļý, îñ ţĥé šàḿé ŵàý ţĥàţ à þŕöƒîļé öüţšîđé îţš ŵîñđöŵ
đöéš ñöţ ĝöṽéŕñ (Ç-02).
À çĥéçķ ŕéšöļṽéš àţ ţĥé ŕüñ'š ĝöṽéŕñàñçé îñšţàñţ (App.GovernanceInstant).
Ţĥé žéŕö îñšţàñţ îš ţĥé àš-đéçļàŕéđ ṽîéŵ, îñ ŵĥîçĥ éṽéŕý ŵîñđöŵ ĥöļđš. Ķééþîñĝ
à ŕüļé ŵîţĥ à ŵîñđöŵ ŵŕîţéš ţĥé ŵîñđöŵ öñţö ţĥé ŕéšüļţîñĝ ţéŕḿ (terms.Term'š
Validity). terms.InForceAt đŕöþš à ţéŕḿ öüţšîđé îţš ŵîñđöŵ àţ ţĥé þöîñţ'š
îñšţàñţ, šö à çĥéçķ, ţĥé ƃý-ļöçàţîöñ àñšŵéŕ àñđ đŕàƒţîñĝ àļļ šţöþ üšîñĝ ţĥé
ŕüļé àţ ţĥé šàḿé ḿöḿéñţ.
À ŵîñđöŵ đéšçŕîƃéš ţĥé ŕüļé. Îţ ñéṽéŕ đéšçŕîƃéš ţĥé öþéŕàţîöñ. Ñö àĝéñţ
šüŕƒàçé àççéþţš à ŕéçöŕđéđ ţîḿé: ţĥé ļöĝ'š çļöçķ šţàḿþš At öñ éṽéŕý
öþéŕàţîöñ, àñđ à ŵîñđöŵ öñļý šţàţéš ŵĥéñ ţĥé ŕéçöŕđéđ ŕüļé ĥöļđš.
Ţĥé ļöĝ çàñ ƃé ŕéàđ àš öƒ àñ îñšţàñţ
Ledger.RecordsAsOf(ctx, at, f) ƒöļđš öñļý ţĥé öþéŕàţîöñš ţĥé ļöĝ àççéþţéđ àţ
öŕ ƃéƒöŕé at (Record.At), îñ îđ öŕđéŕ, ŵîţĥ workspace.SetAside çöḿþüţéđ
öṽéŕ ţĥàţ þŕéƒîẋ, àñđ ŕéţüŕñš ţĥé ŕéçöŕđš ţĥé ƒîļţéŕ ḿàţçĥéš. À ķééþ ŕéçöŕđéđ
àƒţéŕ ţĥé îñšţàñţ îš éẋçļüđéđ, àñđ à ŕéšéţ àƒţéŕ îţ šéţš ñöţĥîñĝ àšîđé, šö ţĥé
ƒöļđ ŕéţüŕñš ţĥé šţàţüš éàçĥ šüƃĵéçţ ĥàđ àţ ţĥàţ îñšţàñţ. Ţĥé îñšţàñţ îš à
ļéđĝéŕ àŕĝüḿéñţ ŕàţĥéŕ ţĥàñ à Filter ƒîéļđ ƃéçàüšé îţ çĥàñĝéš ŵĥîçĥ
öþéŕàţîöñš àŕé ƒöļđéđ. À ƒîļţéŕ öñļý ñàŕŕöŵš ŵĥàţ à ƒöļđ ŕéţüŕñš.
Ledger.Histories(ctx, f, limit) ŕéàđš ţĥé ļöĝ öñçé àñđ ƒöļđš îţ àš öƒ éṽéŕý
đîšţîñçţ îñšţàñţ àţ ŵĥîçĥ ţĥé ļöĝ àççéþţéđ àñ öþéŕàţîöñ öƒ ţĥé ƒîļţéŕéđ
þŕöĵéçţ. Ƒöŕ éàçĥ öþéŕàţîöñ ţĥàţ ĥàš à šüƃĵéçţ, îţ ŕéþöŕţš ţĥé îñîţîàļ šţàţüš
àñđ éṽéŕý ļàţéŕ çĥàñĝé, éàçĥ àţ ţĥé îñšţàñţ öƒ ţĥé öþéŕàţîöñ ţĥàţ ḿàđé îţ.
Ķééþš, đŕöþš, çöñţéšţš, šéţţļîñĝ àñđ ŕéšéţš àŕé àļļ îñçļüđéđ. Ţĥé çöšţ ĝŕöŵš
ŵîţĥ ţĥé šǫüàŕé öƒ ţĥé ļöĝ ļéñĝţĥ, šö îţ îš ƃöüñđéđ. Þàšţ limit îñšţàñţš
(HistoryLimit, 500, ŵĥéñ ñöñé îš ĝîṽéñ), éàçĥ šüƃĵéçţ ŕéþöŕţš öñļý îţš ƒîŕšţ
àñđ çüŕŕéñţ šţàţüš, àñđ ţĥé ŕéšüļţ ḿàŕķš ţĥé ĥîšţöŕý àš îñçöḿþļéţé.
Ţĥé àţļàš ŕéàđš ţĥé ŵĥöļé çöñţéẋţ àţ öñçé
host.App.ContextAtlas (kapi context atlas, ţĥé đéšķţöþ'š Éẋþļöŕé ṽîéŵ)
ŕéţüŕñš à þŕöĵéçţ'š ŵĥöļé çöñţéẋţ îñ öñé đöçüḿéñţ. Îţ çöñţàîñš éàçĥ ŕüļé, ñöţé
àñđ çöñţéñţ-ḿéḿöŕý þàîŕ ţĥé ļöĝ ŕéçöŕđš, ŵîţĥ îţš ĥîšţöŕý ƒŕöḿ
Ledger.Histories, àñđ éàçĥ çöñçéþţ îñ ţĥé ţéŕḿš šţöŕé. Öñ ŕéǫüéšţ îţ àļšö
çöñţàîñš çöñţéñţ çéļļš ţĥàţ çöüñţ ţĥé þŕöĵéçţ'š üñîţš ƃý çöļļéçţîöñ, ļàñĝüàĝé
àñđ šţàţé. Éṽéŕý ŕéçöŕđ ĥàš ţĥé çööŕđîñàţéš öƒ îţš þöîñţ àñđ ţĥé đéŕîṽéđ àẋéš:
ƒàḿîļý, àçţöŕ, ļöçàļé, ŕéĝîöñ, àñđ ţĥé þŕöĵéçţ ŵĥéñ ţĥé àţļàš çöṽéŕš éṽéŕý
þŕöĵéçţ. Éṽéŕý öþéŕàţîöñ îš àñ éṽéñţ öñ ţĥé ŕéçöŕđéđ çļöçķ, àñđ ŵîñđöŵ
ƃöüñđàŕîéš àŕé éṽéñţš öñ ţĥé 郃éçţîṽé çļöçķ. Ţĥé àţļàš àļšö îñçļüđéš ţĥé
þļàçéš îţš ĝéö ṽàļüéš ñàḿé àñđ ţĥé þļàçéš ţĥàţ çöñţàîñ ţĥéḿ, šö à ḿàþ çàñ đŕàŵ
àñđ ƒîļţéŕ ţĥéḿ ƃý ţĥé ĝàžéţţééŕ'š ŕüļéš. Ţĥé đöçüḿéñţ îš à çöñţŕàçţ ŵîţĥ ţĥé
ṽîéŵš ţĥàţ đŕàŵ îţ, šþéçîƒîéđ îñ
Çöñţéẋţ àţļàš.
Öñé þöļîçý ƒüñçţîöñ
type Transition struct {
Actor Actor
Kind Kind
Subject SubjectKind
Target Record
Targeted bool
Widening bool
Editing bool
}
type Policy func(Transition) error
PersonDecides îš ŵĥàţ šĥîþš. Àñ àĝéñţ öŕ à ţööļ ḿàý öƃšéŕṽé àñđ ŕéçöŕđ à
çöŕŕéçţîöñ, àñđ éàçĥ ţàķéš éƒƒéçţ àš à šüĝĝéšţîöñ. À ţööļ ŕéçöŕđš éṽîđéñçé àñđ
ţĥé éšţàƃļîšĥḿéñţš šéţţļîñĝ đéŕîṽéš ƒŕöḿ îţ; àñ àĝéñţ ḿàý ŕéçöŕđ ñéîţĥéŕ,
ƃéçàüšé àñ àĝéñţ'š šţàţéḿéñţ îš à šüĝĝéšţîöñ àñđ ñéṽéŕ éṽîđéñçé ƒöŕ öñé. Ţĥé àüţĥöŕ öƒ à šüĝĝéšţîöñ
ḿàý ŵîţĥđŕàŵ îţ îñ ţĥé šéššîöñ ţĥàţ ŕéçöŕđéđ îţ, ŵĥîçĥ îš ĥöŵ à šéššîöñ çļéàñš
üþ àƒţéŕ îţšéļƒ. Éṽéŕýţĥîñĝ ţĥàţ ţüŕñš àđṽîçé îñţö à ŕüļé, öŕ šéţš àñöţĥéŕ
àçţöŕ'š àđṽîçé àšîđé, ƃéļöñĝš ţö à þéŕšöñ: ķééþîñĝ, éđîţîñĝ ŵĥàţ àñöţĥéŕ àçţöŕ
šüĝĝéšţéđ, îḿþöŕţîñĝ, ŵŕîţîñĝ à ŕüļé đîŕéçţļý, đŕöþþîñĝ à šüĝĝéšţîöñ öŕ à ŕüļé,
ŵîđéñîñĝ, àñđ ŕéšéţţîñĝ.
drop àñđ withdraw ƃöţĥ šéţ šöḿéţĥîñĝ àšîđé, ŵîţĥ đéŕéñţ þéŕḿîššîöñš. À
þéŕšöñ đŕöþš à šüĝĝéšţîöñ öŕ à ŕüļé îñ ƒöŕçé, àñđ à đŕöþþéđ ŕüļé ļéàṽéš ţĥé
šţöŕéš. Îţš àüţĥöŕ ŵîţĥđŕàŵš à šüĝĝéšţîöñ, àñđ öñļý ŵĥîļé îţ îš šţîļļ öñé.
Ŵîđéñîñĝ îš à þŕöþéŕţý öƒ ţĥé ţŕàñšîţîöñ ŕàţĥéŕ ţĥàñ öƒ ţĥé ṽéŕƃ, šö ţĥé çĥéçķ
çöṽéŕš éṽéŕý ŕöüţé ţö îţ. Ledger.Append ŕàîšéš Widening ƒöŕ à widen àñđ
éǫüàļļý ƒöŕ à keep ţĥàţ ñàḿéš ţĥé ŵöŕķšþàçé, àñđ à Widening ţŕàñšîţîöñ îš
ŕéƒüšéđ ƒöŕ àñý àçţöŕ ƃüţ à þéŕšöñ. Ţŵö šéššîöñš öƒ öñé àĝéñţ çöüñţ àš ţŵö
þàŕţîéš, šö àñ àĝéñţ àçţš öñ îţš öŵñ šüĝĝéšţîöñ àñđ öñ ñöƃöđý éļšé'š.
Éṽéŕý ŵŕîţéŕ ĝöéš ţĥŕöüĝĥ îţ: kapi context, kapi apply, ţĥé àĝéñţ ţööļš, ţĥé
đéšķţöþ ƒééđ. Àĝéñţ ŕöļéš ŵîţĥ ŵîđéŕ ŕîĝĥţš àŕé à çĥàñĝé ţö ţĥîš ƒüñçţîöñ ŕàţĥéŕ
ţĥàñ ţö éàçĥ çàļļ šîţé.
À ŕéšéţ ĝöéš ƃàçķ ţö àñ éàŕļîéŕ þöîñţ
host.App.ResetContext (kapi context reset --before <point>) ŕéŵîñđš à
þŕöĵéçţ'š çöñţéẋţ ţö ĥöŵ îţ šţööđ àţ à þöîñţ îñ îţš ĥîšţöŕý: ƃéƒöŕé àñ àĝéñţ
šéššîöñ'š ƒîŕšţ öþéŕàţîöñ, ƃéƒöŕé à đàţé öŕ àñ îñšţàñţ, öŕ ƃéƒöŕé öñé
öþéŕàţîöñ, ñàḿéđ ƃý îđ öŕ ƃý àñ üñàḿƃîĝüöüš šţàŕţ öƒ öñé. Ţĥé ŕéǫüéšţ ŕéšöļṽéš
ţö ţĥé ƒîŕšţ öþéŕàţîöñ šéţ àšîđé, àñđ ţĥé reset öþéŕàţîöñ ŕéçöŕđš îţ îñ
Before. ContextResetScope àñšŵéŕš ţĥé šàḿé ŕéǫüéšţ ŵîţĥöüţ ŕéçöŕđîñĝ
àñýţĥîñĝ, ŵĥîçĥ îš --dry-run.
workspace.SetAside đéçîđéš ŵĥàţ à ŕéšéţ šéţš àšîđé, àñđ ƃöţĥ ŕéàđéŕš öƒ ţĥé
ļöĝ çàļļ îţ, šö ţĥéý àĝŕéé. Îţ ŕéàđš à þŕöĵéçţ'š öþéŕàţîöñš ñéŵéšţ ƒîŕšţ, îñ îđ
öŕđéŕ. À ŕéšéţ šţîļļ îñ ƒöŕçé šéţš àšîđé éṽéŕý öþéŕàţîöñ öƒ à çöñţéẋţ ķîñđ îñ
îţš þŕöĵéçţ ƒŕöḿ ţĥé öþéŕàţîöñ îţ ñàḿéš üþ ţö îţšéļƒ: ţĥé context.*
öþéŕàţîöñš, àñđ ţĥé terms.write, memory.write, voice.write àñđ
rules.write öþéŕàţîöñš ţĥàţ ƒîļļ ţĥé šţöŕéš. Ŕéàđîñĝ ŕéšüḿéš ƃéļöŵ ţĥàţ
þöîñţ, šö à ŕéšéţ îñšîđé ţĥé ŕàñĝé à ļàţéŕ ŕéšéţ çöṽéŕš îš îţšéļƒ šéţ àšîđé
àñđ ĥàš ñö 郃éçţ. À đöçüḿéñţ'š éđîţš, àđöþţîöñš àñđ ŕéṽîéŵ đéçîšîöñš àŕé ţĥé
þŕöĵéçţ'š çöñţéñţ, àñđ à ŕéšéţ ļéàṽéš ţĥéḿ àļöñé.
Ŵĥàţ à ŕéšéţ šéţš àšîđé šţàýš îñ ţĥé ļöĝ:
- Ţĥé ļéđĝéŕ ƒöļđš éṽéŕý šéţ-àšîđé ŕéçöŕđ ţö šţàţüš
reset. Îţ šţöþš àñšŵéŕîñĝ, àñđkapi context log --status resetļîšţš îţ. - À þŕöĵéçţöŕ ŕéƃüîļđ šķîþš ţĥé šéţ-àšîđé öþéŕàţîöñš, šö ţĥé šţöŕéš šţàñđ àš
ţĥéý đîđ ƃéƒöŕé ţĥé þöîñţ.
ResetContextŕüñš ţĥàţ ŕéƃüîļđ öñçé ţĥé ŕéšéţ îš ŕéçöŕđéđ. - À ŕéƃüîļđ šţàŕţš ƒŕöḿ ñö çĥéçķþöîñţ ţĥàţ à ŕéšéţ ŵàš ŕéçéîṽéđ àƒţéŕ, ƃéçàüšé ţĥé ŕéšéţ çĥàñĝéš ŵĥàţ ţĥé öþéŕàţîöñš ƃéƒöŕé îţ àþþļý. Îţ šţàŕţš ƒŕöḿ àñ öļđéŕ çĥéçķþöîñţ, öŕ ƒŕöḿ àñ éḿþţý šţöŕé.
- À çàţçĥ-üþ ţĥàţ ḿééţš à ŕéšéţ, öŕ àñ öþéŕàţîöñ ţĥàţ šöŕţš ƃéƒöŕé à ŕéšéţ ţĥé ļöĝ àļŕéàđý ĥöļđš, ŕéƃüîļđš îñšţéàđ öƒ àþþļýîñĝ öþéŕàţîöñš öñé ƃý öñé. Ţĥîš çöṽéŕš àñ öþéŕàţîöñ ḿéŕĝéđ îñ ƒŕöḿ àñöţĥéŕ ḿàçĥîñé ţĥàţ ƒàļļš îñšîđé ŵĥàţ à ŕéšéţ šéţ àšîđé.
À ŕéšéţ îš îţšéļƒ àñ öþéŕàţîöñ, šö à ļàţéŕ ŕéšéţ ţö ƃéƒöŕé îţ šéţš îţ àšîđé
àñđ ƃŕîñĝš ƃàçķ ŵĥàţ îţ šéţ àšîđé: kapi context reset --before <reset-id>
ţàķéš öñé ƃàçķ. ContextResetResult ŕéþöŕţš ţĥé šüƃĵéçţ-ƃéàŕîñĝ öþéŕàţîöñš šéţ
àšîđé, à çöüñţ öƒ ţĥé đéçîšîöñš šéţ àšîđé ŵîţĥ ţĥéḿ, àñđ ţĥé öñéš àñ éàŕļîéŕ
ŕéšéţ ĥàđ šéţ àšîđé ţĥàţ àñšŵéŕ àĝàîñ.
À ŕéšéţ îš ƒöŕ ĝöîñĝ ƃàçķ ţö à ķñöŵñ ĝööđ šţàţé. À šîñĝļé đéçîšîöñ ĥàš ñö üñđö: çĥàñĝîñĝ ýöüŕ ḿîñđ àƃöüţ à ŕüļé îš à ñéŵ đéçîšîöñ îñ ŕéṽîéŵ.
Ñöţĥîñĝ îš éŕàšéđ. À šéţ-àšîđé öþéŕàţîöñ šţàýš îñ ţĥé ļöĝ ŵîţĥ îţš éṽîđéñçé, šö ţĥé šàḿé šüĝĝéšţîöñ îš ŕéçöĝñîšàƃļé ţĥé ñéẋţ ţîḿé îţ îš ḿàđé.
Çöñšéǫüéñçéš
Àĝéñţš çàñ ŕéçöŕđ šüĝĝéšţîöñš đüŕîñĝ ñöŕḿàļ ŵöŕķ ŵîţĥöüţ àƒƒéçţîñĝ ƃüîļđ ŕéšüļţš. Þéöþļé çàñ ŕéṽîéŵ öþéŕàţîöñš ţöĝéţĥéŕ, ķééþ šüĝĝéšţîöñš ƃý šéššîöñ, àñđ ŕéšéţ ţĥé çöñţéẋţ ţö ƃéƒöŕé à šéššîöñ ŵĥéñ ñéçéššàŕý.
Ţĥé ļöĝ îš ƒöļđéđ öñ éṽéŕý ŕéàđ ŕàţĥéŕ ţĥàñ îñđéẋéđ. Ţĥé ļéđĝéŕ šéļéçţš ţĥé
context.* öþéŕàţîöñš àļöñé (Backend.Select ŵîţĥ à ķîñđ þŕéƒîẋ, àñšŵéŕéđ ƒŕöḿ
àñ îñđéẋ öñ ţĥé ķîñđ), šö ŵĥàţéṽéŕ éļšé šĥàŕéš ţĥé ļöĝ çöšţš à ƒöļđ ñöţĥîñĝ, àñđ
çöñţéšţ đéţéçţîöñ çöḿþàŕéš öñļý ŕüļéš ţĥàţ šĥàŕé à ƒöŕḿ. Ŵîţĥ 13,000 öţĥéŕ
öþéŕàţîöñš àñđ 500 ţö 800 çöñţéẋţ öþéŕàţîöñš îñ ţĥé ļöĝ, šîẋţééñ çöñçüŕŕéñţ
àĝéñţš ŕéçöŕđ àñ öƃšéŕṽàţîöñ ŵîţĥ à þ99 öƒ 32 ḿš. Àñ îḿþļéḿéñţàţîöñ ţĥàţ ñééđš
ḿöŕé àđđš àñ îñđéẋ ƃéĥîñđ Ledger ŵîţĥöüţ ḿöṽîñĝ ţĥé ḿöđéļ.
Öþéŕàţîöñ îđš
Àñ öþéŕàţîöñ îđ (workspace.NewOpID) îš 24 çĥàŕàçţéŕš öƒ ļöŵéŕ-çàšé Çŕöçķƒöŕđ
ƃàšé32: éîĝĥţ ƒöŕ ţĥé ḿöḿéñţ ţĥé ļöĝ àççéþţéđ ţĥé öþéŕàţîöñ, îñ ḿîļļîšéçöñđš
šîñçé ţĥé šţàŕţ öƒ 2026, àñđ šîẋţééñ ŕàñđöḿ öñéš. Ţĥé ţîḿé çöḿéš ƒîŕšţ, šö îđš
šöŕţ îñ ţĥé öŕđéŕ öþéŕàţîöñš ŵéŕé àççéþţéđ, àñđ ţĥé ƒöļđ ŕéàđš ţĥé ļöĝ îñ îđ
öŕđéŕ. À ļöĝ ñéṽéŕ ḿîñţš àñ îđ ţĥàţ šöŕţš ƃéƒöŕé öñé îţ àļŕéàđý ĥöļđš: ŵĥéŕé ţĥé
çļöçķ ĥàš ñöţ ḿöṽéđ þàšţ ţĥé ñéŵéšţ îđ, ţĥé ţîḿé þàŕţ àđṽàñçéš öñé ḿîļļîšéçöñđ
þàšţ îţ, šö àñ öþéŕàţîöñ ŕéçöŕđéđ àƒţéŕ àñöţĥéŕ ŵàš šééñ šöŕţš àƒţéŕ îţ, öñ
ŵĥîçĥéṽéŕ ḿàçĥîñé éîţĥéŕ ŵàš ŕéçöŕđéđ.
Ţĥé îđ îš ţĥé šàḿé îñ éṽéŕý ļöĝ ţĥàţ ĥöļđš ţĥé öþéŕàţîöñ, šö ţŵö ļöĝš ḿéŕĝé ƃý
üñîöñ (workspace.Merge): ŕéçöŕđîñĝ àñ îđ ţĥé ļöĝ àļŕéàđý ĥöļđš çĥàñĝéš
ñöţĥîñĝ, àñđ ţŵö ļöĝš ḿéŕĝéđ îñţö éàçĥ öţĥéŕ ĥöļđ ţĥé šàḿé öþéŕàţîöñš îñ ţĥé
šàḿé öŕđéŕ, ŵĥîçĥéṽéŕ ŵàš ḿéŕĝéđ ƒîŕšţ. Àñ öþéŕàţîöñ ḿàý àļšö çàŕŕý à çöñţéñţ
àđđŕéšš; à ļöĝ ĥöļđš öñé öþéŕàţîöñ þéŕ àđđŕéšš, àñđ ŵĥéŕé ţŵö ḿàçĥîñéš ŕéçöŕđéđ
öñé àđđŕéšš üñđéŕ đéŕéñţ îđš ţĥé öļđéŕ îđ šţàñđš îñ ƃöţĥ. Ţĥé ļöçàļ ƃàçķéñđ
ķééþš à þéŕ-ļöĝ àŕŕîṽàļ þöšîţîöñ ƃéšîđé ţĥé îđ. Îţ îš ŵĥàţ Head ŕéţüŕñš àñđ
ŵĥàţ Since ŕéàđš ƒŕöḿ, šö à šüŕƒàçé ŵàţçĥîñĝ ƒöŕ çĥàñĝé þöļļš öñé ñüḿƃéŕ àñđ
àñ öþéŕàţîöñ ḿéŕĝéđ îñ ƒŕöḿ éļšéŵĥéŕé ḿöṽéš îţ ļîķé öñé ŕéçöŕđéđ ĥéŕé.
À ļöĝ ļîñé šĥöŵš ţĥé ƒîŕšţ ţéñ çĥàŕàçţéŕš (workspace.ShortOpID): ţĥé ţîḿé þàŕţ
àñđ ţŵö ŕàñđöḿ çĥàŕàçţéŕš, ŵĥîçĥ öñé ḿàçĥîñé ñéṽéŕ ŕéþéàţš ƃéçàüšé îţ ñéṽéŕ
àççéþţš ţŵö öþéŕàţîöñš îñ öñé ḿîļļîšéçöñđ. Éṽéŕý ṽéŕƃ ŕéšöļṽéš àñý þŕéƒîẋ ţĥàţ
šţàŕţš éẋàçţļý öñé îđ; à þŕéƒîẋ ţĥàţ šţàŕţš šéṽéŕàļ îš ŕéƒüšéđ ŵîţĥ ţĥé
çàñđîđàţéš ļîšţéđ (workspace.AmbiguousOpIDError).
Šüŕƒàçéš
Ţĥé çöḿḿàñđ ļîñé đîṽîđéš ƃý àüđîéñçé:
| Àüđîéñçé | Çöḿḿàñđš | Ŵĥàţ ţĥéý đö |
|---|---|---|
| À þéŕšöñ | kapi context <path>, search | ŕéàđ ŵĥàţ àþþļîéš |
| À þéŕšöñ | kapi context atlas | ļîšţ ţĥé ŵĥöļé çöñţéẋţ, öṽéŕ ţîḿé àñđ àçŕöšš îţš àẋéš |
| À þéŕšöñ | kapi context review | ķééþ, đŕöþ, çĥööšé à šîđé, àþþļý ḿöŕé ŵîđéļý |
| À þéŕšöñ | kapi context reset --before <point> | ĝö ƃàçķ ţö àñ éàŕļîéŕ þöîñţ |
| À þéŕšöñ | kapi context sync | þüļļ, šéţţļé à ḿéŕĝé, þüšĥ |
| Àñ àššîšţàñţ (Ƒöŕ àššîšţàñţš) | kapi context note, log | ŕéçöŕđ, àñđ ŕéàđ ƃàçķ |
| Ḿàîñţéñàñçé | kapi store import, export, rebuild, locales | ţĥé šţöŕé îţšéļƒ |
kapi context note ŕéçöŕđš àñ observe ƒöŕ šöḿéţĥîñĝ ñöţîçéđ (--term ŵîţĥ
--instead-of, öŕ à ƒàçţ îñ þŕöšé), à correct ƒöŕ à þéŕšöñ'š çĥàñĝé
(--from, --to, àñđ --suggest ƒöŕ ţĥé ŕüļé îţ îḿþļîéš), àñđ à withdraw
ƒöŕ à ñöţé öƒ ţĥé çàļļéŕ'š öŵñ (--withdraw <id>). --point ñàŕŕöŵš ŵĥéŕé à
ñöţé ĥöļđš, àñđ --valid-from àñđ --valid-to ƃöüñđ ŵĥéñ îţ ĥöļđš
(àƃöṽé). kapi context log --status ƒîļţéŕš ƃý àñý öƒ ţĥé šîẋ šţàţüšéš, àñđ --session this ŕéàđš ƃàçķ
ŵĥàţ ţĥé çàļļîñĝ šéššîöñ ŕéçöŕđéđ. À ļöĝ ļîñé þŕîñţš ţĥé ķîñđ öñçé, ḿàŕķš à
çöñţéšţéđ éñţŕý [contested by #0n79tw5k9s] àñđ éñđš à šüĝĝéšţîöñ'š ļîñé ŵîţĥ
îţš šţàñđîñĝ. Ţĥé ĥöšţ ÀÞÎ (host/contextops.go, host/contextreview.go,
host/contextreset.go) îš ţýþéđ ŕéǫüéšţš àñđ ŕéšüļţš ŵîţĥ ñö ƒļàĝ šéţš, šö ţĥé
àĝéñţ ţööļš àñđ ţĥé đéšķţöþ đŕîṽé ţĥé šàḿé ļööþ.
Öþéŕàţîöñš àŕé ŵĥàţ ţŕàṽéļ ƃéţŵééñ ḿàçĥîñéš. host.App.SyncProjectContext
(kapi context sync) þüļļš àñöţĥéŕ ḿàçĥîñé'š öþéŕàţîöñš ƒŕöḿ ţĥé ƃàçķéñđ
context.backend îñ kapi.yaml đéçļàŕéš àñđ ḿéŕĝéš ţĥéḿ ƃý îđ, šéţţļéš à
ḿéŕĝé ŵĥéñ --merged ñàḿéš öñé, àñđ þüšĥéš ţĥîš ḿàçĥîñé'š öþéŕàţîöñš, üñļéšš
--no-push àšķš îţ öñļý ţö ŕéàđ. Ţĥé ŕéçîþé îš ţĥé öñļý þļàçé ţĥé ƃàçķéñđ îš
šéţ. kapi store export çàŕŕîéš ţĥé
öþéŕàţîöñš îñ öñé ƒîļé, àñđ kapi store import ḿéŕĝéš šüçĥ à ƒîļé ţĥé šàḿé
ŵàý (Ç-03). À šüĝĝéšţîöñ ŕéçöŕđéđ öñ öñé
ḿàçĥîñé àñđ ķéþţ öñ àñöţĥéŕ îš ţĥéŕéƒöŕé öñé ĥîšţöŕý, ŵĥîçĥéṽéŕ þüļļéđ ƒîŕšţ.
Ţĥé àĝéñţ šüŕƒàçé ŕéçöŕđš àñđ ŕéàđš ŵîţĥ ţŵö ţööļš: context_note, ŵĥîçĥ
ŕéçöŕđš ŵĥàţ ţĥé šéššîöñ ñöţîçéđ, à þéŕšöñ'š çĥàñĝé (from, to, suggest),
öŕ ţĥé ŵîţĥđŕàŵàļ öƒ ţĥé šéššîöñ'š öŵñ ñöţé (withdraw), ŵîţĥ ţĥé šàḿé
point, valid_from àñđ valid_to ţĥé çöḿḿàñđ ļîñé ţàķéš, àñđ
context_session_summary, ŵĥîçĥ ŕéþöŕţš ŵĥàţ öñé šéššîöñ ŕéçöŕđéđ àñđ ŵĥàţ
ƃéçàḿé öƒ îţ àñđ éñđš ŵîţĥ ţĥé kapi context review --session <id> çöḿḿàñđ à
þéŕšöñ ŕéṽîéŵš îţ ŵîţĥ. Éàçĥ ŵŕàþš à ĥöšţ çàļļ àñđ àđđš ñö ŕüļé öƒ îţš öŵñ.
Ķééþîñĝ, đŕöþþîñĝ, ŵîđéñîñĝ àñđ ŕéšéţţîñĝ àŕé ŕéšéŕṽéđ ƒöŕ þéöþļé àñđ àŕé
éẋçļüđéđ ƒŕöḿ ţĥé àĝéñţ ţööļ šéţ (Š-03).
Ţĥé šéŕṽéŕ àššîĝñš ţĥé àçţöŕ îđéñţîţý. Àñ ḾÇÞ ţööļ ţàķéš ñö àçţöŕ
àŕĝüḿéñţ àñđ ŕéƒüšéš öñé: ţĥé ķîñđ îš agent, ţĥé ñàḿé çöḿéš ƒŕöḿ ţĥé çļîéñţ'š
öŵñ initialize, àñđ ţĥé šéššîöñ îš ḿîñţéđ öñçé þéŕ šéŕṽéŕ þŕöçéšš, šö
öþéŕàţîöñš ƒŕöḿ öñé ŕüñ çàñ ƃé ŕéàđ ţöĝéţĥéŕ, àñđ ţĥé çöñţéẋţ ŕéšéţ ţö ƃéƒöŕé
ţĥéḿ. Šĥéļļ çöḿḿàñđš üšé
éñṽîŕöñḿéñţ-ƃàšéđ àçţöŕ đéţéçţîöñ ţö đîšţîñĝüîšĥ þéöþļé ƒŕöḿ šüþþöŕţéđ àĝéñţ
ĥöšţš. À þéŕšöñ îš ñàḿéđ ƃý ţĥéîŕ ĝîţ îđéñţîţý (user.email, öŕ user.name
ŵĥéñ ñö éḿàîļ îš šéţ), šö ţŵö þéöþļé öñ ţŵö ḿàçĥîñéš öƒ öñé ţéàḿ àŕé ţŵö
àçţöŕš: kapi context log --actor ţéļļš ţĥéḿ àþàŕţ, àñđ ţĥé đîĝéšţ šĥöŵš à
ţéàḿḿàţé'š öþéŕàţîöñ üñđéŕ ţĥé ţéàḿḿàţé'š ñàḿé àñđ ţĥé ŕéàđéŕ'š öŵñ àš "ýöü".
À ḿàçĥîñé ŵîţĥ ñö ĝîţ îđéñţîţý ŕéçöŕđš ţĥé þéŕšöñ üññàḿéđ.
Éṽîđéñçé îš ŕéǫüîŕéđ ŵĥéŕé à ŕüļé îš šţàţéđ. context_note ŕéƒüšéš à ţéŕḿ
ŕüļé öŕ à þéŕšöñ'š çĥàñĝé ţĥàţ ñàḿéš ñéîţĥéŕ à path ñöŕ à quote, šö ŕéçöŕđéđ ŕüļéš ĥàṽé
ţŕàçéàƃļé éṽîđéñçé.