Přejít na obsah
Skip to main content

Generovaná referenční dokumentace struktury aplikace

Replikátor vytváří společný balík čitelné Markdown dokumentace a strojových indexů dokumentových typů, oblastí a prvků. Slouží jako reference výsledné struktury aplikace pro vývojáře i agenty: podle systémové cesty nebo XDS ID lze dohledat konkrétní segment, jeho popis a všechna nalezená databázová pole.

Tato stránka popisuje implementovaný formát balíku format_version: 1. Zdrojem je výsledná struktura role 1, včetně jejích úprav. Reference proto vyjadřuje pohled této role; pro ověření jiné role je nutné použít její definice. Balík obsahuje definice, nikoli záznamy dokumentů uložené v databázi.

Nastavení a vznik balíku​

Jediným nastavením je Kořenová složka dokumentace aplikace v B-1 Složky replikátoru. Příklad hodnoty:

C:\flexideo\aplikace\moje-aplikace\DEV\dokumentace

Podsložka fdt se do nastavení nepřidává. Replikátor sám vytváří obsah a podsložky níže. Prázdná hodnota vypíná generování i distribuci.

KonfiguraceCesta k hodnotě
Aplikační nastavení/application_settings/basic/replicator-folders/documentation-folder
Konfigurace připravené verze/ConfigVer/folders/documentation-folder

Při přípravě verze se hodnota z aplikace převezme do konfigurace verze. Dodatečná změna aplikace sama nezmění konfiguraci již připravené verze.

Balík vzniká ve fázi tvorby stránek, po finálním uložení XDS role 1. Vstupy jsou její aktuální role.xds a role.dad. Při light-update již obsahují sloučené změny a nezměněné typy; zrušené definice jsou odstraněné. Sestavuje se vždy celá aktuální reference, ale při rozdílovém běhu se Markdowny mohou převzít bez nové transformace. Historické history.xds a history.dad se nepoužívají, protože obsahují také zrušené definice. Zdrojem není ani complete.xds.

Přípravný balík se uloží do documentation/ ve složce verze. Plná instalace jej přenese do nastaveného kořene dokumentace, také při light-update. Výstup je nezávislý na instalačním adresáři web/ a neleží ve složce roles/. Samotné opakování instalace chybějící balík nevygeneruje: musí mu předcházet tvorba stránek zahrnující roli 1. Samostatná tvorba jiné role referenci neobnoví. Režim instalace jediné role dokumentační balík nedistribuuje.

Chyba generování nebo distribuce brání dokončení příslušné fáze. Po úspěšné instalaci včetně závěrečného překopírování souborů (ReCopyFiles) se odstraní manifestem vlastněné přípravné soubory ve složce verze. Instalovaná dokumentace v nastaveném kořeni zůstává.

Rozdílová tvorba Markdownů​

Výběr vychází ze stejné CblvCrpSingleRole.UpdateCondition jako ostatní tvorba role. Při rozdílové replikaci je to [@updating]. Při úplné obnově role, včetně nové nebo změněné role, je podmínka prázdná a transformují se všechny typy.

V rozdílovém režimu se vybrané typy přegenerují. Markdown nevybraného typu se převezme z ověřené předchozí sady stejné aplikace, pokud se shoduje otisk šablony a vstupů tohoto typu včetně skupiny a DAD vazeb. Nové, chybějící nebo změněné nevybrané typy se dogenerují. Změna celé šablony zneplatní převzetí. Dočasný příznak updating a verze celého balíku samy tento otisk nemění.

Základ se hledá nejprve v přípravné složce aktuální verze, potom v místním dokumentačním kořeni. Chybějící, poškozená či cizí sada se nepřebírá. Starší manifest bez nových ověřovacích otisků je nadále čitelný, ale při prvním běhu se dokumentace vytvoří celá; další rozdílové běhy již mohou typy přebírat. FTP/HTTP nemají zpětné čtení balíku, takže bez dostupného místního základu zůstává úplné generování. Žádné další nastavení se nezadává.

