Architecture
Data flow
source document
-> booktx extract
-> .booktx/chunks/*.json
-> selected profile context/store
-> translations/<profile>/translation-store.json
-> booktx validate --profile <profile>
-> translations/<profile>/translated/*.json (compatibility export)
-> booktx build --profile <profile>
-> translations/<profile>/output/book.<target>.<ext>
Profile isolation
booktx separates two concerns:
Source scope: the source file, protected names, chunk extraction, and chapter metadata.
Profile scope: translation intent, identity defaults, version history, accepted translations, durable ingest files, validation reports, and rebuilt output.
The key invariant is:
Profile = hard isolation boundary
Version = history/candidate boundary inside that profile
Implications:
normal
booktx translation comparecompares versions inside one selected profile;cross-profile inspection is explicit via
booktx profile compare;booktx buildnever reads another profile’s store;booktx validateonly reports on the selected profile;one shared source can safely back multiple target languages and multiple model experiments.