IntegrityStudio.ai Bugfix Analysis and Sentry Configuration Improvements

Comprehensive error analysis identifying 7 bugs across IntegrityStudio.ai with prioritized bugfix plan, plus Sentry plugin configuration improvements for reliable source map uploads.

IntegrityStudio.ai Bugfix Analysis and Sentry Configuration Improvements

Session Date: 2025-12-01 Project: IntegrityStudio.ai - React/TypeScript Web Application Focus: Error analysis, bugfix planning, and build configuration improvements Session Type: Analysis and Configuration

Executive Summary

Conducted a comprehensive error analysis of the IntegrityStudio.ai codebase, identifying 7 distinct bugs across accessibility, TypeScript linting, React hooks, and build optimization categories. Created a detailed bugfix plan with prioritized fixes ranked by severity (2 Critical, 2 High, 3 Medium). Additionally, improved the Sentry Vite plugin configuration to handle credential validation gracefully and prevent CI/CD failures.

The bugfix plan estimates 6-8 hours of implementation work to achieve zero ESLint errors, full accessibility compliance, and a 41% bundle size reduction (1.18MB → ~700KB).

Key Metrics: | Metric | Value | |——–|——-| | Errors Identified | 7 | | Critical Severity | 2 | | High Severity | 2 | | Medium Severity | 3 | | Estimated Fix Time | 6-8 hours | | Expected Bundle Reduction | 41% |

Error Analysis Results

Error Sources Checked

Source Results
Sentry Configured (DSN found in .env)
Application Logs No log files (gitignored)
GitHub Issues 0 open issues
ESLint 4 errors, 6 warnings
Build Output 1 chunk size warning
Code TODOs 2 accessibility-related

Prioritized Error List

CRITICAL PRIORITY

Error 1: ARIA Prohibited Attribute Violations

  • Location: src/features/contact/components/ContactInfo.tsx:46
  • Issue: <address role="list"> violates ARIA - address elements cannot have role overrides
  • Impact: Legal compliance risk (ADA, Section 508), excludes screen reader users
  • Evidence: Tests disabling aria-prohibited-attr axe rule to pass

Error 2: TypeScript Unused Variables

  • Locations:
    • tests/accessibility/a11y-compliance.test.tsx:115 - unused user
    • tests/accessibility/a11y-compliance.test.tsx:132 - unused user
    • tests/utils/semantic-validators.ts:5 - unused expectSectionLink
  • Impact: Breaks CI/CD with strict linting

HIGH PRIORITY

Error 3: React Hook Exhaustive Deps

  • Location: src/hooks/useSchemaCache.ts:65
  • Issue: Missing isCached dependency in useEffect
  • Impact: Potential stale closures, unpredictable behavior

Error 4: CommonJS Require Import

  • Location: tests/utils/test-utils.tsx:99
  • Issue: require() style import forbidden in TypeScript
  • Impact: Type inference issues, inconsistent import patterns

MEDIUM PRIORITY

Error 5: React Fast Refresh Warnings (2 occurrences)

  • Location: AnalyticsProvider.tsx lines 236, 257
  • Issue: Mixed component and hook exports break hot reload

Error 6: Unused ESLint Directives (2 occurrences)

  • Location: mcp.ts lines 163, 172
  • Issue: Unnecessary disable comments for resolved issues

Error 7: Bundle Size Warning

  • Current: 1.18MB (2.37x recommended limit)
  • Impact: Slower initial page load, LCP/FCP degradation

Sentry Configuration Improvements

Problem Statement

The Sentry Vite plugin was configured to use environment variables directly without validation, causing potential build failures when credentials were missing or misconfigured in non-production environments.

Implementation

File: configs/build/vite.config.ts