Indexy a manifest se vždy znovu sestaví pro všechny aktuální typy. Přípravný balík je proto úplný a obsahuje také převzaté Markdowny. Počty nově vytvořených a převzatých typů uvádí replikační log i manifest. Místní instalace obsahově stejné soubory nepřepisuje, a zachovává tak jejich čas změny.

Převzatý Markdown zůstává bajtově stejný včetně položky Verze, která označuje jeho poslední vytvoření. Aktuální verzi celé reference určuje manifest.application_version; záznamy indexu rovněž nesou aktuální verzi. Původ každého Markdownu lze dohledat v manifest.documents.

Adresáře a soubory​

dokumentace/ # nastavený kořen
index.md
manifest.json
fdt/
index.md
uzivatel.md
...
indexes/
fdt/
segments.jsonl
by-xds-id.json
Cesta od kořeneObsah a použití
index.mdVstupní rozcestník; aplikace, verze, role a odkazy na FDT a indexy.
manifest.jsonIdentita a formát balíku, zdrojové otisky, počty, vlastněné soubory a jejich kontrolní součty.
fdt/index.mdSeznam dokumentových typů seřazený podle systémového názvu.
fdt/<name>.mdJeden soubor pro každý výsledný dokumentový typ včetně jeho oblastí a prvků. Jméno vychází z <name> kmene dokumentu.
indexes/fdt/segments.jsonlÚplný strojový seznam segmentů a DAD vazeb; jeden JSON objekt na fyzický řádek.
indexes/fdt/by-xds-id.jsonPřímé dohledání všech výskytů přesného XDS ID a jejich odkazů do Markdownu.

Pro N dokumentových typů vzniká N + 5 souborů. Všechny jsou UTF-8 bez BOM. Cesty uložené v indexech a manifestu jsou relativní vůči kořeni dokumentace a používají /. Odkazy uvnitř fdt/index.md jsou relativní vůči složce fdt. Obsah je při stejných vstupech a stejném předchozím základu deterministický; manifest neobsahuje čas generování.

Kořen a indexes/ umožňují pozdější rozšíření o další druhy dokumentace. V popsaném formátu je implementována větev FDT; další výstupy se tímto nastavením automaticky nezavádějí.

Identita segmentu a nadpisy​

Základní referencí je úplná systémová cesta, například uzivatel/x_common/label. Skládá se z <name> dokumentového typu a @name oblastí a prvků v pořadí zanoření. Popisek label je samostatná čitelná vlastnost. Změna popisku tedy nemění systémovou cestu; přejmenování nebo přesun segmentu ji mění.

Kmen dokumentu používá nadpis první úrovně. Přímí potomci mají druhou úroveň, jejich potomci třetí atd., nejvýše šestou. U hlubších struktur zůstává úplná cesta v nadpisu, i když se úroveň již nezvyšuje. Nadpisy nemají číslování ani prefixy „Oblast“ a „Prvek“ a nevkládá se mezilehlý nadpis „Struktura“.

Každému segmentu předchází explicitní kotva podle XDS ID:

<a id="xds-10101127"></a>

### uzivatel/osoba/prijmeni

- Popisek: Příjmení
- Druh segmentu: prvek
- Název: `prijmeni`
- ID: `10101127`
- Zkratka: `prjm`
- Datový typ: `varc(150)`
- Typ kolony: `txf(40,false,false)`
- Zdroj: `own::`

Ukázka je zkrácená. DAD údaje, podmínky a textové popisy se doplní podle definice. Odkaz na tento segment má tvar fdt/uzivatel.md#xds-10101127. Při odkazování používejte kotvu z indexu; automaticky odvozený slug nadpisu závisí na Markdown prohlížeči.

