PurposeVerify that the Sparxstar User Environment Check (UEC) tier classification is accurately consumed by Starmus Audio Recorder and produces correct UI and feature gating across real West African devices.
Document Status: Updated for Bootstrap Contract v2.1Date: March 2026Applies To: Build 0.9.0+Scope: Recorder / Re-Recorder / Editor pages
Tier = Function of:
Plain textANTLR4BashCC#CSSCoffeeScriptCMakeDartDjangoDockerEJSErlangGitGoGraphQLGroovyHTMLJavaJavaScriptJSONJSXKotlinLaTeXLessLuaMakefileMarkdownMATLABMarkupObjective-CPerlPHPPowerShell.propertiesProtocol BuffersPythonRRubySass (Sass)Sass (Scss)SchemeSQLShellSwiftSVGTSXTypeScriptWebAssemblyYAMLXMLenv.device.memory env.device.concurrency env.network.effectiveType env.browser.supports.MediaRecorder env.capabilities.speechRecognition env.storage.quota env.permissionState.microphone
These are collected by Sparxstar UEC, stored in its snapshot, and passed into:
Plain textANTLR4BashCC#CSSCoffeeScriptCMakeDartDjangoDockerEJSErlangGitGoGraphQLGroovyHTMLJavaJavaScriptJSONJSXKotlinLaTeXLessLuaMakefileMarkdownMATLABMarkupObjective-CPerlPHPPowerShell.propertiesProtocol BuffersPythonRRubySass (Sass)Sass (Scss)SchemeSQLShellSwiftSVGTSXTypeScriptWebAssemblyYAMLXMLwindow.STARMUS_BOOTSTRAP.env
No recorder module may compute tier independently.
TierDevice ClassRecorder UISpeech RecWaveformTUSOffline QueueFallbackAModern/4GB+/WiFiFullYesYesYesYesNoBMid-level/2GB/slow netBasicNoNoConditionalYesNoCLegacy/<1GB/WebViewNoneNoNoNoYesFile Upload Only
-
UEC and Starmus agree on tier
-
Recorder UI behavior matches tier contract
-
Bootstrap contract is respected
-
No recorder initialization on Tier C
-
No Tier A behavior on weak devices
-
Telemetry correctly logs reasons and bootstrap state
Use the same model list you already prepared. No changes required there.
Open DevTools before interacting:
Plain textANTLR4BashCC#CSSCoffeeScriptCMakeDartDjangoDockerEJSErlangGitGoGraphQLGroovyHTMLJavaJavaScriptJSONJSXKotlinLaTeXLessLuaMakefileMarkdownMATLABMarkupObjective-CPerlPHPPowerShell.propertiesProtocol BuffersPythonRRubySass (Sass)Sass (Scss)SchemeSQLShellSwiftSVGTSXTypeScriptWebAssemblyYAMLXMLwindow.STARMUS_BOOTSTRAP
Verify:
-
pageType exists (recorder, rerecorder, or editor)
-
env exists
-
No other globals are read by recorder modules
If bootstrap missing → FAIL AUTOMATICALLY
Expected Logs:
Plain textANTLR4BashCC#CSSCoffeeScriptCMakeDartDjangoDockerEJSErlangGitGoGraphQLGroovyHTMLJavaJavaScriptJSONJSXKotlinLaTeXLessLuaMakefileMarkdownMATLABMarkupObjective-CPerlPHPPowerShell.propertiesProtocol BuffersPythonRRubySass (Sass)Sass (Scss)SchemeSQLShellSwiftSVGTSXTypeScriptWebAssemblyYAMLXML[SparxstarUEC] Tier C reason: memory < 1GB [Starmus] Consuming Tier C — revealing fallback
Disallowed Logs:
Plain textANTLR4BashCC#CSSCoffeeScriptCMakeDartDjangoDockerEJSErlangGitGoGraphQLGroovyHTMLJavaJavaScriptJSONJSXKotlinLaTeXLessLuaMakefileMarkdownMATLABMarkupObjective-CPerlPHPPowerShell.propertiesProtocol BuffersPythonRRubySass (Sass)Sass (Scss)SchemeSQLShellSwiftSVGTSXTypeScriptWebAssemblyYAMLXMLInitializing MediaRecorder... Calibrating microphone... Starting speech recognition...
Pass Criteria:
-
Recorder JS never loads MediaRecorder
-
Only file upload widgets visible
-
Offline queue operates without recorder engine
Expected Logs:
Plain textANTLR4BashCC#CSSCoffeeScriptCMakeDartDjangoDockerEJSErlangGitGoGraphQLGroovyHTMLJavaJavaScriptJSONJSXKotlinLaTeXLessLuaMakefileMarkdownMATLABMarkupObjective-CPerlPHPPowerShell.propertiesProtocol BuffersPythonRRubySass (Sass)Sass (Scss)SchemeSQLShellSwiftSVGTSXTypeScriptWebAssemblyYAMLXML[SparxstarUEC] Tier B: network slow (2G) [Starmus] Recorder enabled (no waveform)
Must NOT display waveform or speech transcript.
Expected Logs:
Plain textANTLR4BashCC#CSSCoffeeScriptCMakeDartDjangoDockerEJSErlangGitGoGraphQLGroovyHTMLJavaJavaScriptJSONJSXKotlinLaTeXLessLuaMakefileMarkdownMATLABMarkupObjective-CPerlPHPPowerShell.propertiesProtocol BuffersPythonRRubySass (Sass)Sass (Scss)SchemeSQLShellSwiftSVGTSXTypeScriptWebAssemblyYAMLXML[SparxstarUEC] Tier A: full device capabilities [Starmus] Waveform + Speech Rec enabled
Speech recognition must match language selected on Step 1.
-
Tier NEVER changes mid-session
-
Network downgrade triggers warning, not tier change
-
Battery saver mode does not demote tier
-
iOS tab freeze stops recording but does not corrupt queue
Check:
Plain textANTLR4BashCC#CSSCoffeeScriptCMakeDartDjangoDockerEJSErlangGitGoGraphQLGroovyHTMLJavaJavaScriptJSONJSXKotlinLaTeXLessLuaMakefileMarkdownMATLABMarkupObjective-CPerlPHPPowerShell.propertiesProtocol BuffersPythonRRubySass (Sass)Sass (Scss)SchemeSQLShellSwiftSVGTSXTypeScriptWebAssemblyYAMLXMLwindow.STARMUS.instances.get(id).store.getState()
Expect fields:
Plain textANTLR4BashCC#CSSCoffeeScriptCMakeDartDjangoDockerEJSErlangGitGoGraphQLGroovyHTMLJavaJavaScriptJSONJSXKotlinLaTeXLessLuaMakefileMarkdownMATLABMarkupObjective-CPerlPHPPowerShell.propertiesProtocol BuffersPythonRRubySass (Sass)Sass (Scss)SchemeSQLShellSwiftSVGTSXTypeScriptWebAssemblyYAMLXMLtier // 'A' | 'B' | 'C' reason // from UEC bootstrapHash // cache integrity
If tier exists without a reason → FAIL
Plain textANTLR4BashCC#CSSCoffeeScriptCMakeDartDjangoDockerEJSErlangGitGoGraphQLGroovyHTMLJavaJavaScriptJSONJSXKotlinLaTeXLessLuaMakefileMarkdownMATLABMarkupObjective-CPerlPHPPowerShell.propertiesProtocol BuffersPythonRRubySass (Sass)Sass (Scss)SchemeSQLShellSwiftSVGTSXTypeScriptWebAssemblyYAMLXML## Device: [Model] **Detected Tier**: [A/B/C] **Expected Tier**: [A/B/C] **Match**: [Y/N] **Bootstrap Present**: [Y/N] **Reason Logged**: [Y/N] **Recorder Behavior Correct**: [Y/N] **TUS Behavior**: [Pass/Fail] **Offline Queue**: [Pass/Fail] **Notes**:
All must be checked before enabling Permission State Sync (P1.2):
-
Bootstrap contract present on all recorder pages
-
UEC tier matches recorder behavior on all tested devices
-
No recorder initialization on Tier C
-
No waveform on Tier B
-
Speech recognition only on Tier A
-
Offline queue persistent across reloads
-
TUS resumable on Tier A only
-
No mid-session tier switching