Bp3 initial release user test findings
UAT-0001: Existing account 10100 blocks starter-chart setup without a review path
- Status: Resolved
- Resolved: 2026-08-03
- Severity: Blocker
- Area: Setup & Onboarding
- Owning repository: bp3
- Environment: Initial-release user-test environment
Preconditions
An existing company account has code 10100.
Steps to reproduce
- Open Onboarding Setup.
- Select Install Starter Chart.
- Observe the setup status and message.
Expected result
BooksPlus presents a review workflow for adopting or resolving the existing account, and setup remains visibly incomplete until the conflict is resolved.
Actual result
Update: User selected existing company. It comes up but still shows 'blocked' for permissions setup, and button will not clear blockage. Once the existing company is selected, user can't go back and create a new company, so there is no path forward.
Recommended fix: Allow cancellation of original company selection and creation of new company; either allow clearance of blockage via existing button, or present next action so user can go forward or go back.
BooksPlus displays:
Starter chart code '10100' conflicts with an account that requires reviewed adoption.
No adoption or conflict-resolution action is available in the UI, while the chart setup item displays Complete.
User impact
The user cannot finish starter-chart installation or clear account-role readiness through the application UI.
Image available at: ~/projects/bp3-todo/curr-period-wb.png
Workaround
None through the application UI.
Resolution
Slice 3R2 now preflights and displays every collision, keeps readiness blocked while review is pending, permits explicit compatible adoption without changing account origin or history, and offers keep-existing-chart and cancel actions. Automated domain, desktop workflow, PostgreSQL, recovery, and readiness tests pass.
Retest result
Resolved in initial-release desktop UAT on 2026-08-03. The reported company- selection, permission-readiness, and starter-chart collision issues no longer reproduce within the selected company. The retest also exposed the separate workspace-level company-reselection limitation recorded as UAT-0003.
UAT-0002: Ledger register remains stale after successful posting
- Status: Resolved
- Resolved: 2026-08-03
- Severity: Major
- Area: Current Period Workbench / Ledger
- Owning repository: bp3
- Environment: Initial-release user-test environment
Steps to reproduce
- Open Ledger and note the posted-entry count.
- Return to Current Period and post a valid manual journal entry.
- Observe the successful
posted through Accountingresult. - Open Ledger again.
Expected result
Opening Ledger reloads the posted journal-entry register and displays the newly posted entry without requiring an application restart.
Actual result
Ledger retains its first loaded row set for the lifetime of the window. The successfully posted entry appears only after closing and reopening BooksPlus.
Related presentation finding
The Ledger register displays both Source ID and Source Document even though
the current Source Document column resolves to the same human-facing source
identifier. Remove the redundant Source ID column from this register while
retaining the canonical source reference and Source Document relationship in
accounting data, supporting registers, and drilldown.
Implemented resolution
Ledger navigation now reloads the posted journal-entry register every time.
Successful manual and Summary posting also refresh the register immediately.
The obsolete one-time load guard was removed, and regression coverage protects
all three successful posting paths plus navigation reload. No separate Refresh
button was added because Ledger navigation is the explicit refresh action. The
Ledger register now omits the redundant Source ID column while retaining
Source and Source Document; canonical source fields and drilldown remain
unchanged.
Retest result
Resolved in initial-release desktop UAT on 2026-08-03. The newly posted journal entry appears in Ledger without restarting BooksPlus, and the database-backed journal entry remains present after restart.
UAT-0003: No return to company selection after entering a company
- Status: Resolved
- Resolved: 2026-08-03
- Severity: Blocker
- Area: Setup & Onboarding / Company context
- Owning repository: bp3
- Planned slice: 15A1
- Environment: Initial-release user-test environment
Preconditions
The desktop actor can access an existing default company and may need to create or enter another company.
Steps to reproduce
- Start BooksPlus and select the default company.
- Enter the company workspace.
- Attempt to return to company selection or create another startup company.
Expected result
The user can leave the current workspace, return to the authorized company selection flow, and select or create another company without deleting or changing the first company. Entering the next company reconstructs all company-scoped workflows and visible state for that company.
Actual result
After the default company is selected, the workspace has no action that returns to company selection. The user cannot set up another company in the same application session.
User impact
The Step 15A0 new-company acceptance path cannot proceed after the user enters the default company, and a user who maintains more than one company is stranded in the first selected company.
Workaround
None through the current workspace.
Planned resolution
Slice 15A1 adds a visible Return to Company Selection action, preserves actor- to-company authorization, warns before discarding unfinished presentation input, reconstructs every company-scoped workflow, and clears or reloads all visible company-scoped state. This behavior is allowed by the canonical Company Identity and Context Contract and does not add cross-company accounting, copying, deletion, or permission authority.
Implemented resolution
Slice 15A1 adds a visible Return to Company Selection action with an explicit warning that unfinished presentation values will be discarded while saved company data remains unchanged. Confirming the return replaces the bound presentation state, clears direct company-scoped form inputs and selections, and reloads the actor's authorized company list. Every subsequent company entry reconstructs all company-scoped workflows and reloads Setup rather than reusing the prior workspace's one-time load state.
Focused application verification passed 27 tests with two expected PostgreSQL-gated skips. The two PostgreSQL company-entry tests and two presentation-session tests then passed against an isolated database, including two-company durability and authorization isolation. The full solution passed 1,234 tests with 102 expected PostgreSQL-gated skips. Desktop retest remains required before closing this finding.
Retest result
Resolved in production-mode desktop UAT on 2026-08-03. The user created and bootstrapped a production startup company, entered its workspace, returned to company selection through the confirmed warning, and then created another company or reselected an authorized production company. The five-step path completed successfully without resetting the existing database.
UAT-0004: Ledger omits journal-line account references
- Status: Resolved
- Severity: Major
- Area: Ledger
- Owning repository: bp3
- Planned slice: 15R1
- Environment: Initial-release user-test environment
Steps to reproduce
- Open Ledger after posting a journal entry.
- Review the displayed entry and its accounting lines.
Expected result
Each posted journal entry has a clear heading containing entry-level context, including its journal-entry number, posting date, financial period, currency, source, and explanation. Beneath that heading, each journal line shows at least the account code and should also show the account name, line description, debit, and credit. Debit lines appear before credit lines without changing their persisted line numbers. A compact Details action at the right of the entry heading opens the existing Support Detail drilldown for that entry.
Because the initial release is single-currency, currency may appear once in the entry heading instead of being repeated on every visible line. Financial period is also entry-level presentation. The persisted journal line continues to carry its explicit currency as required by canonical truth.
Actual result
Ledger renders one summary row per journal entry with totals, period, and currency, but it does not display the journal lines or their account codes and names.
User impact
The user cannot determine which accounts a posted entry debited or credited from the Ledger form, so the accounting effect is not meaningfully reviewable.
Workaround
None in the Ledger form.
Resolution
Slice 15R1 changes only the Ledger review projection and presentation. It groups each immutable posted entry under an entry heading and displays its persisted lines using same-company account code and name references. It does not change posting, stored journal-entry or line fields, account identity, period resolution, currency validation, source evidence, or audit behavior.
The entry heading now contains period and company currency, and each ordered line shows its account code with the account name stacked beneath it, description, debit, and credit. Debit lines display before credit lines without renumbering, and the entry-heading Details action opens the existing source-and-audit drilldown.
Retest result
Resolved by production-mode desktop UAT on 2026-08-03. The user confirmed the 15R1 Ledger entry-and-line presentation, including account code and name, debit-first detail ordering, and the Details link to the existing drilldown.
UAT-0005: Final Setup completion handoff and re-entry
- Status: Resolved
- Severity: Release gate
- Area: Setup & Onboarding / Current Period Workbench
- Owning repository: bp3
- Planned slice: 15A7
- Environment: Explicit development-mode user-test environment
Preconditions
Use the explicit development/test actor, company, and ordinary authorization checks. Preserve existing company data and evidence. The test may use either a reviewed posted opening entry or a truthful, evidence-backed not-required disposition; the other disposition is covered by the automated end-to-end regression. This test qualifies the functional completion handoff; it is not evidence of production permission readiness.
Steps to verify
- Complete every displayed Guided Setup item through one supported chart path and one opening-balance disposition.
- Confirm that Setup reports Onboarding complete, shows the concise fiscal calendar, chart, permissions, and opening-balance summary, and displays Enter Current Period.
- Choose Enter Current Period and confirm that the Current Period Workbench reloads the same company, reports onboarding complete, identifies the open period, and makes the governed manual-posting path available.
- Post one supported current-period manual journal entry with evidence, then confirm it through Ledger and Details.
- Return to Setup. Confirm that completion and the prior readiness evidence remain visible; no acknowledgement, opening entry, permission, period, or other setup fact was created by the handoff itself.
- Close and reopen BooksPlus, reselect the company, and confirm that Setup reevaluates to the same complete state and the handoff remains available.
Expected result
The handoff is visible only while every readiness item is currently complete. It navigates to a freshly loaded Current Period workspace without granting a permission, posting another entry, closing a period, starting conversion, or hiding Setup. Re-entry and restart preserve the completion evidence. If any governed subject is already stale in the selected test company, Setup must withhold the handoff and show the first incomplete item and recovery action.
Implemented resolution
Slice 15A7 adds an evaluated completion-handoff state, a concise completion panel, and an explicit Enter Current Period action. The action reloads Setup immediately before navigation and remains in Setup when completion changed. Automated regression covers both opening dispositions, starter/retained/imported chart paths, workflow reconstruction, later permission-subject invalidation, preserved stale evidence, and the existing first-current-period posting path. For explicit development/test mode, the five empty responsible-person inputs default to the signed-on actor display name without filling the external evidence reference/version or overwriting typed values. Production mode receives no responsibility defaults. The responsibility step presents labeled evidence and assignment inputs immediately after the blocker card, followed by its own acknowledgement action; it suppresses the duplicated subject-description list and distant generic action while that step is active.
Retest result
Passed in development-mode desktop UAT on 2026-08-13. The user completed the UAT-0005 workflow without reporting a remaining 15A7 blocker. This closes the functional UAT-0005 acceptance and does not qualify production authorization. UAT-0006 remains a separate release gate owned by Steps 15G and 15K.
UAT-0006: Production bootstrap cannot complete protected Setup actions
- Status: Open
- Severity: Release gate
- Area: Production identity and permissions / Setup & Onboarding
- Owning repository: bp3
- Planned dependency: 15G, with final qualification in 15K
- Environment: Initial-release production-mode user-test environment
Observed result
On 2026-08-13, a production-mode actor completed the visible initial administrator bootstrap and responsibility review, then attempted to prepare the Guided Setup fiscal calendar. BooksPlus denied the action with:
Not authorized. Actor lacks permission 'fiscal_calendar_profile.create_draft'.
The Initial Production Administrator bundle currently grants bootstrap,
user-management, role-permission-change, and audit-log-view permissions. The
desktop does not yet expose production role/permission administration, so the
actor has no supported desktop path to acquire the protected Setup permissions
needed to continue. Direct database intervention is not an acceptable UAT
recovery.
Dependency conflict
The former UAT-0005 wording required a production-mode completion walkthrough before Step 15A could close, while the release plan intentionally defers final production role templates, protected-action assignment, and their desktop administration to Step 15G. The bootstrap decision requires ordinary, explicit authorization and prohibits a hidden production full-access grant; it does not justify inventing an interim broad role in this finding.
Required resolution and retest
Step 15G must settle the production actor lifecycle, accepted minimum role templates or reviewed custom-role path, protected-action matrix, and supported role/permission administration. Its UAT must prove both denial and authorized success for the Setup actions needed by the selected startup path without development/test roles or direct database repair.
Step 15K must then rerun the complete production startup, Setup completion, Current Period handoff, protected first posting, Setup re-entry, and restart path from the supported release candidate. UAT-0006 remains open until that production path passes. Development-mode UAT-0005 has independently qualified the 15A7 functional handoff.