XDS ID je ve všech indexech řetězec. Osmimístné ID se hledá celé a přesně, včetně případných počátečních nul. U dokumentu pochází z <id>, u oblasti a prvku z @id. Generátor vyžaduje neprázdné číslice; pevnou délku osmi znaků samostatně nevynucuje. Stejné ID v různých dokumentech může mít více odkazů, proto se při hledání zohledňuje také systémová cesta.

Generování skončí chybou při chybějícím či nenumerickém ID, duplicitním ID uvnitř jednoho dokumentu nebo duplicitní systémové cestě. Názvy segmentů musí být neprázdné a nesmějí obsahovat /. Jméno dokumentového typu musí být platným jménem souboru ve Windows; index je rezervované a kolize názvů souborů se neřeší tichým přejmenováním.

Vlastnosti v Markdownu​

Výpis obsahuje vybrané vlastnosti výsledné definice, nikoli úplnou serializaci XDS.

ÚdajZdroj a pravidlo
Popisek<label> dokumentu nebo @label potomka.
Název<name> dokumentu nebo @name potomka.
Aplikace, Verze, RoleU kmene dokumentu identifikují kontext jeho posledního vytvoření. Role je 1; aktuální verzi celé reference určuje manifest.
SkupinaPopisek definiční skupiny dokumentu.
DruhU dokumentu rozlišuje dokumentový typ, pohled s cílovým typem a pseudo-typ.
Druh segmentuU potomků rozlišuje oblast a prvek.
ID, ZkratkaXDS identifikátor a systémová zkratka.
Datový typ@d-type prvku.
Typ kolony@f-type prvku.
PovinnostJen pro @required="true" prvku; vypisuje se true. Při false nebo chybějícím atributu se položka vynechá.
Výchozí hodnotaPřítomné @initial prvku, kromě klíčového slova null. Hodnoty 0 a false se zachovávají, explicitní prázdný řetězec se zapisuje jako "".
NullableJen pokud vlastnost @data prvku obsahuje část nullable:true; vypisuje se true. nullable:false a chybějící část se neuvádějí.
Opakovatelnost@repeat, pokud existuje a není none.
ZdrojNeprázdné @source, včetně případného výrazu za count::.
Přístup@access, pokud existuje a liší se od editable.
Podmínka zobrazení@appear-if, po zpracování pravidel níže.
Podmínka editace@edit-if, po zpracování pravidel níže.
secrecy-lev, sectionU kmene přítomné hodnoty; u potomků jen změny proti nejbližšímu předku s danou vlastností.
NápovědaNeprázdné descr nebo @descr bez výchozích textů.
DokumentaceNeprázdné documentation nebo @documentation.
Možné hodnotyTabulka hodnot a popisů z select/option u prvku.
DAD odkazy a poleZdrojové odkazy a všechny dohledané vazby popsané níže.

Popisky položek seznamu nejsou tučné; technické hodnoty se zapisují jako inline kód. Samostatné textové bloky mají označení Nápověda: a Dokumentace:.

Například pro prvek s required="true", initial="Nový kontakt" a částí nullable:true v data vzniknou položky:

- Povinnost: `true`
- Výchozí hodnota: `Nový kontakt`
- Nullable: `true`

Při rozhodování o vynechání výchozího null se ignorují okolní mezery a velikost písmen. Ostatní výchozí hodnoty se vypisují v původním znění.

U nápovědy se ignorují výchozí hodnoty - nepopsáno -, - nepopsano -, [no description] a - no description -. Při porovnání se normalizují mezery a velikost písmen ASCII. Vlastní text nápovědy se vypíše v původním znění.

Prázdné podmínky, none a ~kwnone se nevypisují pro appear-if ani edit-if. Rozpoznané výrazy v interním zápisu s ~ se před transformací převedou na obecnou čitelnou syntaxi stejnou funkcí jako v dialogu rozpoznávání výrazů (CReplicUtilities.TranslateExpress(..., True)). U zdroje count::~... se zachová prefix count:: a převede se jeho výrazová část. Speciální podmínky ~kwinput a ~kwoutput mají čitelný zápis input a output. Již obecně zapsané výrazy se nepřekládají znovu. Úpravy probíhají na kopii XML; export nepřepisuje zdrojové XDS.

