Document reconciliation modes

This commit is contained in:
2026-06-08 18:36:07 +00:00
parent 93821ea6f9
commit ef0b6c1056
12 changed files with 161 additions and 35 deletions

View File

@@ -100,6 +100,9 @@ Each destination bundle path is managed by `.distributor.json`. This file is bot
- pipeline id;
- destination id;
- publication timestamp;
- state creation and update timestamps;
- single-owner state mode;
- reconciliation mode;
- the normalized source manifest used for publication;
- metadata for copied source outputs;
- metadata for generated outputs, such as HTML files;
@@ -110,11 +113,19 @@ A representative destination state file is:
```json
{
"schema_version": 1,
"schema_version": 2,
"distributor_version": "0.1.0",
"pipeline_id": "weather-daily",
"destination_id": "static-html",
"published_at": "2026-05-30T11:12:00Z",
"created_at": "2026-05-30T11:12:00Z",
"updated_at": "2026-05-30T11:12:00Z",
"state": {
"mode": "single_owner"
},
"reconciliation": {
"mode": "replace"
},
"source": {
"manifest": {
"schema_version": 1,
@@ -141,7 +152,9 @@ A representative destination state file is:
"transform": "markdown_to_html",
"sha256": "sha256:...",
"size": 23456,
"url": "https://reports.example.com/weather-daily/"
"url": "https://reports.example.com/weather-daily/",
"created_at": "2026-05-30T11:12:00Z",
"updated_at": "2026-05-30T11:12:00Z"
}
]
}
@@ -156,6 +169,8 @@ Destination comparison rules are based on `.distributor.json`:
- Existing state has the same source id and same `created` but different digest: fail as a conflict.
- Existing state has a different source id: fail as a conflict.
For older destination state, destination `reconciliation.mode` controls output updates. `replace` rewrites the managed output set to match the new plan. `merge` retains omitted managed outputs, overwrites only existing managed paths, and rejects planned paths that collide with unmanaged storage content.
## Publication and Transform Policy
Source files are canonical bundle artifacts. Transform outputs are derived publication artifacts.