Skip to content

Instantly share code, notes, and snippets.

@hmseeb
Created February 13, 2026 11:55
Show Gist options
  • Select an option

  • Save hmseeb/0252588ed85257e0de113066362e76af to your computer and use it in GitHub Desktop.

Select an option

Save hmseeb/0252588ed85257e0de113066362e76af to your computer and use it in GitHub Desktop.
LeadrWispr v0.5.65 — Full Platform Human Test Checklist

Master Testing Checklist

Purpose: Full platform human test checklist for LeadrWispr App Version: 0.5.65 Last Updated: 2026-02-13 Estimated Time: ~4 hours (full), ~15 min (smoke test)


Smoke Test (15 min)

Quick sanity check before deeper testing:

  • npm start launches without crash
  • Sign in with email/password succeeds
  • Org loads, settings accessible
  • Start AI session with any profile — audio captures, responses stream
  • End session — history saves
  • DevTools console has no critical errors

1. Authentication

1.1 Email/Password

  • Sign up with new email + password creates account
  • Duplicate email shows error
  • Invalid email format rejected
  • Sign in with valid credentials succeeds
  • Wrong password shows error
  • Unregistered email shows error
  • Session persists across app restart (refresh token in keytar)
  • Sign out clears session, returns to auth view

1.2 Google OAuth

  • "Sign in with Google" opens browser to Google consent screen
  • After consent, redirects to leadrwispr.vercel.app/auth/callback
  • Callback page shows 3-state flow: redirecting (300ms) → success (2s) → manual fallback
  • Deep link leadrwispr://auth/callback#access_token=... opens app
  • App receives tokens, signs in successfully
  • Manual fallback button works if deep link fails

1.3 Password Reset

  • "Forgot password" link shows reset form
  • Submit sends reset email
  • Reset link in email allows setting new password
  • New password works for sign in

1.4 Profile Management

  • View profile shows email + name
  • Update name saves and persists
  • Change password with correct current password works
  • Change password with wrong current password fails

2. Organization Management

2.1 Org CRUD

  • Create new org succeeds, appears in switcher
  • Org name editable by owner/admin
  • Delete org (owner only) removes org
  • Non-owner cannot delete org

2.2 Org Switching

  • Org switcher dropdown shows all orgs
  • Switch org reloads preferences, API keys, subscription
  • lastSelectedOrgId persisted — correct org loads on relaunch
  • Runtime config cache cleared on switch (no stale provider config)

2.3 Team Members

  • Admin: invite member by email — invite email sent
  • Admin: invite with role (admin, member) — role set correctly
  • Invitee: accept invite from pending invites dialog
  • Invitee: decline invite removes it
  • Admin: update member role works
  • Admin: remove member kicks user
  • Member: leave org removes self
  • Admin: cancel pending invite deletes it
  • Admin: regenerate invite token creates new token

2.4 Pending Invites

  • Pending invite dialog shows on app launch if invites exist
  • Accept invite adds user to org
  • Dismissed invites don't re-show until new invites arrive

2.5 Audit Log

  • Admin: audit log section shows preference changes
  • Log entries include: user, timestamp, old/new values, setting key

3. Subscription & Billing

3.1 Subscription Status

  • Subscription card shows plan type + status
  • Free plan limits visible
  • Paid plan shows seat count + renewal date

3.2 Stripe Integration

  • "Upgrade" button opens Stripe checkout
  • "Manage subscription" opens Stripe portal
  • Seat management: preview proration before changing seats
  • Plan change: preview proration before upgrade/downgrade
  • Sync subscription refreshes status from Stripe

3.3 Trial System

  • Session count tracked in limits.json
  • Launch modal (expired trial): appears on app startup, shows session count, dismissible via X/backdrop/ESC/"Maybe Later", "Upgrade Now" opens browser, only appears once per launch
  • Session blocker modal (expired trial): appears on session start attempt, NOT dismissible (no X, no backdrop/ESC close), "Upgrade Now" opens browser, "Maybe Later" returns to main view, blocks session repeatedly
  • Session count = 0: fallback message shown
  • Session count = 1: singular "1 AI session"
  • Both modals display correctly in dark mode

3.4 Usage Tracking

  • Get call usage returns session count + reset date
  • Session start increments count
  • Can-start-session check blocks when over limit

4. AI Providers & Sessions