Nevypsaná hodnota secrecy-lev nebo section u potomka se pro čtení reference přebírá od nejbližšího předka, který ji uvádí. Vynechání ostatních vlastností v Markdownu samo o sobě neurčuje jejich výchozí význam v XDS.

Index segmentů: segments.jsonl​

Soubor obsahuje jeden objekt pro každý kmen dokumentu, oblast a prvek. Dokumentové typy jsou řazené podle systémového názvu, jejich segmenty v pořadí zdrojové struktury. Každý záznam opakuje aplikaci, verzi a roli, aby byl interpretovatelný i při samostatném zpracování.

KlíčJSON typVýznam
applicationstringNázev aplikace doplněný projektovým klíčem v závorkách.
application_versionstringÚplný kód verze aplikace.
role_idstringV tomto formátu vždy "1".
xds_idstringPřesné XDS ID segmentu.
pathstringÚplná systémová cesta segmentu.
parent_pathstringCesta rodiče; pro kmen dokumentu prázdný řetězec.
kindstringPřesný název XDS uzlu: DocumentDef, area nebo element.
namestringSystémový název samotného segmentu.
labelstringJeho čitelný popisek.
markdown_filestringRelativní cesta k souboru, například fdt/uzivatel.md.
anchorstringExplicitní kotva bez #, například xds-10101127.
dad_referencesobjectPřítomné zdrojové DAD atributy segmentu.
dad_bindingsarray of objectsVšechna dohledaná databázová pole; bez vazeb prázdné pole.

Následující objekt je pro čitelnost rozepsaný. Ve skutečném JSONL je celý na jednom fyzickém řádku:

{
"application": "Ukázková aplikace (123)",
"application_version": "15-00-05",
"role_id": "1",
"xds_id": "10101127",
"path": "uzivatel/osoba/prijmeni",
"parent_path": "uzivatel/osoba",
"kind": "element",
"name": "prijmeni",
"label": "Příjmení",
"markdown_file": "fdt/uzivatel.md",
"anchor": "xds-10101127",
"dad_references": {
"dad-id": "100001",
"dad-path": "/100000/100001/e10101127"
},
"dad_bindings": [
{
"kind": "value",
"document": "uzivatel",
"dad_id": "100001",
"array_path": "/100000/100001",
"dad_path": "/100000/100001/e10101127",
"field_name": "prjm",
"field_path": "/100000/100001/prjm",
"data_type": "varc(150)"
}
]
}

Index slouží k vyhledání a mapování. Nápovědu, dokumentaci, podmínky a další vlastnosti uvedené ve výpisu čtěte z odkazované sekce Markdownu.

Přímý index: by-xds-id.json​

Kořenem je JSON objekt. Klíč je přesné XDS ID, jeho hodnota je vždy seznam odkazů, i pokud existuje jediný výskyt:

{
"10101127": [
{
"path": "uzivatel/osoba/prijmeni",
"markdown_file": "fdt/uzivatel.md",
"anchor": "xds-10101127"
}
]
}

Klíče jsou seřazené jako řetězce. Chybějící klíč znamená, že dané ID v aktuální referenci není. Více odkazů se rozliší podle path; první výskyt se nesmí automaticky považovat za jediný správný. URL se složí jako markdown_file + "#" + anchor.

DAD odkazy a více databázových polí​

dad_references zachovává pouze přítomné zdrojové atributy se stejným názvem: dad-id, dad-path, pdk-dad-path, psk-dad-path, key-dad-path a foreign-dad-path. Nevyplňuje chybějící atributy odhadem. V Markdownu se stejné atributy vypisují jako samostatné položky.