// Sentry source map upload configuration
// Required Doppler secrets:
//   - SENTRY_ORG_SLUG: Organization slug from Sentry
//   - SENTRY_PROJECT_SLUG: Project slug from Sentry settings
//   - SENTRY_AUTH_TOKEN: User auth token with project:releases scope
const sentryOrg = process.env.SENTRY_ORG_SLUG;
const sentryProject = process.env.SENTRY_PROJECT_SLUG;
const sentryAuthToken = process.env.SENTRY_AUTH_TOKEN;
const isProduction = process.env.NODE_ENV === "production";
const isCi = Boolean(process.env.CI);
const sentryEnabled =
  (isProduction || isCi) &&
  Boolean(sentryOrg && sentryProject && sentryAuthToken);

sentryVitePlugin({
  org: sentryOrg,
  project: sentryProject,
  authToken: sentryAuthToken,
  disable: !sentryEnabled,
  silent: !sentryEnabled,  // Prevents errors when disabled
  // ...
})

Key Improvements

Aspect Before After
Credential Validation None Full validation before enable
Environment Check NODE_ENV !== "production" Production OR CI required
Error Handling Build fails on missing creds Silent mode, graceful skip
Documentation Minimal Comprehensive inline docs

Bugfix Plan Created

Plan Location

~/dev/active/bugfix-integritystudio-errors-2025-11-30/plan.md

Phase 1: Quick Wins (1-2 hours)

  1. Fix unused variables (3 test files)
  2. Remove unused ESLint directives
  3. Convert require() to ES6 import

Phase 2: Critical Fixes (2-3 hours)

  1. Fix ARIA violation in ContactInfo
  2. Fix React hook dependency

Phase 3: Performance (2-3 hours)

  1. Extract analytics hooks for Fast Refresh
  2. Implement bundle code splitting

Expected Outcomes

Metric Before After Improvement
ESLint Errors 4 0 -100%
ESLint Warnings 6 0 -100%
ARIA Violations Hidden 0 Full compliance
Bundle Size 1.18MB ~700KB -41%
Lighthouse A11y ~95 100 +5 points

Git Commits

Commit Description Files
88008c64 build(vite): improve sentry plugin configuration 1

Files Modified

Modified Files

  • configs/build/vite.config.ts (+26/-5 lines) - Sentry plugin improvements

Files Created

  • ~/dev/active/bugfix-integritystudio-errors-2025-11-30/plan.md - Detailed bugfix plan

Key Decisions and Trade-offs

Decision 1: Conditional Sentry Enable Logic

Choice: Require both production/CI environment AND valid credentials Rationale: Prevents false positives, ensures source maps only upload when meaningful Alternative Considered: Always attempt upload, let it fail Trade-off: Local dev builds never upload (acceptable - not needed)

Decision 2: Silent Mode When Disabled

Choice: Enable silent: true when Sentry is disabled Rationale: Prevents console noise and error messages in dev environment Trade-off: Less visibility into why uploads are skipped (documented in comments)

Pre-commit Hooks

  • Enable strict ESLint in husky + lint-staged
  • Add exhaustive-deps to required rules

CI/CD Enhancements

  • Add aria-prohibited-attr to mandatory accessibility checks
  • Implement bundle size monitoring with fail thresholds
  • Run Lighthouse accessibility audits on PRs

Code Quality

  • Extract shared hooks to separate files (Fast Refresh compatibility)
  • Document ARIA requirements in component templates

Next Steps

Immediate

  1. Begin Phase 1 quick wins (unused variables, directives)

Short-term (Next Session)

  1. Fix ARIA violation in ContactInfo component
  2. Fix React hook dependency in useSchemaCache

Medium-term

  1. Implement bundle code splitting strategy
  2. Add CI/CD accessibility monitoring

References

Code Files

  • configs/build/vite.config.ts:1-70 - Sentry configuration
  • tests/accessibility/a11y-compliance.test.tsx:41-77 - ARIA violation evidence
  • src/features/contact/components/ContactInfo.tsx:46 - ARIA violation source

Documentation

  • 2025-11-24-e2e-test-optimization-tiered-browser-strategy.md - Previous testing work
  • 2025-11-23-sentry-phase-4-error-tracking-rollout.md - Sentry integration