4.1 Provider Selection

  • Correct provider used per feature (liveAudio, imageAnalysis, insights, promptEnhancer, callGrading)
  • Changing provider in settings → used in next session
  • Runtime config cache invalidated after settings change (no stale provider)

4.2 Provider Fallback

  • Enable fallback toggle in settings
  • Missing API key → fallback to other provider
  • API error → fallback to other provider
  • Renderer receives provider-fallback-notification with { feature, from, to, reason }
  • Both providers fail → "both providers failed" notification

4.3 Gemini Live Audio

  • Initialize session starts Gemini Live API connection
  • Audio streams as PCM chunks
  • Proactive audio toggle works (provider speaks unprompted)
  • Context compression toggle works
  • Session ends gracefully on stop
  • Session error triggers fallback to OpenAI

4.4 OpenAI Live Audio

  • Initialize session starts WebSocket Realtime API
  • Audio streams correctly
  • Whisper transcription returns text
  • WebSocket reconnects on disconnect
  • Session ends gracefully

4.5 Image Analysis (Screenshot)

  • Gemini: generateContentStream() returns streaming response
  • OpenAI: Chat Completions with vision returns response
  • Screenshot sent with prompt → AI describes/analyzes it

4.6 Insights (Post-Response Chips)

  • Insights enabled toggle in preferences
  • Gemini: Gemma model generates insight chips
  • OpenAI: GPT-4o-mini generates insight chips
  • Chip types render with correct styling:
    • next_step (emerald/green, ArrowRightIcon)
    • avoid (red/rose, XCircleIcon)
    • opportunity (blue/indigo, StarIcon)
    • warning (amber/yellow, AlertTriangleIcon)
    • tip (violet/purple, LightbulbIcon)
  • Chips hidden when insightsEnabled is false

4.7 Call Grading

  • Grade session analyzes conversation → returns score 0-100 + categories
  • Grade includes strengths, weaknesses, quotes
  • Grade saved to cloud
  • Grade badge shows letter grade (A/B/C/D/F) with color
  • Grade detail modal shows rubric breakdown
  • Get rubric returns profile-specific criteria
  • Gradable profiles: interview, sales, meeting, presentation, negotiation
  • User average grade calculation works
  • Grading completion toast appears, click navigates to session

5. Audio Capture (AudioWorklet)

  • AudioWorkletProcessor registers on page load
  • Audio samples buffered at target chunk duration (~100ms)
  • Float32 → Int16 PCM conversion works
  • Base64-encoded chunks sent to main process
  • No ScriptProcessorNode deprecation warnings in console
  • Audio capture starts/stops cleanly with session

6. Screen Capture & Capture Semantics

6.1 Screen Capture

  • Get capture sources returns available screens/windows
  • Screen capture with system audio works
  • Screen capture without audio works (video only)
  • Capture protection toggle (macOS): hide window from capture

6.2 Capture Modes

  • Auto mode + auto trigger: context frames sent to realtime automatically
  • Auto mode + camera trigger + text: context + query + UI update
  • Manual mode + camera trigger: silent context send (no streaming response)
  • Camera button triggers screenshot analysis

7. Session Flow (End-to-End)

7.1 Session Start

  • Select profile → "Start Session" button enabled
  • Custom prompt field accepts text
  • Language dropdown changes language
  • Session creates cloud session (if sync enabled)
  • AI provider initializes
  • View switches to Assistant view
  • Session blocked if trial expired (blocker modal)

7.2 Live Session (Assistant View)

  • Audio capture running — visualizer shows waveform
  • Processing stage indicator: listening / responding
  • AI responses stream in real-time with teleprompter formatting
  • Markdown renders: bold, bullets, code blocks
  • Insight chips appear after responses (when enabled)
  • Response navigation (prev/next) works
  • Screenshot analysis triggered by capture mode settings

7.3 Session End

  • "End Session" stops AI connection + audio capture
  • Session saved to local history (IndexedDB)
  • Cloud session marked complete (if sync enabled)
  • Post-session grading triggers (if gradable profile)

8. History View

8.1 Session List

  • All sessions load (local + cloud)
  • Session cards show: date, profile, duration, message count
  • Cloud sessions show "Synced" badge
  • Click session → detail view with messages
  • Delete session removes from list + storage
  • Empty state shown when no sessions

