Find the boundary that failed
Start with the observable symptom and fix the responsible part of the project.
Check says a fixed array is passed to a resizing parameter#
MCB2102 now names the caller’s fixed-size array, the called procedure and its resizing parameter. A declaration such as Dim state(330) As Long has fixed bounds. If the procedure must resize it, declare Dim state() As Long instead; ReDim before the call only when the caller itself needs elements first. Do not suppress the error with On Error: it is a source-level contract problem.
If resizing was unintended, keep the fixed declaration and change the procedure to modify elements without replacing storage. Follow the complete Check-error exercise. Error 10 at runtime distinguishes fixed storage from a temporary ByRef or For Each lock; each cause needs a different remedy.
The bug is real, but Check reports no error#
From build 832, Fix accepts a behavioral report: state the steps, expected result, actual result and exact Form/module names. When it adds source chips, the first Send pauses for review and the next Send uses the reviewed selection. Inspect or remove Last Run output before sending. Stop cancellation is not a project diagnostic.
Work through Fix a behavioral bug after a clean Check for complete event code, a reproducible defect, chip review and acceptance cases.
An incomplete AI stage has an unclear remaining-work list#
Formatting is normalized, and from build 825 an incomplete candidate with actual operations but no usable list receives a generic reminder to finish the stage. This preserves checked work instead of rejecting the whole reply. If no operations and no blockers remain, the stage flow distinguishes completion of a follow-up from an initial no-change result.
Read the current card, remaining work and diff; do not assume a generic reminder proves progress. MCB4730 can still report other contract errors, so follow its specific message. See normalization and empty-answer recovery.
An AI replacement joins End Sub to the next header#
This candidate-assembly defect is fixed in build 823 and later. Check your installed version if a diagnostic contains End SubPrivate Sub. On an older build, update and request a fresh proposal against the current source; do not assume an old failed proposal was repaired automatically.
In the full document, the closing statement and next procedure header must occupy separate lines. If the problem persists on an updated build, stop and retain a minimal example plus the diagnostic. Continue through normal Check and runtime acceptance, not by deleting the neighboring handler.
A control-array edit or event fails#
If a shared handler needs Index first, update its declaration rather than creating one procedure per member. If an ordinary control’s handler unexpectedly takes Index, remove that argument or deliberately make the control an array member. Duplicate Index values, mixed types and mixed indexed/non-indexed names are different layout errors; correct the named member before Check.
At runtime, missing array members raise error 340. Count does not imply consecutive indexes: iterate existing members with For Each. A promotion refusal headed MCB4603 means the candidate was not applied; fix the reported code or choose the non-array paste alternative. See the control-array guide and checked practice project.
An AI stage passed Check but changed no file#
This does not complete the stage. Read the current failure card at the bottom and choose Retry stage or Stop plan; Skip stage is not offered for a no-file change. Earlier applied files remain present. A follow-up slice with no operations and no blockers is the exception: it closes the already-applied stage without an empty edit. Read the slice number and remaining work instead of treating every empty answer the same way. See no-change recovery.
A development IDE cannot find its matching toolchain#
For a McBasic™ build made from source, keep the app with the managed build products produced beside it. The IDE prefers a packaged toolchain record, then validated products next to the running app, then matching repository build records. This prevents a separate temporary build from redirecting that app to outputs that were later deleted.
If Check or Run reports missing toolchain files, first confirm which copy of McBasic™ you launched and whether its matching CLI, ComponentSdk and Runtime.UI products still exist. Rebuild and launch that development product together instead of editing BASIC handlers or mixing assemblies from another configuration. This is development-checkout guidance, not an instruction for Mac App Store users to install a global .NET SDK.
An AI request is refused before it starts#
Read whether the message names the prompt or selected context. Remote Automatic now allows 240,000 characters in total; local LM Studio is capped at 120,000 and honors smaller presets. A stage may carry the whole approved plan, so reducing source chips is not the same as shortening its instructions. Use the request-size recovery guide, then Retry. MCB4702 means that size check sent nothing; it is not evidence of a provider outage.
The handler does not run#
- Confirm you are running the project and Form you edited.
- Inspect the control Name and its event binding.
- Compare the procedure signature with the exact component event.
- Check Enabled, Visible, parent state and whether another control intercepts the pointer.
- Use a breakpoint at the first statement before investigating later logic.
The layout looks right only at one size#
Inspect the parent hierarchy first. Then check Dock, Anchor, minimum dimensions and container-specific arrangement. Do not compensate for an incorrect parent with a larger Left value. Test the keyboard path after moving a control between containers.
The database is empty or a table is missing#
Confirm the application identity and resolved data path. Apply the declared migrations before the first query. Check whether a grid filter hides loaded records or a paged query only loaded one page. Read the error before concluding that the data is absent.
Check reports a package admission error#
A package consumer needs the declared package version, lockfile, cache, target and trust inputs. MCB7057 and MCB7058 can indicate that those inputs were not supplied. Build and admit the dependency using the SDK workflow; do not remove the reference merely to silence the diagnostic.
A service fails but the app still says “done”#
Inspect transport failure, then HTTP status, then JSON shape. Move the success message after the completed operation and put state restoration in Finally. Do not parse an error page as the expected JSON response.
The built app cannot find an asset#
Confirm the resource is declared in the project and packaged in the artifact. Check its logical name and path casing. Read resources from the application resource location and write new files into a writable data location, not into the bundle.
Collect a useful problem report#
Include the McBasic™ version/build, the diagnostic code and location, the smallest project that reproduces the issue, exact actions and expected versus actual behavior. Remove credentials, personal records and unrelated files before sharing an example.
20f4bfed6b · Build manifestSources & maintenance
Original web explanation, reviewed against these repository sources. API tables and example files follow the implementation.
docs/manual/23-diagnostics-and-troubleshooting.mdmacos/McBasicIDE/Sources/ToolchainClient.swiftmacos/McBasicIDE/Sources/AIRequestBudget.swiftsrc/McBasic.Build/AiConversationContracts.cssrc/McBasic.Build/ProcedurePatchValidationService.csmacos/McBasicIDE/Sources/AIFlowEngine.swiftmacos/McBasicIDE/Sources/AIContextRecipe.swiftsrc/McBasic.Compiler/ArrayResizeAnalysis.cssrc/McBasic.Runtime/BasicRuntime.cs