Þŕöĵéçţ šţàţé (.kapi/state/*.jsonl)
Þŕöĵéçţ šţàţé ŕéçöŕđš ŵĥéŕé éàçĥ üñîţ šţàñđš: ŵĥàţ ĥàš ƃééñ ŕéṽîéŵéđ, ŵĥàţ ŵàš àþþŕöṽéđ àñđ ƃý ŵĥöḿ, ŵĥàţ šţàţüš à ţàŕĝéţ ĥàš ŕéàçĥéđ. Îţ îš ţĥé àŕţîƒàçţ ţĥàţ ļéţš à ŕéṽîéŵ šüŕṽîṽé à ƒŕéšĥ çļöñé.
Îḿþļéḿéñţéđ îñ Ĝö àţ
core/state.
Ţĥé ŵöŕķîñĝ šéţ šţàĝéš, ţĥé ŕéçöŕđ çöḿḿîţš
À çĥàñĝé îš ŕéçöŕđéđ îñţö à ŵöŕķîñĝ šéţ (ţĥé üñîţ-šţàţé ţàƃļéš öƒ
.kapi/work/store.db) àñđ šţàýš ţĥéŕé üñţîļ kapi commit
ḿàţéŕîàļîžéš îţ îñţö ţĥé çöḿḿîţţéđ ŕéçöŕđ üñđéŕ .kapi/state/. Ţĥé ḿöđéļ îš
đéļîƃéŕàţéļý ţĥé öñé ýöü àļŕéàđý ķñöŵ ƒŕöḿ ĝîţ: üñîţ šţàţé ƃéĥàṽéš ļîķé šţàĝéđ
çĥàñĝéš, àñđ ýöü þüƃļîšĥ đéļîƃéŕàţéļý. kapi status ŕéþöŕţš ŵĥàţ îš šţàĝéđ, šö
ñöţĥîñĝ îš ļöšţ šîļéñţļý.
Ţĥé çöñšéǫüéñçéš ƒöļļöŵ ƒŕöḿ ţĥàţ:
- Ţĥé ŵöŕķîñĝ šéţ îš à đéŕîṽéđ îñđéẋ öṽéŕ ţĥé ŕéçöŕđ àñđ çàñ ƃé đîšçàŕđéđ. Öñļý üñçöḿḿîţţéđ šţàţé îš ļöšţ, éẋàçţļý ļîķé üñçöḿḿîţţéđ çĥàñĝéš.
- Çöḿḿîţţîñĝ îš à ñö-öþ ŵĥéñ ñöţĥîñĝ çĥàñĝéđ, ŵĥîçĥ ķééþš à ÇÎ šţéþ ƒŕöḿ þŕöđüçîñĝ àñ éḿþţý çöḿḿîţ.
- À šéŕṽéŕ-ƃàçķéđ þŕöĵéçţ ĥàš à đéŕéñţ šîñķ ƒöŕ ţĥé šàḿé ŕéçöŕđ:
kapi pushšéñđš ţĥéḿ ţö ţĥé ŕéḿöţé îñšţéàđ öƒ ŵŕîţîñĝ šĥàŕđš.
Öñé šĥàŕđ þéŕ đöçüḿéñţ
Ţĥé çöḿḿîţţéđ ŕéçöŕđ îš à đîŕéçţöŕý öƒ ĴŠÖÑ Ļîñéš ƒîļéš, öñé þéŕ đöçüḿéñţ šçöþé, éàçĥ ļîñé à šîñĝļé üñîţ:
.kapi/state/
├── d-app-messages.jsonl
└── d-guide-intro.jsonl
{"unit":"k1_…","scope":"d-app-messages","variant":{"locale":"nb"},"status":"reviewed","targetHash":"…","contentHash":"…","contextHash":"…","decision":{"reviewState":"approved","at":"2026-08-04T09:12:44Z"},"updated":"2026-08-04T09:12:44Z"}
ĴŠÖÑ Ļîñéš ŕàţĥéŕ ţĥàñ öñé đöçüḿéñţ, ƃéçàüšé ţĥé ŕéçöŕđ îš àþþéñđéđ ţö àñđ đéđ ƒàŕ ḿöŕé öƒţéñ ţĥàñ îţ îš ŕéàđ ŵĥöļé: à ļîñé þéŕ üñîţ ḿàķéš ŕéçöŕđîñĝ àñ àþþŕöṽàļ à öñé-ļîñé đ îñšţéàđ öƒ à ŕéŵŕîţé öƒ éṽéŕý ƃýţé. Šĥàŕđéđ þéŕ đöçüḿéñţ ƒöŕ ţĥé šàḿé ŕéàšöñ àţ à ļàŕĝéŕ ĝŕàîñ: éđîţîñĝ ţĥé đöçüḿéñţàţîöñ đöéš ñöţ ŕéŵŕîţé ţĥé šĥàŕđ ĥöļđîñĝ ţĥé îñţéŕƒàçé šţŕîñĝš, àñđ ţŵö ƃŕàñçĥéš ţöüçĥîñĝ üñŕéļàţéđ đöçüḿéñţš đö ñöţ çöñƒļîçţ öñ šîĝĥţ.
Ļîñéš àŕé šöŕţéđ ŵîţĥîñ à šĥàŕđ, šö à ƒîļé'š ƃýţéš đéþéñđ öñļý öñ îţš çöñţéñţš. À šĥàŕđ ŵĥöšé ļàšţ üñîţ îš ĝöñé îš þŕüñéđ ŕàţĥéŕ ţĥàñ ļéƒţ ƃéĥîñđ çļàîḿîñĝ üñîţš ţĥàţ ñö ļöñĝéŕ éẋîšţ. À ḿàļƒöŕḿéđ ļîñé îš àñ éŕŕöŕ: šţàţé îš àüţĥöŕîţàţîṽé àñđ ḿüšţ ñéṽéŕ ƃé šîļéñţļý đîšçàŕđéđ.
Šĥàŕđ ƒîļéñàḿéš àŕé đéŕîṽéđ ƒŕöḿ ţĥé đöçüḿéñţ šçöþé ŕàţĥéŕ ţĥàñ ţàķéñ ƒŕöḿ îţ. À šçöþé îš ţĥé đöçüḿéñţ'š ŕéšöļṽéđ ķéý, ñéṽéŕ îţš þàţĥ (šö ŕéñàḿîñĝ à ƒîļé đöéš ñöţ öŕþĥàñ îţš šţàţé), àñđ đéŕîṽîñĝ ţĥé ƒîļéñàḿé ķééþš àñ öþàǫüé ķéý ƒŕöḿ éšçàþîñĝ ţĥé đîŕéçţöŕý.
Ŵĥý ţĥé ŕéçöŕđ îš çöḿḿîţţéđ àñđ ţĥé šţöŕé îš ñöţ
.kapi/state/ šîţš îñšîđé .kapi/, ŵĥîçĥ îš çöḿḿîţţéđ îñ ƒüļļ; öñļý
.kapi/work/ îš îĝñöŕéđ, àñđ ţĥàţ îš ŵĥéŕé ţĥé šţöŕé àñđ îţš çàçĥéš ļîṽé. À
ŕéçöŕđ öƒ ŵĥö àþþŕöṽéđ ŵĥàţ ḿüšţ ƃé ŕéṽîéŵàƃļé àñđ ḿüšţ šüŕṽîṽé à çļöñé; ţĥé
đàţàƃàšé ţĥàţ îñđéẋéš îţ îš ŕéƃüîļđàƃļé àñđ ƃéļöñĝš ţö öñé ḿàçĥîñé. Ţĥé ŕéçöŕđ
šîţš ƃéšîđé ţĥé ţéŕḿš àñđ ţĥé çöñţéñţ ḿéḿöŕý îţ ḿàķéš çļàîḿš àƃöüţ, ƃéçàüšé îţ îš
öñé ñöđé öƒ ţĥé šàḿé çöñţéẋţ ĝŕàþĥ.
Ţĥé öṽéŕṽîéŵ šţàţéš ţĥé ĝéñéŕàļ ŕüļé, àñđ ţĥé þŕöĵéçţ šţöŕé çöṽéŕš ţĥé šþļîţ îñ ƒüļļ.
Üñîţ šţàţé
Éàçĥ ļîñé çàŕŕîéš öñé üñîţ'š šţàţé. Ţĥé ŕéçöŕđ'š šçĥéḿà îđéñţîţý îš
kapi-state àţ schemaVersion 1.0; à šĥàŕđ îš ƃàŕé ĴŠÖÑ Ļîñéš, šö
ţĥé ṽéŕšîöñ ŕîđéš ţĥé šîñĝļé-đöçüḿéñţ šéŕîàļîžàţîöñ öƒ ţĥé šàḿé ŕéçöŕđš.
| Ƒîéļđ | Ţýþé | Ñöţéš |
|---|---|---|
scope | šţŕîñĝ | Ţĥé đöçüḿéñţ ţĥé üñîţ ƃéļöñĝš ţö, àñđ ţĥé šĥàŕđ îţ îš ŵŕîţţéñ îñţö. Þàŕţ öƒ ţĥé ŕéçöŕđ'š îđéñţîţý: à üñîţ îđ îš üñîǫüé îñšîđé îţš đöçüḿéñţ àñđ ñöŵĥéŕé ŵîđéŕ. |
unit | šţŕîñĝ | Üñîţ îđéñţîţý: ţĥé ƃļöçķ'š çöñţéñţ ĥàšĥ, ţĥé šàḿé ķéý ţĥé ƃļöçķ ţàƃļéš àñđ öṽéŕļàýš àđđŕéšš îţ ƃý. |
variant | öƃĵéçţ | Ţĥé ļöçàļé, àñđ öþţîöñàļ ţöñé/çĥàññéļ, ţĥîš šţàţé àþþļîéš ţö. |
status | šţŕîñĝ | Ţàŕĝéţ ļàđđéŕ þöšîţîöñ: đŕàƒţ → ţŕàñšļàţéđ → ŕéṽîéŵéđ → šîĝñéđ-öƒƒ. |
sourceStatus | šţŕîñĝ | Šöüŕçé ļàđđéŕ þöšîţîöñ: àüţĥöŕéđ → çĥéçķéđ → àþþŕöṽéđ. |
origin | öƃĵéçţ | Þŕöṽéñàñçé öƒ ţĥé çüŕŕéñţ ţàŕĝéţ (éñĝîñé/ţööļ/ŕéƒéŕéñçé). |
targetHash | šţŕîñĝ | Çöñţéñţ ĥàšĥ öƒ ţĥé ţŕàñšļàţîöñ ţĥîš šţàţé ƃļéššéš. |
contentHash | šţŕîñĝ | Ţĥé đéçîšîöñ'š ƃàšîš: ţĥé ĥàšĥ öƒ ţĥé šöüŕçé ŵöŕđîñĝ ţĥé đéçîšîöñ ŵàš ḿàđé àĝàîñšţ. À ŕéçöŕđ ŵĥöšé ƃàšîš ñö ļöñĝéŕ ḿàţçĥéš ţĥé üñîţ'š çüŕŕéñţ šöüŕçé ŕéàđš àš šţàļé. |
contextHash | šţŕîñĝ | Ţĥé ƒîñĝéŕþŕîñţ öƒ ţĥé ĝöṽéŕñîñĝ çöñţéẋţ (ṽöîçé, ţéŕḿš, þöîñţ) îñ ƒöŕçé ŵĥéñ ţĥé üñîţ ŵàš þŕöđüçéđ; ţĥé šţàļéñéšš ĝàţé çöḿþàŕéš îţ àĝàîñšţ ţĥé çöñţéẋţ îñ ƒöŕçé ñöŵ. |
decision | öƃĵéçţ | Ţĥé ŕéçöŕđéđ ŵöŕķƒļöŵ đéçîšîöñ: reviewState (approved, rejected, …), by (éḿþţý ƒöŕ à þéŕšöñ, ai/<model> ƒöŕ àñ àüţöñöḿöüš ÀÎ àþþŕöṽàļ, agent/<client> ƒöŕ àñ àĝéñţ àçţîñĝ ƒöŕ à þéŕšöñ), at, note, parked, assignee. |
aiReview | öƃĵéçţ | Ļàšţ ÀÎ þŕé-ŕéṽîéŵ àññöţàţîöñ. Öþţîöñàļ. |
updated | šţŕîñĝ | ŔƑÇ 3339. |
Ţĥŕéé ĥàšĥéš çàŕŕý ḿöšţ öƒ ţĥé đéšîĝñ:
targetHash đöéš ñöţ đüþļîçàţé ţĥé ţŕàñšļàţîöñ. Îţ îš à ĥàšĥ öƒ ţĥé ţéẋţ
ţĥé ŕéṽîéŵ ŵàš ḿàđé àĝàîñšţ, šö éđîţîñĝ ţĥàţ ţéẋţ îñṽàļîđàţéš à šţàļé àþþŕöṽàļ
ŕàţĥéŕ ţĥàñ šîļéñţļý çàŕŕýîñĝ îţ ƒöŕŵàŕđ. Ţĥé ţŕàñšļàţîöñ îţšéļƒ ļîṽéš îñ ţĥé
đéļîṽéŕàƃļé; ţĥîš ŕéçöŕđ öñļý ƃļéššéš îţ.
contentHash ƃîñđš ţĥé đéçîšîöñ ţö îţš šöüŕçé. Àñ àþþŕöṽàļ îš àƃöüţ à
þàîŕîñĝ, ţĥîš ŕéñđéŕîñĝ öƒ ţĥîš šöüŕçé, šö ţĥé ŕéçöŕđ ķééþš ţĥé ĥàšĥ öƒ ţĥé
šöüŕçé ŵöŕđîñĝ àš ţĥé đéçîšîöñ'š ƃàšîš. Éđîţ ţĥé šöüŕçé àñđ ţĥé üñîţ ŕéàđš àš
šţàļé üñţîļ šöḿéöñé đéçîđéš ţĥé ñéŵ þàîŕîñĝ; ŕéšţöŕé ţĥé šöüŕçé àñđ ţĥé
đéçîšîöñ àþþļîéš àĝàîñ. Îţ îš àļšö ŵĥàţ ļéţš à ƃļöçķ ŕéḿöṽéđ îñ öñé ŕéṽîšîöñ
àñđ ŕéšţöŕéđ îñ à ļàţéŕ öñé çöḿé ƃàçķ ţö îţš öŵñ ĥîšţöŕý ŕàţĥéŕ ţĥàñ ƃéîñĝ
ŕé-ţŕàñšļàţéđ.
contextHash ƃîñđš ţĥé ţàŕĝéţ ţö ţĥé ĝöṽéŕñàñçé îţ ŵàš þŕöđüçéđ üñđéŕ. Ţĥé
šţàļéñéšš ĝàţé ŕéàđš îţ: à ţàŕĝéţ ŵŕîţţéñ üñđéŕ à ṽöîçé þŕöƒîļé öŕ à ţéŕḿš
šţöŕé ţĥàţ ĥàš šîñçé ḿöṽéđ ƒàîļš ţĥé ĝàţé, ñàḿîñĝ ŵĥàţ ḿöṽéđ, àñđ kapi up
ŕéþŕöđüçéš îţ üñđéŕ ţĥé çöñţéẋţ ñöŵ îñ ƒöŕçé.
aiReview îš àđṽîšöŕý àñđ ñéṽéŕ à ŕéṽîéŵ öüţçöḿé. Îţ îñƒöŕḿš ţĥé ŕéṽîéŵ ǫüéüé
ŵîţĥ à šçöŕé àñđ ƒîñđîñĝš. Ŵĥéŕé àñ ÀÎ þŕé-ŕéṽîéŵ ĵüšţîƒîéđ àñ àüţöḿàţîç
àþþŕöṽàļ, ţĥàţ àþþŕöṽàļ îš ŕéçöŕđéđ šéþàŕàţéļý îñ decision, ŵîţĥ by
çàŕŕýîñĝ ţĥé ai/<model> îđéñţîţý, šö à ḿàçĥîñé ĵüđĝéḿéñţ àñđ à ḿàçĥîñé
àþþŕöṽàļ ŕéḿàîñ đîšţîñĝüîšĥàƃļé îñ ţĥé ŕéçöŕđ.
Ŵĥàţ îš đéļîƃéŕàţéļý ñöţ îñ îţ
- Ţĥé ţŕàñšļàţîöñš ţĥéḿšéļṽéš. Öñļý ţĥéîŕ ĥàšĥéš. Ţĥé çöñţéñţ ļîṽéš îñ ţĥé đéļîṽéŕàƃļé öŕ îñ à çöñţéñţ ƃüñđļé.
- Àñýţĥîñĝ đéŕîṽàƃļé. Çöṽéŕàĝé þéŕçéñţàĝéš àñđ ŕéṽîéŵ ǫüéüéš àŕé çöḿþüţéđ ƒŕöḿ ţĥéšé šĥàŕđš þļüš ţĥé çöñţéñţ ŕàţĥéŕ ţĥàñ šţöŕéđ àļöñĝšîđé.
- Üñçöḿḿîţţéđ šţàţé. Ƃý çöñšţŕüçţîöñ; ţĥàţ îš ŵĥàţ
kapi commitîš ƒöŕ.
Šéé àļšö
- Ţĥé þŕöĵéçţ šţöŕé: ţĥé çöḿḿîţţéđ ŕéçöŕđ, ţĥé ļöçàļ šţöŕé, àñđ ţĥé çàçĥé.
- Öṽéŕṽîéŵ: šţöŕé, ƃüñđļé, àñđ çöḿḿîţţéđ šţàţé.
- Ţéŕḿš: ţĥé öţĥéŕ çöḿḿîţţéđ àŕţîƒàçţ à ŕéṽîéŵéŕ ŕéàđš.