Ŕéđàçţîöñ
Ŕéđàçţîöñ ŕéþļàçéš šéñšîţîṽé çöñţéñţ (þéöþļé, üñŕéļéàšéđ þŕöđüçţ ñàḿéš, îñţéŕñàļ ŕöļéš, šéçŕéţš) ŵîţĥ þŕöţéçţéđ þļàçéĥöļđéŕš ƃéƒöŕé à đöçüḿéñţ îš šéñţ ƒöŕ ÀÎ ţŕàñšļàţîöñ öŕ ĥàñđéđ ţö àñ éẋţéŕñàļ ţŕàñšļàţöŕ, ţĥéñ ŕéšţöŕéš ţĥé öŕîĝîñàļš öñçé ţĥé ţŕàñšļàţîöñ çöḿéš ƃàçķ. Ţĥé šéñšîţîṽé ṽàļüé ñéṽéŕ ļéàṽéš ţĥé ļöçàļ ḿàçĥîñé.
Ƒöŕ ţĥé àŕçĥîţéçţüŕé àñđ đéšîĝñ đéçîšîöñš ƃéĥîñđ ţĥîš, šéé Ç-10: Çöñţéñţ Ŕéđàçţîöñ.
Îñ ţĥé ÇĻÎ, redact àñđ unredact àŕé þîþéļîñé šţéþš. Ţĥéý ŕüñ îñ ƒöüŕ þļàçéš:
- ţĥé ƃüîļţ-îñ
secure-translateƒļöŵ ŕüñš ŕéđàçţ, ţŕàñšļàţé, üñŕéđàçţ (kapi run secure-translate); - à þŕöĵéçţ ƒļöŵ çàñ þļàçé ţĥé šàḿé šţéþš àŕöüñđ îţš öŵñ þîþéļîñé;
kapi extract --redactþŕöţéçţš à ţŕàñšļàţöŕ ĥàñđ-öƒƒ;- îñ à þŕöĵéçţ ţĥàţ đéçļàŕéš à ŕéđàçţîöñ þöļîçý,
kapi exec <tool>þüţš ţĥé ţŵö šţéþš àŕöüñđ à ţööļ ţĥàţ çàļļš à ḿöđéļ, ƒöŕ éàçĥ ƒîļé üñđéŕ ţĥé þöļîçý ţĥàţ çöṽéŕš îţ (šéé Ŕéçîþé çöñƒîĝüŕàţîöñ).
Üñđéŕ kapi exec, ţĥé šţéþš àþþļý ţĥé þöļîçý'š ŕüļéš ţö éṽéŕý ƃļöçķ ţĥé ţööļ
ŕéàđš, ƃļöçķš ḿàŕķéđ ñöţ ţŕàñšļàţàƃļé îñçļüđéđ, ţö éàçĥ ţŕàñšļàţîöñ ƃéšîđé ţĥé
šöüŕçé, þļüŕàļ ƒöŕḿš îñçļüđéđ, àñđ ţö éṽéŕýţĥîñĝ ţĥé ţööļ šéñđš ŵîţĥ ţĥéḿ (šéé
Ŵĥàţ ţĥé þöļîçý çöṽéŕš). À þöļîçý ţĥàţ đéţéçţš
éñţîţîéš šţöþš ţĥé ŕüñ, ƃéçàüšé ñö šţéþ àĥéàđ öƒ ţĥé ţööļ ƒîñđš ţĥéḿ. À ţööļ
ŵîţĥ ñö đéçļàŕéđ çöñţŕàçţ đöéš ñöţ ŕüñ üñđéŕ ţĥé þöļîçý, ƃéçàüšé ķàþî çàññöţ
ţéļļ ŵĥéţĥéŕ îţ çàļļš à ḿöđéļ. Šéé
Üñđéŕšţàñđîñĝ ţĥé ÇĻÎ ļàýéŕš ƒöŕ ţĥé ƒļöŵ àñđ
šîñĝļé-ţööļ šüŕƒàçéš.
Ţĥé þöļîçý àļšö çöṽéŕš external-command, ƃéçàüšé ţĥé þŕöĝŕàḿ îţ ŕüñš ḿàý
šéñđ ŵĥàţ îţ ŕéàđš àñýŵĥéŕé. Ţĥé þŕöĝŕàḿ ŕéàđš éàçĥ ŵîţĥĥéļđ ṽàļüé àš îţš
þļàçéĥöļđéŕ, àñđ ķàþî þüţš ţĥé öŕîĝîñàļ ƃàçķ îñţö ţĥé þŕöĝŕàḿ'š öüţþüţ. Ţĥîš
ĥöļđš ƒöŕ kapi exec external-command àñđ ƒöŕ à ƒļöŵ, ŵĥîçĥ ñééđš à redact
šţéþ àĥéàđ öƒ ţĥé ţööļ. Ŵĥéñ ţĥé öüţþüţ đŕöþš, àļţéŕš, ŕéþéàţš öŕ àđđš à
þļàçéĥöļđéŕ, ţĥé ƃļöçķ ķééþš îţš çöñţéñţ àñđ ţĥé ŕüñ ŕéþöŕţš à ƒàîļîñĝ ƒîñđîñĝ
ţĥàţ ñàḿéš ţĥé ƃļöçķ àñđ ţĥé þļàçéĥöļđéŕ, àñđ kapi exec àñđ kapi up éẋîţ 3.
Ŵĥàţ ţĥé þöļîçý çöṽéŕš
Üñđéŕ à đéçļàŕéđ þöļîçý, ţĥé þöļîçý'š ŕüļéš àþþļý ţö éṽéŕý þîéçé öƒ ţĥé þŕöĵéçţ à ŕéǫüéšţ ţö à ḿöđéļ çàŕŕîéš:
- ţĥé ƃļöçķš ţĥé ţööļ ŕéàđš, ƃļöçķš ḿàŕķéđ ñöţ ţŕàñšļàţàƃļé îñçļüđéđ, éàçĥ ţŕàñšļàţîöñ ƃéšîđé ţĥé šöüŕçé, àñđ éṽéŕý þļüŕàļ ƒöŕḿ;
- ţĥé ƃļöçķš ƃéƒöŕé àñđ àƒţéŕ à ƃļöçķ, šéñţ ţö šĥöŵ ŵĥéŕé îţ šîţš;
- ţĥé ƃļöçķ'š ķéý îñ îţš đöçüḿéñţ;
- ţĥé ƃļöçķ'š þŕéṽîöüš ṽéŕšîöñ àñđ îţš àþþŕöṽéđ ţŕàñšļàţîöñ, ŕéàđ ƒŕöḿ ţĥé çöñţéñţ ḿéḿöŕý;
- ţĥé ţéŕḿ ŕüļéš: éàçĥ ţéŕḿ, îţš ŕéþļàçéḿéñţ, àñđ ţĥé đö-ñöţ-ţŕàñšļàţé ţéŕḿš;
- ţĥé ṽöîçé þŕöƒîļé: îţš ĝüîđàñçé, šţýļé, þàţţéŕñš àñđ éẋàḿþļéš;
- ţĥé îñšţŕüçţîöñ, ƒŕöḿ
--instructionöŕ ţĥé ŕéçîþé; - ţĥé đöḿàîñ ñàḿéđ ƒöŕ ţéŕḿ éẋţŕàçţîöñ àñđ ṽöîçé îñƒéŕéñçé;
- ţĥé ţéẋţ àñ ḾÇÞ ţööļ çàļļ þàššéš, àñđ ţĥé ţŕàñšļàţîöñ þàššéđ ƃéšîđé îţ.
Ţĥîš ĥöļđš ƒöŕ kapi exec, ƒöŕ éàçĥ šţéþ öƒ à ƒļöŵ ţĥàţ ŕüñš àƒţéŕ îţš
redact šţéþ (kapi run, kapi up), ƒöŕ ţĥé ḾÇÞ ţööļš, ƒöŕ Đééþéŕ
ļööķ ŵîţĥ ÀÎ, àñđ ƒöŕ ţĥé ÀÎ àçţîöñš îñ Ķàþî Đéšķţöþ'š ŕéṽîéŵ (Ƒîẋ ŵîţĥ ÀÎ,
Ŕéţŕàñšļàţé, Éẋþļàîñ àñđ ţĥé ÀÎ þŕé-ŕéṽîéŵ). À ṽàļüé à ƃļöçķ ŵîţĥĥöļđš
ŕéàđš àš ţĥé šàḿé þļàçéĥöļđéŕ ŵĥéŕéṽéŕ ţĥé ŕéǫüéšţ çàŕŕîéš îţ. À ṽàļüé ţĥàţ
àþþéàŕš öñļý ƃéšîđé ţĥé ƃļöçķ, îñ à ţéŕḿ ŕüļé šàý, ĝéţš à þļàçéĥöļđéŕ öƒ îţš
öŵñ, àñđ ķàþî ŕéšţöŕéš îţ ŵĥéñ ţĥé ḿöđéļ çöþîéš îţ îñţö à ţŕàñšļàţîöñ. À ţööļ
ţĥàţ ŕéàđš ţéẋţ àļöñé, šüçĥ àš ţéŕḿ éẋţŕàçţîöñ, ŕéṽîéŵ öŕ ṽöîçé îñƒéŕéñçé,
ŕéàđš éàçĥ ŵîţĥĥéļđ ṽàļüé àš îţš ṽîšîƃļé þļàçéĥöļđéŕ ([REDACTED:Person]).
Éñţîţý đéţéçţîöñ ŕéàđš ţĥé ƃļöçķš àñđ đöéš ñöţ ŕéàçĥ ţĥé ŕéšţ öƒ à ŕéǫüéšţ. À þéŕšöñ ñàḿéđ öñļý îñ ţĥé ṽöîçé þŕöƒîļé öŕ à þŕéṽîöüš ṽéŕšîöñ îš ŕéđàçţéđ ţĥéŕé ŵĥéñ à ŕüļé ñàḿéš ţĥéḿ, öŕ ŵĥéñ à ƃļöçķ öƒ ţĥé šàḿé ŕéǫüéšţ ŵîţĥĥöļđš ţĥé šàḿé ţéẋţ.
kapi voice check --ai àþþļîéš ţĥé þöļîçý öƒ ţĥé ƒîļé îţ ŕéàđš, öŕ
defaults.redaction ƒöŕ ţéẋţ ĝîṽéñ îñļîñé. kapi terms expand àþþļîéš ţĥé
ŕüļéš öƒ defaults.redaction ţö ţĥé ţéŕḿš îţ šéñđš, àñđ ŵŕîţéš ñö ƒöŕḿš ƒöŕ
à ţéŕḿ ţĥé þöļîçý ŵîţĥĥöļđš.
Ţĥé ŕüļéš çöṽéŕ ţéẋţ öñļý, šö ţĥéý đö ñöţ ŕéàçĥ ţĥé îḿàĝé çŕöþ öŕ šþééçĥ çļîþ
media-refine šéñđš. À ḿàçĥîñé-ţŕàñšļàţîöñ éñĝîñé ƒŕöḿ à þļüĝîñ ŕéàđš
ţĥé ŕéđàçţéđ ƃļöçķ, éàçĥ ŵîţĥĥéļđ ṽàļüé àš à þļàçéĥöļđéŕ éļéḿéñţ îţ ķééþš îñ
þļàçé, àñđ ñöţĥîñĝ éļšé ƒŕöḿ ţĥé þŕöĵéçţ.
Ĥöŵ îţ šţàýš ļöçàļ
À ŕéđàçţéđ šþàñ ƃéçöḿéš à þļàçéĥöļđéŕ, ţĥé šàḿé þŕöţéçţéđ îñļîñé-çöđé
þŕîḿîţîṽé ķàþî üšéš ƒöŕ ṽàŕîàƃļéš àñđ ţàĝš, ŵîţĥ à ţýþé ļîķé
redaction:person. Ţĥé þļàçéĥöļđéŕ çàŕŕîéš öñļý à çàţéĝöŕý àñđ à šţàƃļé ţöķéñ;
ţĥé öŕîĝîñàļ ţéẋţ îš ĥéļđ îñ à ļöçàļ ṽàüļţ àñđ îš ñéṽéŕ ŵŕîţţéñ îñţö ţĥé
çöñţéñţ ţĥàţ ļéàṽéš ţĥé ḿàçĥîñé.
Ƒöŕ ÀÎ ţŕàñšļàţîöñ ţĥé þŕöţéçţîöñ îš šţŕüçţüŕàļ: ķàþî šéñđš ţĥé ḿöđéļ àñ öþàǫüé
ţöķéñ (<x id="…"/>) îñ þļàçé öƒ éàçĥ þļàçéĥöļđéŕ, šö ţĥé ḿöđéļ ŕéçéîṽéš
ñéîţĥéŕ ţĥé öŕîĝîñàļ ţéẋţ ñöŕ îţš ṽîšîƃļé ļàƃéļ, ţĥéñ ŕé-àţţàçĥéš ţĥé
þļàçéĥöļđéŕ ƃý ţöķéñ ŵĥéñ ţĥé ţŕàñšļàţîöñ ŕéţüŕñš. Ƒöŕ éẋţéŕñàļ ţŕàñšļàţîöñ ţĥé
þļàçéĥöļđéŕ ţŕàṽéļš îñ ţĥé ƃîļîñĝüàļ ƒîļé àš öŕđîñàŕý þŕöţéçţéđ ḿàŕķüþ ŵĥîļé
ţĥé öŕîĝîñàļ↔ţöķéñ ḿàþþîñĝ šţàýš ƃéĥîñđ îñ à ĝîţîĝñöŕéđ šîđéçàŕ.
Đéţéçţîöñ
Ŕéđàçţîöñ ƒîñđš šéñšîţîṽé šþàñš ŵîţĥ öñé öŕ ƃöţĥ đéţéçţöŕš:
-
Ŕüļéš (đéƒàüļţ) àŕé ļîţéŕàļ ţéŕḿš àñđ ŕéĝüļàŕ éẋþŕéššîöñš ýöü đéçļàŕé. Ƒüļļý öƒƒļîñé àñđ đéţéŕḿîñîšţîç.
-
Éñţîţîéš (öþţ-îñ) àŕé ñàḿéđ éñţîţîéš (þéöþļé, öŕĝàñîžàţîöñš, þŕöđüçţš, ļöçàţîöñš, đàţéš, …) ŕéçöĝñîžéđ àüţöḿàţîçàļļý àñđ ŕéđàçţéđ ƃý çàţéĝöŕý. À ƒàšţ ļöçàļ ḿöđéļ ķééþš đéţéçţîöñ öñ ţĥé ḿàçĥîñé; à çļöüđ ḿöđéļ ţŕàđéš ţĥàţ ƒöŕ ƃŕöàđéŕ çöṽéŕàĝé đüŕîñĝ ţĥé đéţéçţîöñ šţéþ. Ţĥé šàḿé đéţéçţîöñ ƒééđš éñţîţý-ĝéñéŕàļîžéđ çöñţéñţ-ḿéḿöŕý ŕéüšé, šö öñé àññöţàţîöñ šéŕṽéš ƃöţĥ.
Ţĥé
entity-extractšţéþ šéļéçţš ţĥé đéţéçţöŕ ŵîţĥengine:llm(ţĥé çöñƒîĝüŕéđ ÀÎ þŕöṽîđéŕ; ţĥé đéƒàüļţ),ner(àñ öñ-đéṽîçé ḿöđéļ, ŵîţĥ ñö þŕöṽîđéŕ çàļļ, ñö çŕéđéñţîàļš àñđ ñöţĥîñĝ ļéàṽîñĝ ţĥé ḿàçĥîñé), öŕhybrid(ƃöţĥ, ḿéŕĝéđ). Ŵîţĥengine: nerţĥé šţéþ çàŕŕîéš ñö ŕéḿöţé-éĝŕéšš šîđé 郃éçţ, šö ţĥé þļàçéḿéñţ þàšš àççéþţš îţ àĥéàđ öƒredactŵîţĥöüţ ǫüàļîƒîçàţîöñ. Ţĥé ƃŕöŵšéŕ Ƒļöŵ ŵöŕķšþàçé ļàƃ ŕüñš ţĥîš éñđ ţö éñđ ŵîţĥ à ĜĻîÑÉŔ ÖÑÑẊ ḿöđéļ ļöàđéđ îñ ţĥé þàĝé.
Éàçĥ ḿàţçĥ îš àššîĝñéđ à çàţéĝöŕý. Ţĥé ŕéçöḿḿéñđéđ çàţéĝöŕîéš àŕé person,
role, product, org, location, àñđ custom, ƃüţ çàţéĝöŕîéš àŕé
ƒŕéé-ƒöŕḿ, šö üšé ŵĥàţéṽéŕ ţĥé þļàçéĥöļđéŕ ţéḿþļàţé šĥöüļđ đîšþļàý.
Ŕüļéš ƒîļé
Ţĥé ţéŕḿ ļîšţ îš îţšéļƒ šéñšîţîṽé, šö îţ ļîṽéš îñ à đéđîçàţéđ ƒîļé öüţšîđé ţĥé çöḿḿîţţéđ ŕéçîþé. Ķééþ îţ ĝîţîĝñöŕéđ:
# redaction.yaml: bind it with defaults.redaction.rules, and gitignore it
version: v1
placeholder: "[REDACTED:{category}]" # {category} and {n} are substituted
detectors: [rules]
rules:
- term: "Sarah Chen"
category: person
- term: "Project Halcyon" # unreleased codename
category: product
- pattern: "ACME-[A-Z]+-\\d+" # regular expression: internal SKUs
category: product
flags: [ignorecase] # also: wholeword (literal terms)
Ŵöŕķƒļöŵš
Îñ-þŕöçéšš: šéçüŕé-ţŕàñšļàţé
Ţĥé ƃüîļţ-îñ secure-translate ƒļöŵ ŕéđàçţš, ÀÎ-ţŕàñšļàţéš àĝàîñšţ ţĥé
þļàçéĥöļđéŕš, àñđ ŕéšţöŕéš ţĥé öŕîĝîñàļš, àļļ îñ à šîñĝļé ŕüñ, šö ţĥé šéçŕéţ
îš öñļý éṽéŕ îñ ḿéḿöŕý:
kapi run secure-translate -i src/locales/en.json --target-lang fr
redact îš àñ öŕđîñàŕý ţŕàñšƒöŕḿéŕ šţéþ: ţĥé ƒŕàḿéŵöŕķ
àþþļîéŕ ŕéŵŕîţéš ţĥé šöüŕçé, ŕéþļàçîñĝ šéñšîţîṽé šþàñš ŵîţĥ þļàçéĥöļđéŕš àñđ
ṽàüļţîñĝ ţĥé öŕîĝîñàļš ƒàîļ-çļöšéđ, ƃéƒöŕé ţĥé ñéẋţ šţéþ öƃšéŕṽéš îţ. Ƃéçàüšé
ŕéđàçţîöñ'š éđîţ þļàñ îš šţŕüçţüŕéđ, ŕüñ-àñçĥöŕéđ öṽéŕļàýš àţţàçĥéđ üþšţŕéàḿ
(ţéŕḿš, éñţîţîéš) šüŕṽîṽé ţĥé ŕéŵŕîţé ƃý ŕéƃàšîñĝ; öñļý šþàñš öṽéŕļàþþîñĝ à
ŕéđàçţéđ šþàñ àŕé đŕöþþéđ. Ţĥé ƒļöŵ'š þļàçéḿéñţ þàšš ķééþš ţĥé öŕđéŕîñĝ šàƒé:
îţ ŕéĵéçţš à redact þļàçéđ àƒţéŕ àñý šţéþ ţĥàţ šéñđš šöüŕçé ţö à ŕéḿöţé
šéŕṽîçé. unredact îš àñ öŕđîñàŕý ļàţé šţéþ ţĥàţ ŕéšţöŕéš ţĥé öŕîĝîñàļš öñ
ţĥé ŵàý öüţ. Ýöü çàñ çöḿþöšé ƃöţĥ îñţö ýöüŕ öŵñ ƒļöŵš àš öŕđéŕéđ šţéþš:
steps:
- tool: redact
- tool: translate
- tool: unredact
Îñ à þŕöĵéçţ, à redact šţéþ ţĥàţ ñàḿéš ñö rulesPath öŕ rules öƒ îţš öŵñ
ŕéđàçţš éàçĥ ƒîļé üñđéŕ ţĥé þöļîçý ţĥé ŕéçîþé đéçļàŕéš ƒöŕ ţĥàţ ƒîļé. À šţéþ
ţĥàţ ñàḿéš îţš öŵñ ŕüļéš ķééþš ţĥéḿ.
Éẋţéŕñàļ: éẋţŕàçţ, ţŕàñšļàţé, ḿéŕĝé
Ŵĥéñ à ĥüḿàñ ţŕàñšļàţöŕ öŕ ÇÀŢ ţööļ đöéš ţĥé ţŕàñšļàţîöñ, ŕéđàçţ öñ ţĥé ŵàý öüţ
àñđ ŕéšţöŕé öñ ţĥé ŵàý ƃàçķ. kapi extract --redact éḿîţš à ƃîļîñĝüàļ ƒîļé
çöñţàîñîñĝ öñļý þļàçéĥöļđéŕš àñđ ŵŕîţéš ţĥé öŕîĝîñàļš ţö à ļöçàļ ṽàüļţ šîđéçàŕ;
kapi merge ŕéšţöŕéš ţĥéḿ àƒţéŕ ţĥé ţŕàñšļàţöŕ ŕéţüŕñš ţĥé ƒîļé.
# Emit redacted XLIFF: originals stay in .kapi/vault/batches/<batch>.json
kapi extract --redact
# ... translator fills in targets, preserving the placeholders ...
# Restore the originals into the merged target
kapi merge -i out/app.en-to-fr.xliff
Þàšš --redact-rules <path> ţö þöîñţ àţ à ŕüļéš ƒîļé đîŕéçţļý, öŕ éñàƃļé
ŕéđàçţîöñ îñ ţĥé ŕéçîþé (ƃéļöŵ) šö þļàîñ kapi extract ŕéđàçţš. Üšé
kapi merge --no-restore ţö ķééþ ţĥé þļàçéĥöļđéŕš îñ ţĥé ḿéŕĝéđ öüţþüţ.
Ŕéçîþé çöñƒîĝüŕàţîöñ
Đéçļàŕé ŕéđàçţîöñ îñ ţĥé þŕöĵéçţ ŕéçîþé, àñđ ķàþî àþþļîéš îţ ŵĥéŕéṽéŕ çöñţéñţ
ļéàṽéš ţĥé þŕöĵéçţ: kapi push, kapi exec, kapi extract, Đééþéŕ ļööķ
ŵîţĥ ÀÎ àñđ ţĥé ŕéçöŕđ ķéþţ öƒ éàçĥ éđîţ. À þöļîçý çàñ ƃé đéçļàŕéđ îñ ţĥŕéé
þļàçéš:
defaults.redaction, ƒöŕ éṽéŕý ƒîļé öƒ ţĥé þŕöĵéçţ;redaction:öñ à çöļļéçţîöñ, ñàḿéđ öŕ ƃàŕé, ƒöŕ ţĥé ƒîļéš îţ ĥöļđš;redaction:öñ à çöñţéñţ îţéḿ, ƒöŕ ţĥé ƒîļéš ţĥàţ îţéḿ ḿàţçĥéš.
Éàçĥ ƒîļé îš ŕéđàçţéđ üñđéŕ ţĥé ḿöšţ šþéçîƒîç đéçļàŕàţîöñ ţĥàţ çöṽéŕš îţ: îţš
îţéḿ'š, éļšé îţš çöļļéçţîöñ'š, éļšé ţĥé đéƒàüļţš. Ţĥàţ đéçļàŕàţîöñ ŕéþļàçéš ţĥé
öţĥéŕš ƒöŕ ţĥé ƒîļé. Îţš ƒîéļđš àŕé ñöţ ḿéŕĝéđ ŵîţĥ ţĥéîŕš, šö à çöļļéçţîöñ
ţĥàţ ñàḿéš îţš öŵñ rules ƒîļé ŕéđàçţš ŵîţĥ ţĥàţ ƒîļé àļöñé, àñđ öñé ţĥàţ
ñééđš ţĥé đéƒàüļţ ŕüļéš àš ŵéļļ ļîšţš ţĥéḿ îñ îţš öŵñ ŕüļéš ƒîļé. À
redaction: àţ àñý öƒ ţĥé ţĥŕéé þļàçéš ţĥàţ šéţš rules, detectors öŕ
placeholder ḿüšţ šéţ enabled: true, àñđ ţĥé ŕéçîþé ƒàîļš ţö ļöàđ îƒ îţ
đöéš ñöţ; enabled: false àļöñé ţüŕñš ŕéđàçţîöñ öƒƒ ƒöŕ ţĥöšé ƒîļéš.
defaults:
source_language: en
target_languages: [fr, de]
redaction:
enabled: true
rules: redaction.yaml
detectors: [rules]
placeholder: "[REDACTED:{category}]"
collections:
- name: legal
redaction: # replaces defaults.redaction for legal/
enabled: true
rules: legal-redaction.yaml
content:
- path: "legal/*.md"
- path: "src/locales/*.json"
format: json
redaction:
enabled: false # no redaction for this entry
Çöñţéñţ ţĥàţ šîţš îñ ñö ƒîļé, šüçĥ àš ţĥé ţéẋţ àñ ḾÇÞ ţööļ çàļļ þàššéš, îš
ŕéđàçţéđ üñđéŕ defaults.redaction. À .kpz þàçķàĝé ĥöļđš ƒîļéš öƒ éṽéŕý
çöļļéçţîöñ, šö îñ à þŕöĵéçţ ţĥàţ đéçļàŕéš à çöļļéçţîöñ'š öŕ àñ îţéḿ'š þöļîçý,
kapi exec ŕéƒüšéš ţö ŕüñ à ţööļ ţĥàţ çàļļš à ḿöđéļ öṽéŕ à þàçķàĝé; ŕüñ îţ öñ
ţĥé þŕöĵéçţ'š ƒîļéš îñšţéàđ. À ŕéđàçţéđ þàçķàĝé (ƃéļöŵ) ţĥàţ
kapi extract --format kpz ŵŕöţé îñ ţĥîš þŕöĵéçţ îš ţĥé éẋçéþţîöñ: îţš ƒîļéš
àļŕéàđý ĥöļđ þļàçéĥöļđéŕš, šö ţĥé ţööļ ŕüñš àñđ ŕéàđš ţĥéḿ. À ƒļöŵ þļàçéš îţš
öŵñ redact šţéþ, àñđ
ķàþî ŕéƒüšéš ţö ŕüñ à ƒļöŵ ţĥàţ šéñđš šöüŕçé ţö à ŕéḿöţé þŕöṽîđéŕ ŵîţĥöüţ öñé.
À þŕöĵéçţ ƒļöŵ ŕüñš öṽéŕ éṽéŕý ƒîļé öƒ ţĥé ŕüñ, šö îţ ñééđš ţĥé šţéþ ŵĥéñ àñý
đéçļàŕàţîöñ îñ ţĥé ŕéçîþé ţüŕñš ŕéđàçţîöñ öñ. À ƃüîļţ-îñ ƒļöŵ ŕüñ öñ öñé ƒîļé
ñééđš îţ ŵĥéñ à þöļîçý çöṽéŕš ţĥàţ ƒîļé.
Ŵĥéŕé ţĥé öŕîĝîñàļš ļîṽé
| Ŵöŕķƒļöŵ | Ṽàüļţ |
|---|---|
Îñ-þŕöçéšš (secure-translate, çüšţöḿ ƒļöŵš, kapi exec) | Îñ ḿéḿöŕý öñ ţĥé ƃļöçķ; ŕéḿöṽéđ àƒţéŕ ŕéšţöŕé, àñđ ñéṽéŕ ŵŕîţţéñ ţö öüţþüţ |
Éẋţéŕñàļ (extract --redact → merge) | .kapi/vault/batches/<batch-id>.json, îñ à đîŕéçţöŕý ķéþţ öüţ öƒ ṽéŕšîöñ çöñţŕöļ àñđ ŵŕîţţéñ þŕîṽàţé (0700, ƒîļéš 0600) |
Þàçķàĝé ƒŕöḿ šöüŕçé ƒîļéš (extract <files> -o work.kpz --redact-rules <file> → merge work.kpz) | work.kpz.vault ƃéšîđé ţĥé þàçķàĝé, ŵŕîţţéñ þŕîṽàţé (0600) |
Ţĥé ṽàüļţ šîţš îñ .kapi/vault/, ƃéšîđé .kapi/work/ àñđ öüţšîđé îţ.
Éṽéŕýţĥîñĝ üñđéŕ work/ ŕéƃüîļđš, šö ýöü çàñ đéļéţé îţ; à ŵîţĥĥéļđ öŕîĝîñàļ
çàññöţ ƃé ŕéƃüîļţ. Ţĥé ṽàüļţ îš ñéṽéŕ çöḿḿîţţéđ àñđ ñéṽéŕ šýñçéđ
ţö à šéŕṽéŕ, šö ţĥé öñļý çöþý îš ţĥé öñé öñ ýöüŕ ḿàçĥîñé. rm -rf .kapi/work
šţàýš šàƒé àţ àñý ţîḿé; đéļéţîñĝ .kapi/ ŵĥöļéšàļé šţŕàñđš àñý ƃàţçĥ ýöü ĥàṽé
öüţ ŵîţĥ à ţŕàñšļàţöŕ, ƃéçàüšé ţĥé ḿéŕĝé ţĥàţ ŵöüļđ ŕéšţöŕé ţĥé öŕîĝîñàļš ĥàš
ñöţĥîñĝ ļéƒţ ţö ŕéàđ.
Ŕéšţöŕàţîöñ ḿàţçĥéš þļàçéĥöļđéŕš ƃàçķ ţö öŕîĝîñàļš ƃý ţöķéñ ŵĥéŕé ţĥé ƒöŕḿàţ
þŕéšéŕṽéš îñļîñé šţŕüçţüŕé (îñ-þŕöçéšš þîþéļîñéš àñđ ẊĻÎƑƑ), àñđ ƃý ţĥé üñîǫüé
ṽîšîƃļé ţöķéñ ţéẋţ ŵĥéŕé ţĥé ƒöŕḿàţ ƒļàţţéñš þļàçéĥöļđéŕš ţö þļàîñ ţéẋţ (šüçĥ
àš ĴŠÖÑ). Öñ extract, ŕéđàçţîöñ ŕüñš ƃéƒöŕé çöñţéñţ-ḿéḿöŕý þŕé-ƒîļļ, šö
ñö šéñšîţîṽé ṽàļüé çàñ ŕéàçĥ ţĥé éḿîţţéđ ƒîļé ţĥŕöüĝĥ à ḿéḿöŕý ḿàţçĥ.
À ṽàüļţ ķééþš éàçĥ öŕîĝîñàļ üñđéŕ ţĥé ƒîļé îţ çàḿé ƒŕöḿ, ţĥé ƃļöçķ, àñđ ţĥé
þļàçéĥöļđéŕ'š ţöķéñ. Ƃļöçķ ÎĐš àñđ ţöķéñš ŕéþéàţ ƒŕöḿ ƒîļé ţö ƒîļé, šö ţŵö ƒîļéš
ţĥàţ éàçĥ ŵîţĥĥöļđ à đéŕéñţ ñàḿé ķééþ ƃöţĥ ñàḿéš, àñđ kapi merge ĝîṽéš éàçĥ
ƒîļé îţš öŵñ.
À ṽàüļţ ŵŕîţţéñ ƃý àñ éàŕļîéŕ ķàþî ŕéçöŕđš ñö ƒîļé, àñđ ķàþî ŕéƒüšéš îţ. Ţĥé ḿéššàĝé ñàḿéš ţĥé ṽàüļţ ƒîļé àñđ ŵĥàţ ţö ŕüñ:
- Ƒöŕ à ƃàţçĥ ṽàüļţ üñđéŕ
.kapi/vault/batches/, ŕüñkapi extractàĝàîñ. Ţĥé ñéŵ éẋţŕàçţîöñ ŵŕîţéš à ñéŵ ṽàüļţ ŵîţĥ ñéŵ ƒîļéš ţö ţŕàñšļàţé, àñđ à ƒîļé ŕéţüŕñéđ ƒŕöḿ ţĥé öļđ éẋţŕàçţîöñ ñö ļöñĝéŕ ḿéŕĝéš. - Ƒöŕ ţĥé þŕöĵéçţ ṽàüļţ,
.kapi/vault/redaction.json, ḿöṽé ţĥé ƒîļé àšîđé àñđ ŕüñ ţĥé çöḿḿàñđ àĝàîñ. ķàþî ŵŕîţéš à ñéŵ ṽàüļţ ƒŕöḿ ţĥé çöñţéñţ îţ ŕéàđš. À ŕéçöŕđéđ éđîţ ŵĥöšé öŕîĝîñàļš àŕé îñ ţĥé öļđ ƒîļé ķééþš îţš þļàçéĥöļđéŕš, àñđ ţĥé ḿöṽéđ ƒîļé îš ţĥé öñļý çöþý öƒ ţĥöšé öŕîĝîñàļš.
À ṽàüļţ ŵŕîţţéñ ƃý à ñéŵéŕ ķàþî îš ŕéƒüšéđ ţöö; üþĝŕàđé ķàþî ţö ŕéàđ îţ.
À ÞÖ ƒîļé ĥàš ñö îñļîñé çöđéš, šö kapi extract --format po ŵŕîţéš éàçĥ
ŵîţĥĥéļđ ṽàļüé àš îţš ṽîšîƃļé þļàçéĥöļđéŕ ([REDACTED:Person]), àñđ
kapi merge ŕéšţöŕéš îţ ƃý ţĥàţ ţéẋţ.
Ŕéđàçţéđ .kpz þàçķàĝéš
Üñđéŕ à ŕéđàçţîöñ þöļîçý, öŕ ŵîţĥ --redact-rules, kapi extract --format kpz
àñđ kapi extract <files> -o work.kpz ŵŕîţé à ŕéđàçţéđ þàçķàĝé. Éàçĥ šöüŕçé
ƒîļé îñ îţ ĥöļđš ţĥé ṽîšîƃļé þļàçéĥöļđéŕ ([REDACTED:Person]) ŵĥéŕéṽéŕ ţĥé
þöļîçý ŵîţĥĥöļđš à ṽàļüé: ţĥé šķéļéţöñ, ţĥé ŕàŵ šöüŕçé ţĥàţ --with-source
àđđš, àñđ ţĥé çöñţéñţ-ḿéḿöŕý ḿàţçĥéš àñđ ţéŕḿš ţĥàţ ţŕàṽéļ ŵîţĥ ţĥé þàçķàĝé. À
ḿàţçĥ öŕ à ţéŕḿ îñ ŵĥîçĥ ţĥé þöļîçý'š ŕüļéš ƒîñđ à ṽàļüé šţàýš öüţ öƒ ţĥé
þàçķàĝé. Ţĥé þàçķàĝé'š ḿàñîƒéšţ ŕéçöŕđš ţĥàţ îţ îš ŕéđàçţéđ àñđ ţĥé ÎĐ öƒ ţĥé
ṽàüļţ ţĥàţ ŕéšţöŕéš îţ.
Ţĥé ṽàüļţ ñéṽéŕ ţŕàṽéļš îñšîđé ţĥé þàçķàĝé:
kapi extract --format kpzķééþš îţ îñ ţĥé þŕöĵéçţ, àţ.kapi/vault/batches/<vault-id>.json, öñé ṽàüļţ ƒöŕ éṽéŕý þàçķàĝé öƒ ţĥé ŕüñ.kapi extract <files> -o work.kpz --redact-rules <file>ŵŕîţéš îţ ƃéšîđé ţĥé þàçķàĝé, àšwork.kpz.vault. Éẋţŕàçţ ñéṽéŕ ŕéþļàçéš à ṽàüļţ àļŕéàđý àţ ţĥàţ þàţĥ: ḿéŕĝé ţĥé þàçķàĝé îţ ŕéšţöŕéš ƒîŕšţ àñđ ŕéḿöṽé ţĥé ṽàüļţ, öŕ éẋţŕàçţ ţö àñöţĥéŕ ñàḿé.
Ŵĥöéṽéŕ ŕéçéîṽéš ţĥé þàçķàĝé ŵöŕķš öñ ţĥé þļàçéĥöļđéŕš. À ŕéçéîṽéŕ ŵĥö ŕüñš
kapi exec öñ ţĥé þàçķàĝé ñééđš ţĥé šöüŕçé ţéẋţ îñ îţ, šö éẋţŕàçţ îţ ŵîţĥ
--with-source: à þàçķàĝé ţĥàţ çàŕŕîéš öñļý šķéļéţöñš ĝîṽéš à ţööļ ñö ţéẋţ ţö
ŵöŕķ öñ, àñđ ḿéŕĝéš éḿþţý ṽàļüéš. kapi merge ŕéšţöŕéš éàçĥ ƒîļé'š ṽàļüéš,
îñ éṽéŕý þļüŕàļ ƒöŕḿ, ƒŕöḿ ţĥé ṽàüļţ ŵĥöšé ÎĐ ţĥé ḿàñîƒéšţ ŕéçöŕđš: îñ ţĥé
þŕöĵéçţ ƒöŕ à þŕöĵéçţ þàçķàĝé, àñđ ƃéšîđé ţĥé þàçķàĝé ƒöŕ merge work.kpz.
Ŵĥéñ ţĥé ṽàüļţ îš ñöţ ţĥéŕé, öŕ îţš ÎĐ đéŕš, ţĥé ḿéŕĝé šţöþš ƃéƒöŕé îţ
ŵŕîţéš à ƒîļé àñđ ñàḿéš ţĥé ṽàüļţ îţ ļööķéđ ƒöŕ. Ķééþ ţĥé þļàçéĥöļđéŕš îñţàçţ
đüŕîñĝ ţŕàñšļàţîöñ: à ţŕàñšļàţîöñ ţĥàţ šţîļļ ĥöļđš à þļàçéĥöļđéŕ àƒţéŕ ţĥé
ŕéšţöŕé šţöþš ţĥé ḿéŕĝé, ŵĥîçĥ ñàḿéš ţĥé ƒîļé àñđ ţĥé ƃļöçķ.
kapi exec ŕüñš à ţööļ öṽéŕ à ŕéđàçţéđ þàçķàĝé öñ ţĥé þļàçéĥöļđéŕš àñđ ñéṽéŕ
ŕéàđš ţĥé ṽàüļţ, šö ţĥé þàçķàĝé ķééþš ĥöļđîñĝ þļàçéĥöļđéŕš üñţîļ ţĥé ḿéŕĝé. Îñ
à þŕöĵéçţ ţĥàţ đéçļàŕéš à çöļļéçţîöñ'š öŕ àñ îţéḿ'š þöļîçý, à ţööļ ţĥàţ çàļļš à
ḿöđéļ ŕüñš öṽéŕ à þàçķàĝé öñļý ŵĥéñ kapi extract --format kpz ŵŕöţé ţĥé
þàçķàĝé îñ ţĥîš þŕöĵéçţ, šö îţš ṽàüļţ îš àḿöñĝ ţĥé þŕöĵéçţ'š ƃàţçĥ ṽàüļţš.
Éẋţŕàçţ ŕéƒüšéš à ƒîļé îţ çàññöţ ŕéđàçţ îñţö à þàçķàĝé: öñé îñ ŵĥîçĥ ţĥé
þöļîçý'š ŕüļéš šţîļļ ƒîñđ à ṽàļüé öñçé ţĥé ƃļöçķš àŕé ŕéđàçţéđ (îñ îţš ḿàŕķüþ,
îñ à ƒîéļđ ķàþî đöéš ñöţ ŕéàđ àš à ƃļöçķ, öŕ àçŕöšš àñ îñļîñé çöđé), àñđ öñé
ŵĥöšé ƃļöçķ ÎĐš çĥàñĝé öñçé ţĥé ṽàļüéš àŕé ŵîţĥĥéļđ. Îţ àļšö ŕéƒüšéš à þöļîçý
ţĥàţ đéţéçţš éñţîţîéš, šîñçé à .kpz éẋţŕàçţîöñ ŕüñš ñö éñţîţý-éẋţŕàçţ šţéþ.
À þŕöĵéçţ'š ẊĻÎƑƑ 2 öŕ ÞÖ éẋţŕàçţîöñ çàŕŕîéš ţĥé ƃļöçķš àļöñé.
Ŕéļàţéđ
- Ç-10: Çöñţéñţ Ŕéđàçţîöñ: ţĥé đéšîĝñ.
- Ƒļöŵš: ţŕàñšƒöŕḿéŕ šţéþš àñđ ţĥé þļàçéḿéñţ þàšš.
- Ƃîļîñĝüàļ ŵöŕķƒļöŵ: éẋţŕàçţ àñđ ḿéŕĝé ŵîţĥ à ţŕàñšļàţöŕ.