dad_bindings doplňuje skutečně dohledaná pole z role.dad. Jeden segment může mít více vazeb, včetně klíčových a pomocných polí. V Markdownu tvoří tabulku „DAD pole“; v JSON zůstává každá vazba samostatným objektem.

Klíč vazbyVýznam
kindZpůsob vazby: value, key, file-size nebo change-flag.
documentNázev dokumentu v DAD.
dad_idID DAD array obsahujícího pole; jde o jiný identifikátor než XDS ID segmentu.
array_pathCesta přes ID uzlů array, například /100000/100001; hierarchie vychází z key-prev.
dad_pathLogická Flexideo DAD cesta, pokud je pro danou vazbu doložená.
field_nameFyzický název pole z DAD.
field_pathPřesné fyzické umístění: array_path + "/" + field_name.
data_typeDatový typ @d-type příslušného DAD pole.

Všechny hodnoty objektu vazby jsou řetězce. Vazby se určují takto:

DruhVazba ve zdrojovém DADLogická cesta
valueNeprázdné, nenulové field/@xds-id odpovídá XDS ID.array_path + "/e" + XDS ID
keyNeprázdné, nenulové field/@xjoin odpovídá XDS ID.array_path + "/f" + XDS ID; při lex-key="true" se místo f použije k.
file-sizePole má xds-id="0", vazbu přes nenulové @join a název končí _size.Prázdný řetězec; použije se fyzická cesta.
change-flagPole má xds-id="0", vazbu přes nenulové @join a název končí _chng.Prázdný řetězec; použije se fyzická cesta.

Fyzická field_path není logický dad-path. U pomocných polí se proto logická cesta nevymýšlí. Chybějící rodič DAD array nebo cyklus v key-prev ukončí generování chybou. Prázdné dad_bindings znamená, že touto vazbou nebylo pole dohledáno; samo o sobě nedokazuje, že segment nemá žádný jiný způsob uložení.

Pro vyhledání DAD array nebo fyzického pole se filtruje segments.jsonl podle dad_references a dad_bindings. Samostatný index podle DAD ID tento formát nevytváří.

Manifest a kontrolní součty​

manifest.json je JSON objekt s následujícími položkami:

KlíčJSON typObsah
format_versionnumberVerze kontraktu balíku, nyní 1.
applicationstringNázev aplikace a projektový klíč, stejně jako v indexu segmentů.
application_versionstringVerze aplikace.
role_idstring"1".
xds_sourcestring"role.xds".
dad_sourcestring"role.dad".
xds_sha256stringSHA-256 textové serializace vstupního XDS DOMu.
dad_sha256stringSHA-256 textové serializace vstupního DAD DOMu.
document_countnumberPočet exportovaných dokumentových typů.
segment_countnumberPočet všech záznamů v segments.jsonl, včetně kmenů dokumentů.
owned_filesarray of stringsÚplný seřazený seznam souborů vlastněných touto sadou, včetně manifest.json.
sha256objectRelativní cesta → SHA-256 obsahu souboru; zahrnuje všechny vlastněné soubory kromě manifestu.
template_sha256stringOtisk XSL šablony použitý pro ověření převzatých dokumentů.
documentsobjectRelativní cesta Markdownu → objekt s input_sha256 a application_version jeho posledního vytvoření.
generated_document_countnumberPočet typů transformovaných při tomto sestavení balíku.
reused_document_countnumberPočet typů převzatých bez nové transformace. Součet obou počtů odpovídá document_count.

Poslední čtyři položky jsou doplňkovým rozšířením formátu 1 pro rozdílovou tvorbu. Starší balíky je nemají a vyžadují jednorázové úplné vytvoření před prvním převzetím. V documents je jeden záznam pro každý dokumentový Markdown, například tento schematický výřez (otisk je zde zkrácený):

{
"fdt/uzivatel.md": {
"input_sha256": "...",
"application_version": "15-00-04"
}
}

