Quality Dashboard
This dashboard tracks defects that reached dev-nest.thephenom.app (escaped the testing pyramid). Each defect is analyzed via Ishikawa fishbone RCA and categorized. The goal is to drive each category toward zero over time.
Defect Summary by Sprint
| Sprint | Materials | Methods | Machines | Measurement | Manpower | Environment | Total |
|---|---|---|---|---|---|---|---|
| Sprint 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| Sprint 1 | 3 | 2 | 1 | 2 | 1 | 1 | 10 |
| Cumulative | 3 | 2 | 1 | 2 | 1 | 1 | 10 |
Sprint 1: CesiumJS Foundation & 3D Tile Integration
Defects by Category
Defect Log
DEF-001: mapReady ReferenceError — runtime crash
Category: Materials (dead code left after migration)
Severity: Critical (site non-functional)
RCA: Removed mapReady state declaration but left 20+ references in effects and handlers.
Fix: 91ed101 — removed all dead Google Maps refs
Escaped because: No typecheck gate before deploy (Methods), no unit test for MapCard render (Measurement)
DEF-002: isRotating ReferenceError — runtime crash
Category: Materials (incomplete state cleanup)
Severity: Critical (site non-functional)
RCA: Removed rotation state block but left isRotating references in sidebar toolbar and mobile sheet.
Fix: 425b155 — restored isRotating state declaration
Escaped because: Same as DEF-001 — pyramid gates not yet enforced (Methods)
DEF-003: Camera pitch pointing into space
Category: Materials (library convention mismatch)
Severity: User-visible (camera flies up instead of down)
RCA: Full Ishikawa analysis
Fix: 2eb89a2 — changed pitch from -45 to -75
Escaped because: No unit test for flyTo orientation (Measurement), no code review dispatched (Methods)
DEF-004: Cesium Ion token prompt
Category: Materials (unnecessary dependency)
Severity: User-visible (confusing prompt on screen)
RCA: Default CesiumJS Viewer connects to Cesium Ion cloud service. We use Google 3D Tiles directly and don’t need Ion.
Fix: d5e7ab0 — set Ion.defaultAccessToken = ''
Escaped because: Not caught by any automated check (Machines — no lint rule for this)
DEF-005: Firebase auth failure — no markers loading
Category: Environment (missing credentials in build)
Severity: Functional (no data visible)
RCA: .env with VITE_FIREBASE_AUTH_EMAIL was gitignored and not present on ai build server. Vite bakes VITE_ vars at build time.
Fix: Transferred .env to ai, rebuilt with credentials baked in
Escaped because: Expected behavior on credential-less build — environment gap, not code bug
DEF-006: NestProvider lists fetch returning HTML
Category: Machines (API not deployed to dev-nest)
Severity: Non-blocking (graceful degradation)
RCA: The nest-api Cloudflare Worker is deployed for nest.thephenom.app, not dev-nest. API calls to /api/lists return the SPA HTML fallback.
Fix: Known limitation — API not yet wired to dev-nest domain
Escaped because: Expected for standalone Pages deploy without Worker binding
DEF-007: Package.json missing cesium/resium — CF Pages build failure
Category: Methods (deps installed locally but not committed)
Severity: Build failure (CF Pages)
RCA: npm install cesium resium was run on ai but package.json changes weren’t committed. CF Pages installs from committed package.json.
Fix: 0e6dd2f — committed package.json + package-lock.json
Escaped because: Local build worked (deps in node_modules), no CI build gate to catch (Machines)
DEF-008: Unused imports — PolylineGraphics, defined, HorizontalOrigin, HeadingPitchRange
Category: Materials (leftover imports from initial scaffold)
Severity: Low (bundle size, lint warning)
RCA: CesiumGlobe was scaffolded with imports for planned features (polylines, heading rays) that weren’t implemented yet.
Fix: e5fa867 — removed unused imports
Escaped because: noUnusedLocals catches this in strict TS but build on ai used vite build (skips tsc)
DEF-009: Magic number style: 2 and Cartesian3 as any for pixel offset
Category: Manpower (unfamiliarity with CesiumJS API)
Severity: Low (works but fragile)
RCA: Used raw integer for LabelStyle.FILL_AND_OUTLINE and wrong Cesium type (Cartesian3 instead of Cartesian2) masked with as any.
Fix: e5fa867 — LabelStyle.FILL_AND_OUTLINE + Cartesian2
Escaped because: Runtime behavior was correct, only discoverable by code review (Measurement — no test for label style)
DEF-010: RAF rotation loop running at 60fps when paused
Category: Machines (no perf monitoring)
Severity: Low (wasted CPU/battery)
RCA: requestAnimationFrame loop ran continuously even when isRotating was false. Loop body checked the flag but still scheduled next frame.
Fix: 0e6dd2f — early-return from useEffect when !isRotating
Escaped because: No performance monitoring or CPU profiling in pipeline (Machines)
Category Definitions
| Category | Description | Examples |
|---|---|---|
| Materials | Defects in code, dependencies, or data | Wrong values, missing abstractions, library misuse, dead code |
| Methods | Process gaps that allowed the defect to escape | Skipped gates, missing checklists, TDD not enforced |
| Machines | Tooling or infrastructure failures | CI gaps, linter blind spots, missing build steps |
| Measurement | Testing or observability gaps | Missing tests, no assertions, silent failures |
| Manpower | Knowledge or skill gaps | API unfamiliarity, assumptions, no peer review |
| Environment | External constraints that contributed | Time pressure, resource limits, missing credentials |
Trend Target
The goal is to see Materials and Methods defects decline sprint-over-sprint as:
- The testing pyramid (Layers 1-4) catches Materials defects before deploy
- Process enforcement (deploy gates) eliminates Methods defects
- CI/CD automation (GitHub Actions) eliminates Machines defects
A healthy project trends toward defects only in Environment (genuinely external) and Measurement (expanding test coverage into new areas).
RCA Archive
| ID | Sprint | Title | Primary Category | Link |
|---|---|---|---|---|
| RCA-003 | Sprint 1 | Camera pitch into space | Materials | Full analysis |
Related Documentation
- Admin Dashboard — feature overview and technical stack
- Infrastructure & Service Map — backend services powering the dashboard
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.