Resolve published_* snapshot column semantics (spec vs bDS2 vs RuDS three-way conflict) #79

Closed
opened 2026-07-20 19:43:59 +00:00 by hugo · 2 comments
Owner

Source: Audit section 2.10. Decision needed before implementation.

State of the world:

  • Spec specs/post.allium documents published_title/content/tags/categories/excerpt as "copy as of last publish. Used by changes_affect_published_content to decide when an edit reopens a published post" — but NO implementation uses them for that.
  • bDS2 never writes them on publish (nil at create/rebuild — ../bDS2/lib/bds/posts.ex:99, rebuild_from_files.ex:168; only passthrough via update attrs). Its reopen check compares updates against CURRENT field values.
  • RuDS writes them on every publish (engine/post.rs set_published_snapshot) and uses them as a discard fallback.

Task: Decide with the maintainer:

  • Option A (match bDS2, likely for DB parity): stop populating published_* on publish; drop the discard fallback (see discard-guard issue); reopen logic compares against current values + file body.
  • Option B: keep RuDS snapshots as an intentional improvement; then bDS2 rows lack them, so nothing may DEPEND on them for correctness on shared DBs.
    Then update specs/post.allium (entity Post comment + ReopenPublishedPost rule) and specs/schema.allium to describe the chosen semantics, and align code + tests. Validate specs with the allium CLI.

Acceptance: One coherent story across spec, RuDS, and bDS2-created databases; tests encode it.

**Source:** Audit section 2.10. Decision needed before implementation. **State of the world:** - Spec `specs/post.allium` documents published_title/content/tags/categories/excerpt as "copy as of last publish. Used by changes_affect_published_content to decide when an edit reopens a published post" — but NO implementation uses them for that. - bDS2 never writes them on publish (nil at create/rebuild — `../bDS2/lib/bds/posts.ex:99`, `rebuild_from_files.ex:168`; only passthrough via update attrs). Its reopen check compares updates against CURRENT field values. - RuDS writes them on every publish (`engine/post.rs` `set_published_snapshot`) and uses them as a discard fallback. **Task:** Decide with the maintainer: - Option A (match bDS2, likely for DB parity): stop populating published_* on publish; drop the discard fallback (see discard-guard issue); reopen logic compares against current values + file body. - Option B: keep RuDS snapshots as an intentional improvement; then bDS2 rows lack them, so nothing may DEPEND on them for correctness on shared DBs. Then update `specs/post.allium` (entity Post comment + ReopenPublishedPost rule) and `specs/schema.allium` to describe the chosen semantics, and align code + tests. Validate specs with the `allium` CLI. **Acceptance:** One coherent story across spec, RuDS, and bDS2-created databases; tests encode it.
hugo added the bug label 2026-07-20 19:43:59 +00:00
Author
Owner

Decision by maintainer: match bDS2 and update code and the spec accordingly.

Decision by maintainer: match bDS2 and update code and the spec accordingly.
Author
Owner

Implemented Option A in b8014e0 to match bDS2 and shared-database parity. Publishing no longer populates published_title/content/tags/categories/excerpt; pre-existing non-null values remain untouched but are behaviorally inert. Reopen decisions are tested against current metadata and the canonical file body, discard already restores from the file, and WordPress analysis/execution no longer uses published_content as a fallback or transient body store. Removed the obsolete snapshot writer and narrow query helpers made unused by the single-record publish update. Updated post.allium, schema.allium, and model documentation to state the compatibility-only semantics. Verified with Allium check/analyse, a full production-read audit, focused publish/reopen/discard/import tests, cargo fmt --check, cargo check --workspace, cargo machete --with-metadata, cargo build --workspace, and cargo test --workspace (all passed; one intentional model-download test ignored).

Implemented Option A in b8014e0 to match bDS2 and shared-database parity. Publishing no longer populates published_title/content/tags/categories/excerpt; pre-existing non-null values remain untouched but are behaviorally inert. Reopen decisions are tested against current metadata and the canonical file body, discard already restores from the file, and WordPress analysis/execution no longer uses published_content as a fallback or transient body store. Removed the obsolete snapshot writer and narrow query helpers made unused by the single-record publish update. Updated post.allium, schema.allium, and model documentation to state the compatibility-only semantics. Verified with Allium check/analyse, a full production-read audit, focused publish/reopen/discard/import tests, cargo fmt --check, cargo check --workspace, cargo machete --with-metadata, cargo build --workspace, and cargo test --workspace (all passed; one intentional model-download test ignored).
hugo closed this issue 2026-07-21 20:54:26 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: hugo/RuDS#79