bcquality/custom/knowledge/architecture/new-file-requires-vscode-refresh.md
Michael Dieringer dd5637b1db Custom-laget bestaar nu begge CI-checks: 72 validator-fejl -> 0
Normalisering af alle 39 custom knowledge-filer til READ-kontraktens
skema (validate_frontmatter.py + Test-KnowledgeIndex.ps1 begge groenne):

- R01/R02: 28 filer manglede frontmatter eller brugte aeldre skemaer
  (title/category/severity/rule-id m.fl.) - alle har nu praecis de 6
  kraevede noegler; keywords haandskrevet pr. fil da de driver
  worklist-selektionen i INDEX/knowledge-index
- R09: manglende Description-sektion - regel-agtige foersteoverskrifter
  (Core Rule/Rule/Regel/Core Principle) omdoebt, eller sektion indsat
  efter titlen hvor intro-tekst fandtes
- R10: fenced code blocks konverteret til 4-space indrykkede blokke
  i alle filer (indhold uaendret)
- R11: 4 filer over 100 linjer fortaettet redaktionelt uden semantisk
  tab (ai-eval-scores 143->100, git-lifecycle 121->97,
  permission-sets 113->99, test-feature-scenario-tags 105->91)
- R05: AL0197->al0197, add_repo->add-repo; keyword-lister trimmet
  til maks 10

Ingen regler er fjernet eller aendret i betydning - kun form.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-01 23:47:31 +02:00

79 lines
3.4 KiB
Markdown

---
bc-version: [all]
domain: architecture
keywords: [workspace, compile, diagnostics, refresh, al-language, multi-project, new-file, mcp, alpackages, cross-project]
technologies: [al]
countries: [w1]
application-area: [all]
---
## Description
When Claude Code creates a new AL file in a multi-project workspace
(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
compilation errors such as:
- Missing references to test codeunits (e.g. `Library Assert`)
- Object ID out of range for the main app
- Missing `app.json` dependencies
These errors are **not real** — they disappear after VS Code refreshes its
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
**VS Code context:** After creating a new AL file, Claude Code must:
1. Stop all compilation and diagnostic activity immediately
2. Instruct the developer to refresh VS Code:
`Ctrl+Shift+P → AL: Reload Extension`
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
**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
- 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 move or rename the file based on pre-refresh diagnostics
- 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 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
**VS Code:** If `al_getdiagnostics` returns errors referencing objects that clearly
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.
**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 (VS Code context)
When this situation occurs, output exactly this message before stopping:
WARNING: VS Code needs a refresh before I can check for real compilation errors.
Please run: Ctrl+Shift+P -> AL: Reload Extension
Let me know when the refresh is done and I will re-check diagnostics.
Do not continue with any other activity until the developer confirms the refresh.