input_sha256 otiskuje vstupy typu včetně DAD mapování. Vynechává verzi celého balíku a přechodné atributy updating. Nejde o otisk Markdownu; jeho skutečný obsah nadále kontroluje položka sha256. Verze v tomto záznamu může být starší než application_version celého manifestu, pokud se nezměněný typ přebírá.

Otisky jsou hexadecimální řetězce o 64 znacích s malými písmeny. Počítají se z UTF-8 bez BOM. U zdrojových otisků jde o serializaci XML v paměti, takže se nemusí rovnat otisku původních bajtů souboru na disku. Manifest neobsahuje vlastní kontrolní součet. Kontrolní součty ověřují integritu sady; nejsou elektronickým podpisem.

Povinnými soubory jsou index.md, manifest.json, fdt/index.md a oba strojové indexy. Každý exportovaný typ doplňuje vlastní fdt/<name>.md. Při čtení Replikátor kontroluje podporovaný formát, roli, přítomnost souborů, seznamy a souhlas kontrolních součtů. Instalace navíc porovnává aplikaci a verzi manifestu s aktivní konfigurací.

Zápis, aktualizace a distribuce​

Před zápisem se ověřuje celý příchozí balík i jeho relativní cesty. Povolené jsou jen výše uvedené pevné cesty a fdt/<jediné jméno souboru>.md. Absolutní cesty, zpětná lomítka a úniky přes .. se nepřijímají.

Manifest se zapisuje poslední. Nejde však o atomickou výměnu celého adresáře: během distribuce může být krátce dostupná kombinace starých a nových souborů. Čtenář proto nejprve ověří manifest a kontrolní součty; při nesouladu sadu nepoužije a čtení zopakuje po dokončení zápisu.

CílZpůsob distribuce a úklidu
Místní nebo síťová disková složkaPřenese se úplná sada, ale bajtově stejné soubory se nezapisují znovu. Zastaralé soubory se odstraňují pouze podle předchozího manifestu.
FTPStávající textový transport Replikátoru; manifest poslední. Starší vzdálené soubory se nemažou.
HTTPStávající Flexideo transport pro předání souborů, pokud jej protistrana podporuje; manifest poslední. Starší vzdálené soubory se nemažou.
s3://Tento dokumentační výstup jej zatím nepodporuje.

Aktuální rozsah vždy určuje nový manifest a indexy. Výskyt starého souboru mimo manifest neznamená, že typ v aktuální verzi existuje. Neznámé soubory mimo rezervované výstupní cesty se zachovávají; kořen dokumentace se nemaže rekurzivně. Vlastní ručně psané soubory ukládejte mimo rezervované cesty generátoru.

Doporučený postup pro agenta nebo jiného konzumenta​

  1. Načíst manifest.json; ověřit format_version, očekávanou aplikaci, application_version a role_id.
  2. Ověřit povinné soubory, bezpečné relativní cesty a SHA-256 všech souborů uvedených v sha256. Zpracovávat pouze soubory aktuálního owned_files.
  3. Při známém XDS ID vyhledat jeho přesný řetězec v by-xds-id.json a případné vícečetné výsledky rozlišit podle systémové cesty.
  4. Při známé cestě, názvu nebo DAD vazbě vyhledat odpovídající záznamy v segments.jsonl; strom lze sestavit pomocí parent_path.
  5. Otevřít markdown_file a sekci s příslušnou explicitní kotvou. Pro strukturu podstromu použít index; pouhé hledání dalšího nadpisu stejné úrovně není spolehlivé při zanoření hlubším než šest úrovní.
  6. Ve výsledku uvést aplikaci, verzi, roli, systémovou cestu a XDS ID spolu s odkazem na konkrétní soubor a kotvu. Aktuální verzi brát z manifestu; starší verze uvnitř převzatého Markdownu je jeho původ, nikoli neaktuálnost reference.

Příklad přesného vyhledání ID v Pythonu po ověření integrity balíku:

import json
from pathlib import Path

