Draft: feat(publish-confluence): export documentation to Confluence

Plan

  1. Prepare the complete documentation/material tree with deterministic identities, strict route normalization and explicit MDX/Changelog handling.
  2. Integrate the pinned publisher with acknowledged durable publication identities/receipts, exact dedicated-subtree ownership and non-destructive synchronization.
  3. Wire the component and verify repeated dedicated-site export/readback plus complete required source CI before review.

Closes #444.

Implemented source boundaries

  • Complete nested source/material staging, explicit MDX mapping, strict Markdown-AST URL normalization and complete captured Changelog expansion. Two offline conversions of the current 15 pages and 17 material files retain deterministic source identities and storage-format output with markdown-to-confluence==0.6.5.
  • Scope-bound saved source/directory page identities, fail-closed restoration/capture and exact-domain Cloud GET preflight with complete property pagination and repeated ownership/ancestry witnesses. Missing state never initializes a publication or adopts existing content.
  • Explicit new nonce-named child initialization, exact ownership marking and private interruption receipts. Explicit recovery is GET-only and finalizes only a recorded unchanged already-owned child; unknown IDs or missing ownership require reconciliation, not another create.
  • New injected publication transaction boundary at aa26bf9c: a private fsynced intent and acknowledged durable retention must precede publisher execution. Remote ownership is rechecked after retention; partial returned page IDs are preserved without success, and incomplete/unacknowledged receipts block automatic repetition. Identities remain outside the prepared tree. The pinned CLI policy retains attachments/comments/content state, rejects overwrite, validates URLs and disables notifications.

The transaction boundary requires injected durable-storage and publisher adapters. It does not implement the CI storage backend, expose a publishing CLI or call Confluence. These are publication-product identities/receipts, not agent queue or cycle checkpoints. All existing restore/capture/preflight/initialize/recover CLI behavior is retained.

Acceptance and remaining work

  • Complete source staging, normalization, explicit MDX and captured Changelog representation.
  • Scope-bound identity preparation, remote preflight, explicit non-adopting initialization and read-only interrupted-initialization recovery.
  • Acknowledged durable-admission/partial-capture primitive with guarded repeated identity reuse.
  • All 101 isolated Confluence regressions pass, including 16 new transaction cases; whitespace and GitLab CI lint pass. Ruff adds no diagnostic against the same seven inherited findings.
  • Complete required current-head CI/children/cleanup after the new source increment.
  • Implement concrete durable CI state/receipt retention and reconcile interrupted publication without automatic recreation.
  • Wire component inputs, the actual pinned publisher and complete material synchronization.
  • Export current docs to an owned dedicated subtree on https://xrow.atlassian.net/ and verify remote content/material plus repeated publication, preserving unrelated attachments/comments/content state.
  • Complete documentation, final current-head diff/rebase/feedback and DoD before review.

Current validation boundary

Complete amended-source CI is running at aa26bf9c; it is not passing acceptance. Admission followed the fully paginated 79-project/six-status inventory (one independent fork-fix root only), fresh project/main-dev-idle, access/assignment/source/feedback and no-duplicate checks. The preceding source lifecycle is freshly inspected across 67 successful pipelines and 262 jobs, with all six cleanup paths successful and actual owned-resource removal/destruction traces verified. Its five existing allowed failures remain visible. That predecessor does not validate the new head.

Keep draft/in-progress without reviewers. No tenant request, live initialization, documentation publication, credential change or CI-policy bypass occurred. The deleted historical lifecycle remains unavailable; current cleanup does not reconstruct it.

Edited by Eugene Harold Krabs

Merge request reports

Loading
Loading