bDS2:../bDS2/lib/bds/maintenance/diff_reports.ex (~lines 60-92) emits diff reports with entity_type "categories" (list diff), "category_meta" (per-category settings), "publishing" (ssh_host/ssh_user/ssh_remote_path/ssh_mode fields), comparing DB-held metadata state against meta/*.json. bDS2 keeps a DB copy of metadata via settings rows (../bDS2/lib/bds/metadata.expersist_setting).
Current behaviour (RuDS):crates/bds-core/src/engine/metadata_diff.rs emits only entity_type "project"; repair returns "unsupported metadata diff entity type" for categories/category_meta/publishing. RuDS has no DB copy of these (meta/*.json is the single source — engine/meta.rs), so there is currently nothing to diff.
Task: Decide the approach with the maintainer: (a) mirror bDS2 by persisting metadata state in the settings table (schema.allium Setting exists) and diffing it against the files, or (b) declare file-only as intentional and update specs/metadata_diff.allium + remove the dispatch entries. If (a): add settings persistence in engine/meta.rs mutations, diff reports, both repair directions, and the metadata diff UI (bds-ui/src/views/metadata_diff.rs) so the three-way sync rule (metadata ↔ diff tool ↔ rebuild, per AGENTS.md) holds.
Acceptance: Either bDS2-equivalent diff coverage with tests, or spec updated + validated with allium and dispatch table cleaned.
**Source:** Audit section 2.14.
**Spec:** `specs/metadata_diff.allium` RepairMetadataDiffItem dispatches entity types `project | categories | category_meta | publishing` to project metadata sync/flush.
**bDS2:** `../bDS2/lib/bds/maintenance/diff_reports.ex` (~lines 60-92) emits diff reports with entity_type "categories" (list diff), "category_meta" (per-category settings), "publishing" (ssh_host/ssh_user/ssh_remote_path/ssh_mode fields), comparing DB-held metadata state against meta/*.json. bDS2 keeps a DB copy of metadata via settings rows (`../bDS2/lib/bds/metadata.ex` `persist_setting`).
**Current behaviour (RuDS):** `crates/bds-core/src/engine/metadata_diff.rs` emits only entity_type "project"; repair returns "unsupported metadata diff entity type" for categories/category_meta/publishing. RuDS has no DB copy of these (meta/*.json is the single source — `engine/meta.rs`), so there is currently nothing to diff.
**Task:** Decide the approach with the maintainer: (a) mirror bDS2 by persisting metadata state in the settings table (schema.allium Setting exists) and diffing it against the files, or (b) declare file-only as intentional and update `specs/metadata_diff.allium` + remove the dispatch entries. If (a): add settings persistence in engine/meta.rs mutations, diff reports, both repair directions, and the metadata diff UI (`bds-ui/src/views/metadata_diff.rs`) so the three-way sync rule (metadata ↔ diff tool ↔ rebuild, per AGENTS.md) holds.
**Acceptance:** Either bDS2-equivalent diff coverage with tests, or spec updated + validated with `allium` and dispatch table cleaned.
hugo
added the bug label 2026-07-20 19:44:01 +00:00
Implemented in 2fc683d. RuDS now stores project-scoped database snapshots for project.json, categories.json, category-meta.json, and publishing.json; reports categories, category_meta, and publishing field drift; and supports both repair directions with the same all-metadata synchronization semantics as bDS2. All desktop, TUI, remote-server, Lua, WordPress import, project-open/create, deletion, and rebuild mutation/lifecycle paths keep snapshots and portable files aligned. Internal snapshots are hidden from user settings, rebuilt from filesystem metadata, and removed with the project. The existing metadata diff UI renders and repairs the new entity types. README and metadata_diff.allium were updated. Neutral review against the issue, bDS2 repair/settings behavior, and Allium found a legacy server/TUI initialization gap, which was fixed and regression-tested. Verification: allium check specs; allium analyse specs; cargo fmt --all -- --check; cargo check --workspace; cargo machete --with-metadata; cargo build --workspace; cargo test --workspace; git diff --check.
Implemented in 2fc683d. RuDS now stores project-scoped database snapshots for project.json, categories.json, category-meta.json, and publishing.json; reports categories, category_meta, and publishing field drift; and supports both repair directions with the same all-metadata synchronization semantics as bDS2. All desktop, TUI, remote-server, Lua, WordPress import, project-open/create, deletion, and rebuild mutation/lifecycle paths keep snapshots and portable files aligned. Internal snapshots are hidden from user settings, rebuilt from filesystem metadata, and removed with the project. The existing metadata diff UI renders and repairs the new entity types. README and metadata_diff.allium were updated. Neutral review against the issue, bDS2 repair/settings behavior, and Allium found a legacy server/TUI initialization gap, which was fixed and regression-tested. Verification: allium check specs; allium analyse specs; cargo fmt --all -- --check; cargo check --workspace; cargo machete --with-metadata; cargo build --workspace; cargo test --workspace; git diff --check.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Source: Audit section 2.14.
Spec:
specs/metadata_diff.alliumRepairMetadataDiffItem dispatches entity typesproject | categories | category_meta | publishingto project metadata sync/flush.bDS2:
../bDS2/lib/bds/maintenance/diff_reports.ex(~lines 60-92) emits diff reports with entity_type "categories" (list diff), "category_meta" (per-category settings), "publishing" (ssh_host/ssh_user/ssh_remote_path/ssh_mode fields), comparing DB-held metadata state against meta/*.json. bDS2 keeps a DB copy of metadata via settings rows (../bDS2/lib/bds/metadata.expersist_setting).Current behaviour (RuDS):
crates/bds-core/src/engine/metadata_diff.rsemits only entity_type "project"; repair returns "unsupported metadata diff entity type" for categories/category_meta/publishing. RuDS has no DB copy of these (meta/*.json is the single source —engine/meta.rs), so there is currently nothing to diff.Task: Decide the approach with the maintainer: (a) mirror bDS2 by persisting metadata state in the settings table (schema.allium Setting exists) and diffing it against the files, or (b) declare file-only as intentional and update
specs/metadata_diff.allium+ remove the dispatch entries. If (a): add settings persistence in engine/meta.rs mutations, diff reports, both repair directions, and the metadata diff UI (bds-ui/src/views/metadata_diff.rs) so the three-way sync rule (metadata ↔ diff tool ↔ rebuild, per AGENTS.md) holds.Acceptance: Either bDS2-equivalent diff coverage with tests, or spec updated + validated with
alliumand dispatch table cleaned.decision by maintainer: follow bDS2 behaviour and update code and spec to reflect that.
Implemented in
2fc683d. RuDS now stores project-scoped database snapshots for project.json, categories.json, category-meta.json, and publishing.json; reports categories, category_meta, and publishing field drift; and supports both repair directions with the same all-metadata synchronization semantics as bDS2. All desktop, TUI, remote-server, Lua, WordPress import, project-open/create, deletion, and rebuild mutation/lifecycle paths keep snapshots and portable files aligned. Internal snapshots are hidden from user settings, rebuilt from filesystem metadata, and removed with the project. The existing metadata diff UI renders and repairs the new entity types. README and metadata_diff.allium were updated. Neutral review against the issue, bDS2 repair/settings behavior, and Allium found a legacy server/TUI initialization gap, which was fixed and regression-tested. Verification: allium check specs; allium analyse specs; cargo fmt --all -- --check; cargo check --workspace; cargo machete --with-metadata; cargo build --workspace; cargo test --workspace; git diff --check.