root = Path(r"C:\flexideo\aplikace\moje-aplikace\DEV\dokumentace")
lookup = json.loads(
(root / "indexes/fdt/by-xds-id.json").read_text(encoding="utf-8")
)
xds_id = "10101127" # Zachovat jako řetězec, včetně počátečních nul.
for hit in lookup.get(xds_id, []):
print(hit["path"], hit["markdown_file"] + "#" + hit["anchor"])

Diagnostika chybějícího nebo neaktuálního výstupu​

ProjevCo ověřit
Nevznikl žádný MarkdownNeprázdné nastavení v konfiguraci konkrétní verze, dokončenou tvorbu stránek role 1 a dostupnost šablony. Samotná kompletace ani opakovaná instalace balík nevytvoří.
Soubory nejsou v roles/ ani web/Přípravný výstup je ve documentation/ verze; instalovaný výstup v nastaveném kořeni dokumentace.
Výstup je v jiné složcePorovnat aplikační nastavení se snapshotem ConfigVer/folders/documentation-folder. Hodnota je kořen, bez koncového fdt.
Přípravná složka je po instalaci prázdnáPo úspěšné instalaci se vlastněné přípravné soubory uklízejí. Zkontrolovat cílový kořen.
Typ nebo ID není v indexuOvěřit aktuální roli 1, verzi manifestu, přesný řetězec ID a případné odstranění definice. Historické definice se do reference nevracejí.
V cíli zůstává starý souborRozhoduje aktuální owned_files. Vzdálený transport staré soubory neodstraňuje; na disku lze uklízet jen soubory známé předchozímu manifestu.
Nesouhlasí kontrolní součtyVyčkat na dokončení distribuce a čtení opakovat; při trvalém nesouladu znovu vytvořit a distribuovat celý balík.
Chybí logický dad_path pomocného poleU file-size a change-flag je prázdná hodnota očekávaná; přesné pole určuje field_path.
I v rozdílovém režimu se tvoří všechny MarkdownyOvěřit úplnou obnovu role, přítomnost moderního místního základu, jeho integritu, aplikaci a otisk šablony. První běh po starším formátu je úplný.
V převzatém Markdownu je starší verzeOčekávaný původ posledního vytvoření. Aktuální snapshot určuje manifest a index; původ souboru uvádí documents.

Implementační zdroje a ověření​

Kontrakt je popsán v doménové dokumentaci Replikátoru docs/agent-context/fdt-reference-package.md a v ADR-0045, který nahrazuje úplnou regeneraci z ADR-0044 selektivní tvorbou Markdownů při zachování celého balíku. Implementaci tvoří:

  • product/CblvCmpFdtDocumentation.vb: příprava snapshotu, tvorba Markdownu a indexů, DAD mapování, manifest, validace, zápis a úklid balíku.
  • product/CblvCrpMaster.vb: zařazení generování po finálním uložení role 1.
  • product/CDatInstall.vb: přenos balíku do nastaveného kořene a úklid přípravy.
  • product/CdatTXT.vb: textový transport typu documentation-artifact.
  • make-fdt-markdown.xsl v systémové pracovní složce Replikátoru: podoba Markdownu; zdrojová verze je v repozitáři Flexideo-replicator-work-folder.

Regresní scénáře v toolkit/development/fdt-markdown/ ověřují transformaci, indexy, vícečetné DAD vazby, identitu, integritu, lokální aktualizaci a úklid nad syntetickými daty pro GUI i Headless sestavení. Pokrývají také update filtr, převzetí nezměněných typů, doplnění chybějících, změnu DAD/šablony, neplatný základ a zachování času nezměněného souboru. Lokální souborové scénáře vyžadují přepínač -AllowLocalWrites a používají vlastní dočasnou složku. Tyto testy nespouštějí replikaci skutečné aplikace ani uzavření verze. FTP a HTTP používají existující transport; nová integrační zkouška jejich distribuce není součástí ověření tohoto balíku.