From 470450e5095db8d24b5b0e254fad3023d547bf52 Mon Sep 17 00:00:00 2001 From: Eric Rakestraw Date: Sat, 5 Sep 2026 13:24:54 +0000 Subject: [PATCH] Complete remote publication workstream --- docs/operations.md | 5 +++++ docs/policy/architecture.md | 10 +++++++--- docs/roadmap/implementation.md | 4 ++-- docs/roadmap/refactoring.md | 2 +- 4 files changed, 15 insertions(+), 6 deletions(-) diff --git a/docs/operations.md b/docs/operations.md index 4551199..c5e739b 100644 --- a/docs/operations.md +++ b/docs/operations.md @@ -405,6 +405,11 @@ Each mutable lock is an independent strict JSON object at from the exact canonical source. Listing validates every object in that reserved prefix and reports locks sorted by source. +Upgrades do not read, migrate, or delete the retired `{session_prefix}/locks.yml` +object. It has no effect on publication and may be removed manually after +verifying lock commands and publication behavior with the upgraded Narratio +version. No migration command is required. + Operational rules: - add uses conditional creation and reports an existing lock; diff --git a/docs/policy/architecture.md b/docs/policy/architecture.md index a64bf31..79a8769 100644 --- a/docs/policy/architecture.md +++ b/docs/policy/architecture.md @@ -202,9 +202,13 @@ the immutable commit manifest, and finally the current commit pointer. `current/commit-pointer.json` is the sole mutable selector and must be written exactly once, last. Failed, incomplete, skipped, or uncommitted publish attempts must not be presented as current remote state. Publish locks remain authoritative -and are not bypassed by a forced run. Mutable remote locks use provider-enforced -generation preconditions and are revalidated immediately before pointer -selection; loss of that check leaves the prior committed snapshot current. +and are not bypassed by a forced run. Each mutable remote lock is an independent +per-source object; lock mutations use provider-enforced generation preconditions. +Publish revalidates every initially unlocked participating source after writing +the immutable commit and before pointer selection. A lock observed then leaves +the prior committed snapshot current. A lock created after that final check may +race the pointer write; the commit protocol does not claim a stronger distributed +transaction boundary. Automatic local cleanup is permitted only after a successful publish commit, only when explicitly configured, and only through the path-safety guardrails. diff --git a/docs/roadmap/implementation.md b/docs/roadmap/implementation.md index 1c6cf7e..952b792 100644 --- a/docs/roadmap/implementation.md +++ b/docs/roadmap/implementation.md @@ -2,7 +2,7 @@ ## Status -Planned implementation for Workstream 8, **Remote publication, per-artifact +Completed implementation for Workstream 8, **Remote publication, per-artifact locks, and publish decomposition**, in [`refactoring.md`](refactoring.md). Workstreams 1 through 7 are complete prerequisites. This plan does not enter Workstream 9's cleanup-stage work. @@ -351,7 +351,7 @@ Independent objects are the sole lock authority. ## Stage 10 — Align Documentation And Close The Workstream -**Status:** Pending +**Status:** Completed ### Goal diff --git a/docs/roadmap/refactoring.md b/docs/roadmap/refactoring.md index 25f068c..c31f533 100644 --- a/docs/roadmap/refactoring.md +++ b/docs/roadmap/refactoring.md @@ -363,7 +363,7 @@ without treating private ordering or wording as compatibility behavior. ### Workstream 8 — Remote publication, per-artifact locks, and publish decomposition -**Status:** Pending +**Status:** Complete **Audit sources:** H04, H15, H18, H44, and C05.