Context Boundary
- Repo/module:
talkincode/GameKit, runtime diagnostics, preview status, and export feedback
- Version/commit:
main, 9eb811e7bc3db3193b57609425723c478e438d32
- Runtime: browser preview plus ZIP export
- OS/browser: not recorded; one parser case was verified against standard SyntaxError text, but no browser E2E was run
- Dependencies/config: pygbag 0.9.3; no feature flag involved
Expectation vs. Reality
Expected: Runtime and build failures appear as stable, actionable Problems/Console feedback, and an error state is not reset by stale startup messages.
Actual: problemsFromConsole returns no problem unless it finds the literal Traceback (most recent call last):; standard SyntaxError text without that header is therefore missed. The preview poller reports ready every 400 ms while the terminal still contains default.tmpl: done, and noteReady unconditionally sets the run state to running, which can overwrite a later error. Exporting after deleting main.py throws from buildWebBundle without being converted into a user notice.
Reproduction Path
- Call
problemsFromConsole with standard SyntaxError output that has a File ... line ... frame but no Traceback header; it returns [].
- Start a preview, leave
default.tmpl: done in the terminal, then trigger a runtime exception; observe whether the repeated ready poll changes the state back to running.
- Delete
main.py and choose an export format; observe the unhandled build error instead of an in-app message.
Minimal reproduction: problemsFromConsole(' File "main.py", line 1\nSyntaxError: invalid syntax') returns an empty list.
Blast Radius
- Affected users/paths: users relying on the Problems panel for syntax/runtime failures or exporting an invalid project.
- Frequency: SyntaxError format, persistent startup terminal text after a runtime failure, or missing
main.py during export.
- Severity rationale: failures are harder to diagnose and can be reported with the wrong run state; recommend P2.
- Workaround: inspect the Console and restore
main.py before exporting.
Evidence
Context Boundary
talkincode/GameKit, runtime diagnostics, preview status, and export feedbackmain,9eb811e7bc3db3193b57609425723c478e438d32Expectation vs. Reality
Expected: Runtime and build failures appear as stable, actionable Problems/Console feedback, and an error state is not reset by stale startup messages.
Actual:
problemsFromConsolereturns no problem unless it finds the literalTraceback (most recent call last):; standard SyntaxError text without that header is therefore missed. The preview poller reports ready every 400 ms while the terminal still containsdefault.tmpl: done, andnoteReadyunconditionally sets the run state torunning, which can overwrite a later error. Exporting after deletingmain.pythrows frombuildWebBundlewithout being converted into a user notice.Reproduction Path
problemsFromConsolewith standard SyntaxError output that has aFile ... line ...frame but noTracebackheader; it returns[].default.tmpl: donein the terminal, then trigger a runtime exception; observe whether the repeated ready poll changes the state back to running.main.pyand choose an export format; observe the unhandled build error instead of an in-app message.Minimal reproduction:
problemsFromConsole(' File "main.py", line 1\nSyntaxError: invalid syntax')returns an empty list.Blast Radius
main.pyduring export.main.pybefore exporting.Evidence