Skip to content

Polish backlog & findings

What this is

Two streams of "known, tracked, not-yet-done" work:

  1. The app polish backlog — ~114 PB-NNN items in manpoweriq/docs/polish_backlog.md, surfaced during sprint work (the authoritative, living source).
  2. The wiki findings (F1–F9) — discrepancies and gaps this documentation effort surfaced while verifying claims against the running system.

Nothing here is a blocker; it's the honest "what's left" list.

Findings (F1–F9)

These were found while building this wiki (Phase 0 ground-truth, Phase 3 runtime verification, Phase 6 API generation). They are documented on the relevant reference pages and summarised here.

# Finding Severity Where
F1 No runtime path sets DemandPlanStatus.Locked — the state is defined but unreachable (publish/approve leaves the plan as-is). Either wire publish→lock or remove the state. Medium Demand API · Schema
F2 The seeded cross-pool lending rule's target was never reachable in the demo data — the lending path was exercised only via an added rule. Low (demo-data) Cross-pool history
F3 Attendance import rejects cross-midnight Time_Out — blocks accurate actuals for any shift ending at/after midnight. Medium Attendance API
F4 Flat seeded work-history made OFFDAY/OVERTIME equalization cluster at the "At" tier — resolved in Phase 3.1 by seeding work-history variance. Low (demo-data) — resolved Equalization history
F5 The RequiresApproval=true cross-pool block path is present and documented but was not exercised in a run (all demo lending rules are RequiresApproval=false). Low (coverage) Pools API
F6 A Planner cannot see per-rule ineligibility reasons — they're gated to allocation_run.debug (SYS_ADMIN only). The role that runs allocations can't see why a candidate was excluded. Medium (usability) Rosters & runs API
F7 No certifications UI — cert data is API-/import-only, with no view/manage screen in v1, despite certifications gating allocation. Medium Certifications (concept)
F8 Equalization tiers + the cross-pool eligible-reason are computed by the engine but not surfaced in the frontend (only the numeric score/eligibility shows). Low (visibility) Rosters & runs API
F9 The six /api/diagnostics/* controllers carry a self-documented pre-production cleanup obligation ([AllowAnonymous] + IsDevelopment(); three have a "remove or restrict before production" TODO). Logged to the app backlog as PB-114. Medium (security/cleanup) Diagnostics API

(Two further items — F-A and F-B — were screenshot-capture barriers during Phase 3.2, not product findings; they were resolved by recommending manual capture.)

The app polish backlog (PB-NNN)

The full list lives in manpoweriq/docs/polish_backlog.md (the source of truth — each entry names the sprint/task that surfaced it, the problem, options, and a recommendation). It is not reproduced in full here. By theme:

  • Test infrastructure — flaky parallel tests (PB-002), WAF test-project split (PB-022), CI orchestration (PB-045), provider-sensitive INSERT failures (PB-083). See Test patterns.
  • DemoDataSeeder — non-idempotent seed migrations vs truncation (PB-025), seeder shape/identifier drift (PB-026/027/028, A10/A12 repairs).
  • Allocation/run UX — duplicate-rule 409 (PB-001), run-detail enrichment (PB-055–061), "why not selected" (PB-057), score breakdown (PB-058).
  • Monthly roster — leave overlay, collapse, month picker, saved views, compare-mode (PB-063–069, 073–074).
  • Reports — equalization/utilization name joins (PB-111, 113), utilization export trio (PB-112).
  • Conventions/cleanupextractErrorMessage consolidation (PB-078), helper-extraction triggers (PB-085/087/091/092), perm cleanups (PB-086/089). See §G discipline.
  • Pre-production — diagnostics cleanup (PB-114 / F9), row_version sweep (PB-043), authorization tests (PB-038/084).