mirror of
https://github.com/microsoft/BCQuality.git
synced 2026-08-06 09:26:52 +01:00
Skaerp regel: new-file-requires-vscode-refresh — tilfoej MCP cross-project symbol resolution
This commit is contained in:
parent
46f8ded318
commit
03e8071a07
1 changed files with 29 additions and 10 deletions
|
|
@ -1,7 +1,7 @@
|
||||||
---
|
---
|
||||||
bc-version: [all]
|
bc-version: [all]
|
||||||
domain: architecture
|
domain: architecture
|
||||||
keywords: [workspace, compile, diagnostics, refresh, al-language, multi-project, new-file]
|
keywords: [workspace, compile, diagnostics, refresh, al-language, multi-project, new-file, mcp, alpackages, cross-project]
|
||||||
technologies: [al]
|
technologies: [al]
|
||||||
countries: [w1]
|
countries: [w1]
|
||||||
application-area: [all]
|
application-area: [all]
|
||||||
|
|
@ -10,7 +10,7 @@ application-area: [all]
|
||||||
## Description
|
## Description
|
||||||
|
|
||||||
When Claude Code creates a new AL file in a multi-project workspace
|
When Claude Code creates a new AL file in a multi-project workspace
|
||||||
(e.g. `Jernpladsen` + `Jernpladsen.Test`), the AL Language Server in VS Code
|
(e.g. `AppName` + `AppName.Test`), the AL Language Server in VS Code
|
||||||
may temporarily assign the new file to the wrong project. This causes false
|
may temporarily assign the new file to the wrong project. This causes false
|
||||||
compilation errors such as:
|
compilation errors such as:
|
||||||
|
|
||||||
|
|
@ -21,9 +21,16 @@ compilation errors such as:
|
||||||
These errors are **not real** — they disappear after VS Code refreshes its
|
These errors are **not real** — they disappear after VS Code refreshes its
|
||||||
project context. Claude Code must not attempt to fix them.
|
project context. Claude Code must not attempt to fix them.
|
||||||
|
|
||||||
|
In **MCP sessions**, a parallel issue occurs: when a new object is added to
|
||||||
|
a dependency project (e.g. the main app), the MCP AL server for the dependent
|
||||||
|
project (e.g. the test app) cannot resolve the new object — even after
|
||||||
|
`al_addproject` — because the MCP server resolves cross-project dependencies
|
||||||
|
from `.alpackages` (compiled symbols), not from workspace source. The false
|
||||||
|
errors persist until the dependency is rebuilt and re-linked.
|
||||||
|
|
||||||
## Rule
|
## Rule
|
||||||
|
|
||||||
After creating a new AL file, Claude Code must:
|
**VS Code context:** After creating a new AL file, Claude Code must:
|
||||||
|
|
||||||
1. Stop all compilation and diagnostic activity immediately
|
1. Stop all compilation and diagnostic activity immediately
|
||||||
2. Instruct the developer to refresh VS Code:
|
2. Instruct the developer to refresh VS Code:
|
||||||
|
|
@ -31,30 +38,42 @@ After creating a new AL file, Claude Code must:
|
||||||
3. Wait for explicit confirmation from the developer that the refresh is done
|
3. Wait for explicit confirmation from the developer that the refresh is done
|
||||||
4. Only then run `al_getdiagnostics` or `al_compile` to check for real errors
|
4. Only then run `al_getdiagnostics` or `al_compile` to check for real errors
|
||||||
|
|
||||||
|
**MCP context:** After adding a new object to a dependency project (main app),
|
||||||
|
if the dependent project (test app) cannot resolve the new object, Claude Code must:
|
||||||
|
|
||||||
|
1. Run `al_build` on the dependency project to generate a fresh `.app`
|
||||||
|
2. Copy the generated `.app` to the dependent project's `.alpackages/` folder
|
||||||
|
3. Run `al_addproject` on the dependent project to reload its symbol context
|
||||||
|
4. Only then run `al_build` or `al_getdiagnostics` on the dependent project
|
||||||
|
|
||||||
## What NOT to do
|
## What NOT to do
|
||||||
|
|
||||||
- Do not investigate namespace errors that appear immediately after file creation
|
- Do not investigate namespace errors that appear immediately after file creation
|
||||||
- Do not modify `using` statements based on errors seen before a refresh
|
- Do not modify `using` statements based on errors seen before a refresh
|
||||||
- Do not move or rename the file based on pre-refresh diagnostics
|
- Do not move or rename the file based on pre-refresh diagnostics
|
||||||
- Do not run `al_compile` or `al_build` immediately after creating a new file
|
- Do not run `al_compile` or `al_build` immediately after creating a new file (VS Code)
|
||||||
- Do not report "compilation failed" based on pre-refresh diagnostics
|
- Do not report "compilation failed" based on pre-refresh diagnostics
|
||||||
|
- Do not interpret `AL0185 — object 'X' is missing` in the test app as a code error
|
||||||
|
before first rebuilding the dependency and updating `.alpackages/`
|
||||||
|
|
||||||
## Signal to watch for
|
## Signal to watch for
|
||||||
|
|
||||||
If `al_getdiagnostics` returns errors referencing objects that clearly belong
|
**VS Code:** If `al_getdiagnostics` returns errors referencing objects that clearly
|
||||||
to the other project (e.g. `Library Assert` errors in a main app context,
|
belong to the other project (e.g. `Library Assert` errors in a main app context,
|
||||||
or ID range errors for a test codeunit), this is a pre-refresh false positive.
|
or ID range errors for a test codeunit), this is a pre-refresh false positive.
|
||||||
|
|
||||||
Stop. Instruct the developer to refresh. Wait. Then re-run diagnostics.
|
**MCP:** If `al_getdiagnostics` on the test app returns `AL0185 — Codeunit 'X' is
|
||||||
|
missing` for a codeunit that was just created in the main app source, this is a
|
||||||
|
stale symbol cache issue — not a missing implementation.
|
||||||
|
|
||||||
## Message to developer
|
## Message to developer (VS Code context)
|
||||||
|
|
||||||
When this situation occurs, output exactly this message before stopping:
|
When this situation occurs, output exactly this message before stopping:
|
||||||
|
|
||||||
```
|
```
|
||||||
⚠️ VS Code needs a refresh before I can check for real compilation errors.
|
WARNING: VS Code needs a refresh before I can check for real compilation errors.
|
||||||
|
|
||||||
Please run: Ctrl+Shift+P → AL: Reload Extension
|
Please run: Ctrl+Shift+P -> AL: Reload Extension
|
||||||
|
|
||||||
Let me know when the refresh is done and I will re-check diagnostics.
|
Let me know when the refresh is done and I will re-check diagnostics.
|
||||||
```
|
```
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue