{"record":{"id":"16ff3400f74cacf5","repo":"tinyhumansai/openhuman","slug":"core-state-bootstrap-poll-failed-attempt-fail","errorCode":null,"errorMessage":"[core-state] bootstrap poll failed (attempt ${failureCount}/${MAX_BOOTSTRAP_RETRIES}):","messagePattern":"\\[core-state\\] bootstrap poll failed \\(attempt (.+?)/(.+?)\\):","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"app/src/providers/CoreStateProvider.tsx","lineNumber":536,"sourceCode":"  );\n\n  useEffect(() => {\n    let cancelled = false;\n    const doRefresh = async () => {\n      try {\n        await refresh();\n        bootstrapFailCountRef.current = 0;\n      } catch (error) {\n        if (!cancelled) {\n          bootstrapFailCountRef.current += 1;\n          const safe = sanitizeError(error);\n          const debugMessage = coreStatePollFailureDebugMessage(bootstrapFailCountRef.current);\n          if (debugMessage) {\n            log('%s error=%O', debugMessage, safe);\n          }\n          const warningMessage = coreStatePollFailureWarningMessage(bootstrapFailCountRef.current);\n          if (warningMessage) {\n            console.warn(warningMessage, safe);\n          }\n          if (bootstrapFailCountRef.current >= MAX_BOOTSTRAP_RETRIES) {\n            commitState(previous => {\n              if (previous.isBootstrapping) {\n                return { ...previous, isBootstrapping: false };\n              }\n              return previous;\n            });\n          }\n        }\n      }\n    };\n\n    const load = async () => {\n      await doRefresh();\n      if (!cancelled) {\n        const next = getCoreStateSnapshot();\n        if (","sourceCodeStart":518,"sourceCodeEnd":554,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/app/src/providers/CoreStateProvider.tsx#L518-L554","documentation":"CoreStateProvider bootstrap refresh: the periodic snapshot refresh() threw and this is still within the retry budget (attempt failureCount of MAX_BOOTSTRAP_RETRIES). The failure is sanitized and logged at debug while the effect keeps polling — the UI continues showing the last good snapshot. Common while the embedded core process is still booting its RPC server.","triggerScenarios":"Thrown at app/src/providers/CoreStateProvider.tsx:536 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Wait — the poll retries automatically and resets once refresh succeeds","Check that the core process is starting (core.token / port up) if failures persist past the budget","Inspect the sanitized error object in the log for the RPC-level cause"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"749120085864ce16e0f273c7b86fac7740b39c5b","analyzedAt":"2026-08-17T21:21:45.363Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}