# Current Product Backlog This document records the next agreed product improvements. It describes requirements and intended sequencing, not proof of implementation. ## Circuit List Editor - Collect the remaining editor interaction issues before changing additional behavior. ## Distribution Board Components and Protection Groups - [x] Implement the agreed protected circuit-group and distribution-board component model in phased work packages. - [x] Phase A: central protection catalog, validation, defaults and pure grouped BMK rules. - [x] Phase B1: relational group, component and protection tables with shared BMK uniqueness. - [x] Phase B2: complete snapshot/transfer schema for the supported project state. - [x] Phase C1: new-board command with three groups and fixed header components. - [x] Phase C2a1: persistent insert/delete commands for mutable group protection and auxiliary components. - [x] Phase C2a2: component update and reorder commands. - [x] Phase C2b1: empty-group insert/update/delete commands. - [x] Phase C2b2: complete group reorder command. - [x] Phase D1a: deterministic collision-aware group-renumber plan. - [x] Phase D1b: persistent collision-safe group-renumber command. - [x] Phase D2a: deterministic same-category circuit-move plan. - [x] Phase D2b: persistent same-category circuit-move command. - [x] Phase D3a: complete validated group-subtree snapshot and warning summary. - [x] Phase D3b: persistent populated-group delete/restore command. - [x] Phase E1: tree read model for components, groups and protection devices. - [x] Phase E2a: pure header/group/footer structure projection. - [x] Phase E2b: render the structure projection in the editor grid. - [x] Phase E3a: create, edit and delete mutable group and footer components. - [x] Phase E3b1: create, rename and safely delete empty circuit groups. - [x] Phase E3b2a: persistent circuit-protection update command. - [x] Phase E3b2b: circuit-protection defaults on insert and editor modal. - [x] Phase E4a: persistent same-category group reorder controls. - [x] Phase E4b: explicit group renumber, circuit moves and populated-delete warning. - [x] Explicit same-category group renumbering updates prefixes and all child BMK atomically. - [x] Single-circuit moves between same-category groups with automatic next-free BMK assignment. - [x] Populated-group delete warning and explicit subtree deletion. - [x] Phase E: editor projection and editing. - [x] Phase F: documentation and full GUI verification. - [ ] Keep full electrical sizing and cable-dimensioning rules separate until the planner supplies the calculation requirements. The optional per-circuit cable sizing module (`docs/cable-sizing-module.md`) exists; its supported tables were confirmed against DIN VDE 0298-4:2023-06 with Berichtigung 1:2023-10. Unsupported arrangements stay explicitly blocked. - Detailed specification: `docs/spec/09-distribution-board-components-and-protection-groups.md` ## First Release Baseline The pre-release cleanup established the following compatibility boundary: - [x] Pre-baseline databases, portable JSON exports, logical snapshots and persisted command histories are explicitly unsupported. - [x] Migration `0000` builds the complete supported schema on an empty database. - [x] The development migration chain and Drizzle metadata were replaced before any supported release depended on them. - [x] Upgrade-only database, snapshot and command compatibility paths were removed. - [x] Pre-cleanup development history remains available through Git history. - [x] Clean installation, migration, startup and core workflows were verified against an empty database. - [ ] Mark this compatibility boundary with the first supported release tag. - After that release, every published migration is immutable and later schema changes must use new additive migrations. ## Project History - [x] Every listed logical snapshot, including automatic snapshots, must be explicitly restorable from the project history UI. - [x] Show which project change produced a snapshot. Prefer immutable revision metadata over storing a second free-form description of the same change. - [x] Keep restoration auditable as a new project revision and preserve persistent undo/redo. ## Distribution Boards - [x] Assign an optional project floor to a distribution board. - [x] Store a supply classification for each distribution board: - `AV` (Allgemeine Stromversorgung) - `SV` (Sicherheitsstromversorgung) - `EV` (Ersatzstromversorgung) - `USV` (Unterbrechungsfreie Stromversorgung) - `MSR` (Mess-, Steuerungs- und Regelungstechnik) - `SiBe` (Sicherheitsbeleuchtung) - [x] Let project settings select which catalog supply types are used in a project. Distribution-board dialogs offer only that selection; a type in use cannot be disabled. - [x] Include both fields in project snapshots and portable project export/import. - [x] Persist changes through project commands so they remain undoable after a restart. ## Device Voltage Derivation - [x] Derive voltage from the selected phase type and the project settings: - single-phase uses the project's single-phase voltage; - three-phase uses the project's three-phase voltage. - [x] Voltage is not editable on global devices, project devices or circuits. Global devices store only their phase; copying one into a project derives the target project's voltage. - [x] Project-device voltage follows its phase. Circuit voltage follows the section phase; an unassigned circuit is three-phase only when all assigned device rows with a valid phase are three-phase. - [x] Changing project voltage settings updates all project devices and circuits atomically in the same persistent Undo/Redo step. - [x] Baseline migration `0000` stores only canonical derived values. Pre-baseline imports are intentionally unsupported. ## Building Classification - [x] Store whether a project represents a public building. - [x] Edit the value in the project settings and preserve it through persistent Undo/Redo, snapshots and portable project transfers. - [x] Provide the value as an explicit future sizing input for selecting halogen-free cables and lines; automatic sizing remains deferred. ## Circuit List Power Summary - [x] Show the total power of every circuit section. - [x] Show the unadjusted total power of the complete distribution board. - [x] Store a distribution-board simultaneity factor between zero and one in the distribution-board settings. - [x] Show the distribution-board total after applying that factor. - [x] Preserve the factor in project commands, snapshots and portable project transfers. - [x] Keep column visibility and order as a project-specific UI preference so all distribution boards in the same project open with the same columns. ## Integrated Contributor Features (September 2026) - [x] Client ids without secure-context browser APIs (`createClientId`). - [x] Icon actions, compact column headers and the AMEV picker in the circuit list; icon actions and collapsible filters on the project overview. - [x] Print view with cover, board overview, board plans, board info card and office branding. - [x] Buildings above floors and a dedicated building structure page. - [x] Optional net room area with sums per floor and building. - [x] Optional cable-sizing module for one circuit on demand (DIN VDE 0298-4:2023-06 with Berichtigung 1). - [x] Rough power balance for LPH 2/3 by cost group, including the comparison with the detailed balance and the explicit copy of one row as a ProjectDevice. Open follow-ups (Gitea issues): logical feed link between distribution boards (#3), bill of quantities export (#5), area-based loads in W/m² for ProjectDevices and device rows (#20). ## Recommended Sequence 1. [x] Distribution-board floor and supply fields. 2. [x] Device voltage derivation without overrides. 3. [x] Snapshot-to-revision descriptions and history presentation. 4. [x] Distribution-board power summary and project column layout. The Revit/CSV/IFCGUID round-trip follows the distribution-board component foundation as a separate jointly planned phase and must not be inferred from these tasks. It is currently deferred and will later use the CSV export/import of the Linear plugin in Revit, not Dynamo.