8.2 Session Detail

  • User messages on right, assistant on left
  • Screen analysis messages interleaved correctly
  • Odd message counts (orphaned user/assistant) don't crash
  • Export transcript downloads .txt file
  • Session grade badge shown if graded
  • Grade detail modal shows rubric scores + quotes
  • Custom session title editable

8.3 Cloud Sync Specifics

  • "Sessions syncing to cloud" badge visible when sync enabled
  • Cloud session details load immediately on initial open (no empty state)
  • Partial load failure: one session fails → others still show (Promise.allSettled)
  • Message counts in Supabase match actual (DB trigger, not client-side)

9. Settings — Personal

9.1 AI Models

  • 5 feature cards: liveAudio, imageAnalysis, insights, promptEnhancer, callGrading
  • Provider dropdown per feature (Gemini / OpenAI)
  • Model dropdown per feature (updates based on provider)
  • AI provider fallback toggle
  • Gemini Live coupling: Image Analysis disabled when liveAudio is Gemini
  • Changes persist after reload

9.2 Profiles & Prompts

  • 6 profile sections: interview, sales, meeting, presentation, negotiation, exam
  • Custom prompt textarea per profile
  • Magic Prompt button (sparkle icon): opens modal, accepts context, generates prompt, preview with try-again/use-this
  • Quick Setup with AI button on all profiles → opens Profile Setup Wizard

9.3 Sales Structured Config (SalesProfileConfig)

  • Tier 1 — Constrained controls:
    • Response format: quick_bullets / conversational / framework_based
    • Tone: assertive / balanced / consultative
    • Language complexity: technical / balanced / simple
    • Framework dropdown (shown when framework_based selected): SPIN, BANT, Challenger, MEDDIC, Sandler
    • DiSC style: D / i / S / C
    • Behavior rules checkboxes: acknowledge_objections, social_proof, no_unprompted_discount, confirm_decision_maker, timeline_before_pricing, summarize_next_steps
  • Tier 2 — Guided context: productInfo, customerProfile, talkTrackExamples (textareas)
  • Tier 3 — Advanced: customRules, systemPromptOverride (collapsible section)
  • Auto-save on change with "saving" indicator
  • System prompt override bypasses all other config when set

