Browse documents

QA Execution Report — Tsumugi SFMS

Source suite: docs/qc/Atlas_QA_TestCases.xlsx (375 cases across 14 categories). Executed by: ego lite (ego-browser) driving the running dev app through the real auth stack. Date: 2026-07-02 · Environment: pnpm dev on macOS against MongoDB Atlas (KTC seed), fresh telemetry fixture injected for live CPMS/EMS values. Filled workbook: Tsumugi_QA_TestCases_Executed.xlsx — Score (col K) written per executed case; Result (col L) auto-computes (≥7 = PASS); Notes (col N) carry the evidence / N/A reason. The original Atlas_QA_TestCases.xlsx is left untouched.


1. Headline

DispositionCountof 375
Executed — PASS6718%
Executed — partial/FAIL51%
N/A (not testable in this dev build)27774%
Not run this pass (present, not exercised)267%

Of what was executed, 67/72 pass (93%). The five non-passes are capability-present-but-misses-a-numeric/format-criterion, not broken features. The large N/A bucket reflects that this build implements the functional application but not the production/enterprise/infra layer (Phase 9 and external integrations) — which is exactly the gap the suite is designed to expose.


2. Executed results by category

SheetExecutedPassPartial/FailN/ANot-run
3. API151501411
4. Platform5502213
5. Security550410
6. Design550200
7. UI330311
8. UX000300
9. Performance000200
10. Accessibility330161
11. Compatibility110140
12. Integration000200
13. AI440160
14. CPMS1413160
15. EMS1511490
16. Mobile & PWA220180

3. What passed (highlights, all live-verified via ego lite)

API / Platform. OpenAPI 3.1.0 published (77 paths) · Swagger + Scalar reachable · credential login (owner/member/viewer) · bad-password → generic error with no user enumeration · full asset CRUD (201/200/200/204→404) · invalid payload → 422 field-level · consistent error envelope {error:{code,message}} · pagination · SSE telemetry stream opens · audit log populated on mutation · health 200 · MONGODB_URI loads.

Security / RBAC. Deny-by-default (viewer writes → 403) · viewer audit read → 403 · no user enumeration · session cookie httpOnly (absent from document.cookie) · OT safety: BMS write requires two-person approvalpending_approval (SEC-046).

Design / UI / A11y. Light + dark theme toggle · prefers-reduced-motion honored · token-driven styling (3 documented data-viz hex exceptions) · no overflow at 1440px · ⌘K command palette · visible focus ring · html lang set · valid PWA manifest · 360px reflow on core routes.

AI. Chat streams a grounded reply ("There is 1 open work order") · cost tracked (openai · $0.0001) · unsafe "delete all assets" refused ("I cannot delete assets…").

CPMS (13/14). Plant kW/RT from telemetry · GL36 staging + thresholds · AI rationale · advisory-only via governed control · CHWS + condenser setpoint-reset · finding → work order + lifecycle ack · what-if reproduces baseline (calibrated) · circuit breaker blocks control (409) · control write denied without permission · schematic + widgets render.

EMS (11/15). Peak demand · TOU tariff blocks reconcile exactly · demand charge · Scope 2 location + market carbon · anomaly detection · DR sheddable execution + M&V · NILM heuristic (Σ100%) · Vision 2050plus alignment · widgets.


4. The 5 partial/FAIL (honest gaps — capability present, criterion not met)

IDCriterionResultScore
CPM-011FDD fault library ≥30 rulesEngine works (scan/detect/auto-resolve/→WO) but ~5 rules implemented, not ≥305
EMS-009Baseline CV(RMSE) ≤10%Regression works; CV(RMSE) 12.9% on the flat synthetic fixture (needs representative data)6
EMS-016AI advisor ≥5 recommendationsAdvisor returns 4 ranked recs with savings (target ≥5)6
EMS-020ESG monthly reconciliation → PDFReport generated (JSON); PDF/XLSX export is via Report Studio, not the ESG endpoint6
EMS-021GHG Scope 1+2 → PDF+XLSXScope 1+2 content present; annual PDF+XLSX export not built6

5. Why 277 cases are N/A (not testable in this dev build)

These are not failures — the dev environment doesn't include the production/enterprise surface the cases target:

  • Enterprise auth — OIDC/SAML SSO, MFA-required-admin, WebAuthn, JWT-TTL/refresh rotation, SCIM.
  • Ingest & integrations — MQTT/BACnet/edge gateway, weather/M365/Teams/HRIS/ERP, outbound/inbound webhook HMAC, large KTC file imports.
  • Infra & ops — rate limiting, BullMQ/Redis jobs, email, object store + antivirus, OpenTelemetry/Prometheus/SLO, feature flags, health of external deps.
  • Security hardening (Phase 9) — TLS/at-rest/headers/residency, SAST/dep-scan/SBOM/gitleaks, pentest, injection/SSRF/XSS/CSRF suites, DSAR/privacy.
  • Performance (all 20) — need k6 / Lighthouse / soak harnesses.
  • Cross-browser/OS/device — only Chromium (ego lite) available; Safari/Firefox/Edge, Windows/Ubuntu, iOS/Android, real PWA install, offline queue, push, camera, QR, swipe.
  • Accessibility depth — axe-core + screen-reader + manual audits.
  • Features beyond current scope — TS SDK, soft-delete/trash, deprecation headers, correlation IDs, EMS day-ahead forecast, baseline approval flow, accept-rec-as-workflow, IPLV/approach KPIs.

The 26 "not run" are UI/AI/CPMS cases that are built and plausibly pass but weren't exercised in this automated pass (e.g. widget-kind matrix, tables, modals, workflow designer, RAG citations, provider switch) — candidates for a follow-up targeted run.


6. Verdict

  • The functional core (API, RBAC, auth-reject, CRUD, CPMS, EMS, AI safety, theming, PWA basics) is solid — 93% of executed cases pass, and the failures are transparent scope/threshold gaps, not defects.
  • The suite correctly surfaces that production-readiness (Phase 9) and enterprise integrations are outstanding — consistent with the project's own status (docs/engineering/01_Status.md, docs/engineering/qa_readme.md).
  • Recommended next runs: (1) exercise the 26 "not-run" UI/AI cases; (2) stand up axe-core + Lighthouse + k6 for the accessibility/performance sheets; (3) close the 5 partials (FDD rule library, baseline data quality, ESG PDF export).

Scores are recorded in Tsumugi_QA_TestCases_Executed.xlsx; open it to see per-case PASS/FAIL/NOT-RUN (auto-computed) with evidence in the Notes column.