mirror of
https://github.com/microsoft/BCQuality.git
synced 2026-10-05 14:46:55 +01:00
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>
57 lines
2.1 KiB
Markdown
57 lines
2.1 KiB
Markdown
---
|
|
bc-version: [all]
|
|
domain: mcp
|
|
keywords: [write, shebang, script-integrity, encoding]
|
|
technologies: [al]
|
|
countries: [w1]
|
|
application-area: [all]
|
|
---
|
|
|
|
# Shebang-integritet ved deploy af script-filer
|
|
|
|
## Description
|
|
|
|
Når en script-fil med shebang-linje (`.js`, `.sh`, `.ps1`) skrives via Claude Codes
|
|
`Write`-værktøj på Windows, skal linje 1 i den deployede fil verificeres umiddelbart
|
|
efter skrivning.
|
|
|
|
Den verificerede linje skal matche den forventede shebang præcist, f.eks.:
|
|
|
|
#!/usr/bin/env node
|
|
|
|
## Baggrund
|
|
|
|
På Windows håndteres strenge internt via PowerShell-laget. PowerShell behandler `#`
|
|
som kommentar-tegn. Hvis filindhold sendes gennem en ikke-quoted streng eller heredoc,
|
|
kan `#!` i shebangens første linje reduceres til `!/...` — et gyldigt men syntaktisk
|
|
ugyldigt JavaScript-udtryk.
|
|
|
|
Node.js parser da `!/usr/bin/env node` som logisk NOT på et regex-udtryk med ugyldige
|
|
flags og kaster en `SyntaxError` ved opstart. Fejlen er stille: broen starter ikke,
|
|
MCP-tools afvises uden dialog, og brugeren opdager det typisk kun ved at undres over
|
|
manglende godkendelsesdialog.
|
|
|
|
## Konsekvens af brud
|
|
|
|
MCP-serveren starter ikke. Alle `mcp__businesscentral__*`-kald afvises automatisk.
|
|
Brugeren ser ingen fejlbesked i Claude Code — kaldet afvises blot.
|
|
|
|
## Verifikation (påkrævet efter enhver write af script-fil)
|
|
|
|
with open(deployed_path, "r", encoding="utf-8") as f:
|
|
line1 = f.readline().rstrip()
|
|
assert line1 == expected_shebang, f"Shebang fejl: forventet {expected_shebang!r}, fik {line1!r}"
|
|
|
|
Alternativt med Read-værktøjet: læs linje 1 og sammenlign med forventet shebang.
|
|
Stop setup-processen og genskriv filen hvis de ikke matcher.
|
|
|
|
## Eksempel (fejlscenarie observeret 2026-06-29)
|
|
|
|
`bc-mcp-bridge.js` fik `!/usr/bin/env node` (mangler `#`) efter en
|
|
CURABIS Standard-opdatering. BC MCP var ude af drift i ukendt periode.
|
|
Opdaget ved at brugeren efterspurgte MCP-data og ingen godkendelsesdialog dukkede op.
|
|
|
|
## Gælder for
|
|
|
|
- `~/.claude/bc-mcp-bridge.js` (og fremtidige bridge-varianter)
|
|
- Enhver `.js`- eller `.sh`-fil med shebang deployeret via CURABIS Standard-setup
|