9.4 Profile Setup Wizard (all profiles)

  • API key check — shows error if no key configured
  • Confirmation dialog if existing config would be overwritten
  • Profile-specific questions:
    • Interview: 4 questions (STAR Method)
    • Sales: 5 questions (SPIN/BANT)
    • Meeting: 3 questions (SCQA)
    • Presentation: 4 questions (Monroe's Sequence)
    • Negotiation: 4 questions (Harvard Principled)
    • Exam: 2 questions (Feynman Technique)
  • Keyboard navigation: Enter to advance, Escape to cancel
  • Loading state shows profile-specific emoji
  • Generated config applies correctly
  • Generated prompt text applies correctly

9.5 Capture Settings

  • Capture mode: auto / manual
  • Camera trigger toggle
  • Google search toggle

10. Settings — Workspace (Admin)

10.1 API Keys

  • Gemini API key input — masked display
  • OpenAI API key input — masked display
  • Key validation on blur — shows success/error
  • Keys encrypted via electron.safeStorage before disk write
  • Keys synced to cloud (org-wide)
  • Non-admin: cannot see/edit API keys

10.2 Organization Defaults

  • AI Models section mirrors personal settings structure
  • Set org default → members inherit as baseline
  • Sales profile config section shows when sales profile expanded
  • Org defaults persist to Supabase

10.3 Preference Locking

  • Lock toggle per setting prevents member overrides
  • Lock requires org API key configured — error if missing
  • Member views locked setting → lock indicator visible
  • Member tries to save locked setting → alert, save rejected
  • Admin unlocks → member's previous override reactivates
  • Atomic lock check via set_personal_override_with_lock_check() RPC

10.4 Team Members

  • Member list shows all members with roles
  • Invite member sends email
  • Update member role works (admin only)
  • Remove member kicks user (admin only)

10.5 Billing

  • Subscription status card
  • Upgrade/manage buttons
  • Seat management with proration preview

10.6 Session Sync

  • Toggle "Session History Sync" ON/OFF
  • Privacy notice on enable
  • Audit log entry created for toggle
  • Sync status indicator shows online/offline/error

11. Settings — Account & Device

11.1 Account

  • Profile & Security: email, name, change password
  • Appearance: dark mode toggle — smooth transition
  • Keyboard shortcuts: view + remap all keybinds
  • Sign out button

11.2 Device

  • Audio device selection
  • Advanced/debug options
  • Bug report submission
  • Current version display
  • Check for updates button

12. Preference Hierarchy (3-tier resolution)

12.1 Resolution Order

  • Personal override → org default → system default
  • Personal workspace mode: loads/saves via local IPC
  • Org workspace mode: receives from parent, respects locks

12.2 Sales Config Override Pattern

  • Badge shows "Personal override" vs "Org default"
  • Switch control to enable/disable override
  • Whole-object override (not field-level merge)
  • Override toggle auto-saves
  • isLocked OR !isOverrideEnabled → controls disabled

12.3 Cross-Org Isolation

  • Different org defaults load per org
  • Personal overrides specific to each org
  • Device-local settings unchanged across orgs
  • Soft delete preserves overrides on org leave/rejoin

13. Window Management

13.1 Window Behavior

  • Default size: 1000x680
  • Saved bounds restored on relaunch
  • Centers at top of screen if no saved bounds
  • Frameless window with custom title bar
  • Always-on-top during active session
  • Resizable within bounds: min 700x500, max 1400x900
  • Stealth mode hides from taskbar (Windows) / dock (macOS)

13.2 Window Controls

  • Minimize button works
  • Maximize/restore button works
  • Close button quits app
  • Title bar drag region allows window dragging

13.3 Global Keyboard Shortcuts

Test each shortcut (default keybinds, verify remapped ones too):

  • Toggle visibility (Cmd/Ctrl+Shift+W): show/hide window
  • Toggle click-through (Cmd/Ctrl+Shift+X): ignore mouse events
  • Next step (Cmd/Ctrl+Shift+N): advance tour step
  • Previous response (Cmd/Ctrl+Shift+[): navigate response history
  • Next response (Cmd/Ctrl+Shift+]): navigate response history
  • Scroll up (Cmd/Ctrl+Shift+Up): scroll content
  • Scroll down (Cmd/Ctrl+Shift+Down): scroll content
  • Emergency erase (Cmd/Ctrl+Shift+E): clear session content
  • Movement (Cmd/Ctrl+Shift+Arrows): move window position
  • Custom keybind remapping works and persists

14. Tour / Onboarding System

14.1 Setup Tour (first launch)

  • Triggers on first app launch
  • Org setup steps show if no orgs
  • API key setup steps show for all users
  • Admin-only steps skipped for non-admins
  • Progress saved to storage
  • Can skip tour
  • Confetti on completion

14.2 Session Tour (first session)

  • Triggers on first session start
  • Profile selection step highlights profiles
  • Start session step triggers demo mode
  • Demo mode streams fake responses (variable delays)
  • Demo respects insightsEnabled preference
  • Progress saved

14.3 Post-Session Tour

  • Triggers after first session ends
  • History tab step highlights history
  • Completion flag set

14.4 Tour UI

  • Overlay dims background
  • Tooltip positions correctly (auto above/below/left/right based on viewport)
  • Skip button works
  • "Finish later" adds step to list

15. Updates & Rollback

15.1 Auto-Update

  • "Check for updates" queries update server
  • Update available → notification in renderer
  • Download progress shown
  • "Quit and install" restarts with new version
  • Auto-download disabled (manual trigger only)

15.2 Rollback

  • Rollback available check returns info
  • Download rollback downloads previous version
  • Install rollback installs previous version
  • Rollback progress shown in renderer

15.3 What's New

  • What's New dialog shows on version update
  • Release notes from release-notes.json displayed
  • Dialog dismissible

16. Document Extraction

  • Extract text from PDF → returns content
  • Extract text from DOCX → returns content
  • Extract text from TXT → returns content
  • Unsupported format → error message

17. Session Sync (Cloud)

17.1 Enable/Disable

  • Toggle ON → privacy notice → syncing begins
  • Toggle OFF → new sessions stay local only
  • Audit log entries for enable/disable

17.2 Sync Verification

  • Start session → check synced_sessions table in Supabase
  • Send messages → check synced_session_messages table
  • Message count auto-incremented by DB trigger
  • End session → session marked complete in cloud

17.3 Sync Edge Cases

  • Users who leave org can't insert messages into old sessions (RLS)
  • Failed sync operations queued → retry works
  • Clear failed operations works
  • Sync status indicator reflects state

17.4 Local ↔ Cloud Migration

  • Migrate local sessions to cloud copies data
  • Has local data check works
  • Migrate local credentials copies API keys to cloud

18. Security

18.1 Credential Encryption

  • API keys encrypted via electron.safeStorage before disk write
  • Format: { encrypted: base64_string, version: 1 } in credentials.json
  • Decryption on read
  • Plaintext auto-migration to encrypted on first launch after upgrade
  • Fallback to plaintext if encryption unavailable
  • Legacy apiKey field migrated to geminiApiKey

18.2 Navigation Guards

  • Window navigation blocked for non-file:// URLs
  • window.open() denied — external links open in system browser
  • External URLs from renderer open via shell.openExternal()

18.3 Prompt Injection Defense

  • User-provided prompt text sanitized before interpolation
  • System-level instruction patterns stripped
  • Injection phrases removed
  • Field length limits enforced

18.4 Authorization (RLS)

  • Non-admins can't access admin features (org defaults, locks, API keys)
  • Users can't access other users' data
  • Credentials INSERT/UPDATE/DELETE restricted to owner/admin
  • Locked settings can't be overridden via API
  • Atomic lock check prevents race conditions

19. UI/UX

19.1 Visual Consistency

  • Light mode: all screens render correctly
  • Dark mode: all screens render correctly
  • Toggle dark mode: smooth transition, no flash
  • OKLCH color space renders correctly
  • Typography: correct sizes, weights, spacing

19.2 Responsive Layout

  • Narrow window (700px): layout adapts, no overflow
  • Wide window (1400px): content doesn't stretch awkwardly
  • Modals center correctly at all sizes
  • Sidebar navigation works at all widths

19.3 Interactive Elements

  • Buttons: hover states, active states, disabled states
  • Toggles: visual feedback on change
  • Dropdowns: open/close smoothly, correct options
  • Tooltips: appear on hover (InfoTooltip auto-positions above/below based on viewport)
  • Form validation: inline errors shown
  • Corner ribbon badges render correctly (absolute -top-1 -right-8 rotate-45)
  • Icon buttons: indigo theming with hover states

20. Performance

  • App startup time: < 3 seconds
  • Settings page load: < 1 second
  • Session start time: < 2 seconds
  • AI response latency: reasonable for streaming
  • History load (50+ sessions): < 2 seconds
  • No memory leaks after 30 min usage (check Task Manager / Activity Monitor)
  • No console warnings/errors during normal usage
  • Runtime config cache reduces repeated API calls (check network tab)
  • Lazy-loaded provider modules don't slow startup

21. Platform-Specific

21.1 Windows

  • App launches from installer/shortcut
  • Taskbar visibility controlled by stealth mode
  • Global shortcuts register correctly
  • Screen capture works (select screen/window)
  • System audio capture works
  • Auto-update downloads .exe installer
  • Tray icon works (if applicable)

21.2 macOS

  • App launches from .app bundle
  • Dock visibility controlled by stealth mode
  • Screen recording permission requested on first capture
  • Microphone permission requested on first audio capture
  • System audio capture works (after permission)
  • Auto-update downloads .dmg
  • Capture protection hides window from screen recording

21.3 Linux

  • AppImage runs correctly
  • .deb package installs and launches
  • Global shortcuts register
  • Screen capture works
  • Audio capture works

22. Website (Landing Page)

22.1 Core Pages

  • Homepage loads at leadrwispr.vercel.app
  • SEO metadata: Open Graph, Twitter Card present
  • Sitemap + robots.txt accessible

22.2 Hero Section

  • Sales-focused headline renders
  • Stats row with icons visible
  • Interactive stacked screenshots:
    • Left image (app-light.png) rotates on hover (-6deg → 0)
    • Right image (app-session.png) rotates on hover (-3deg → 0)
    • Scale transitions (1.05 active, 0.95 sibling)
    • Z-index switches (z-30 active)
    • Floating labels below each
  • CTA button links to download section

22.3 Sections

  • Features: 8 cards with sales-specific copy + Lucide icons
  • Profiles: 6 cards, Sales has "Most Popular" badge + emerald ring
  • How It Works: 4 steps render
  • Download: platform-specific buttons, version from GitHub Releases API
  • Footer: links work, copyright year correct

22.4 OAuth Callback

  • /auth/callback extracts hash fragment from URL
  • Redirects to leadrwispr://auth/callback#access_token=...
  • 3-state flow: redirecting → success → manual fallback
  • Manual fallback button retries deep link

22.5 GitHub Releases Integration

  • Latest release fetched from hmseeb/leadrwispr-releases
  • ISR revalidation: 1 hour
  • Asset detection: .exe (Windows), .dmg (macOS), .AppImage/.deb (Linux)
  • Missing release: "Latest Release" without version number

23. Regression Tests

23.1 Previously Fixed Bugs (2026-01-14)

  • Encryption migration doesn't crash on first launch (plaintext → encrypted)
  • History loads sessions with odd message counts
  • History loads sessions with screen analysis messages
  • Cloud session details load immediately (not empty on first open)
  • Message counts in Supabase accurate (DB trigger)
  • Ex-org-members can't insert messages into old sessions (RLS)
  • History shows partial results when one session fetch fails (Promise.allSettled)

23.2 Provider Bugs (2026-01-15)

  • Provider selection respected after settings change (cache cleared)
  • AI generation handlers find org-level API keys (org context set)
  • SalesProfileConfig doesn't error when no org default exists (system defaults fallback)

23.3 Audio Worklet Migration (v0.5.65)

  • No ScriptProcessorNode deprecation warnings
  • Audio capture works with new AudioWorkletProcessor
  • Audio quality unchanged (same PCM format)

23.4 Data Migration

  • Old config files migrate correctly
  • Plaintext credentials auto-migrate to encrypted
  • No data loss during app updates
  • Legacy apiKey field migrated to geminiApiKey

24. Error Handling

24.1 Network Failures

  • Offline: app functions with cached/local data
  • Network loss during session: graceful degradation, error shown
  • Network restored: sync resumes
  • Slow connection: loading states visible

24.2 API Errors

  • Missing API key → clear error message (not cryptic)
  • Invalid API key → validation error on settings page
  • Rate limit → user-friendly message
  • Provider timeout → fallback (if enabled) or error

24.3 Data Edge Cases

  • Empty org (no members): app doesn't crash
  • Empty history: proper empty state
  • Large history (100+ sessions): performance OK
  • Special characters in messages: display correctly
  • Emoji in messages: render correctly

24.4 Permission Changes

  • Promoted to admin: Org Defaults section appears
  • Demoted from admin: Org Defaults section disappears
  • Removed from org: fallback to personal workspace
  • Org deleted: graceful handling

Test Results

Test Date: ________ Tester: ________ Platform: Windows / macOS / Linux Version: 0.5.65

Summary

# Area Status Critical Issues Notes
1 Authentication ⬜ Pass / Fail
2 Org Management ⬜ Pass / Fail
3 Subscription & Billing ⬜ Pass / Fail
4 AI Providers & Sessions ⬜ Pass / Fail
5 Audio Capture ⬜ Pass / Fail
6 Screen Capture ⬜ Pass / Fail
7 Session Flow (E2E) ⬜ Pass / Fail
8 History View ⬜ Pass / Fail
9 Settings — Personal ⬜ Pass / Fail
10 Settings — Workspace ⬜ Pass / Fail
11 Settings — Account ⬜ Pass / Fail
12 Preference Hierarchy ⬜ Pass / Fail
13 Window Management ⬜ Pass / Fail
14 Tour / Onboarding ⬜ Pass / Fail
15 Updates & Rollback ⬜ Pass / Fail
16 Session Sync (Cloud) ⬜ Pass / Fail
17 Security ⬜ Pass / Fail
18 UI/UX ⬜ Pass / Fail
19 Performance ⬜ Pass / Fail
20 Platform-Specific ⬜ Pass / Fail
21 Website ⬜ Pass / Fail
22 Regressions ⬜ Pass / Fail
23 Error Handling ⬜ Pass / Fail
24 Call Grading ⬜ Pass / Fail

Issues Found

# Severity Area Issue Steps to Reproduce Status
1
2
3

Severity: Critical / High / Medium / Low


Sign-Off

  • All critical tests pass
  • No blocking issues found
  • Known issues documented
  • Performance acceptable
  • Ready for release

Approved by: ________ Date: ________


Notes

Use this space for additional observations, context, or recommendations:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment