KRET LANGUAGE ACADEMY · DOKUMENTACJA ZE ŹRÓDEŁ
Uprawnienia, komendy hosta, limity i izolacja
Manifest deklaruje uprawnienie wymagane (`logs.own.write`) i opcjonalne (`kretdb.read`), komendę hosta `counter.add`, limity pamięci i CPU, profil `light`, preferowaną izolację `sandbox` oraz deklarację obszaru danych `runtimeData`. Polityka hosta testowego przyznaje tylko `logs.own.write` — deklaracja nie jest przyznaniem.
Witryna nie wykonuje kodu ani nie prowadzi walidacji SDK. Wyniki poniżej pochodzą z eksportu określonej wersji i przestają opisywać kod po jego zmianie.
Kanoniczne pliki projektu
module Main
fn Start() -> String {
log.info("start: uprawnienie logs.own.write przyznane przez hosta")
return "gotowy"
}
fn Shutdown() {
}
// Komenda hosta zadeklarowana w bloku handlers manifestu. Host przekazuje argumenty, typy sprawdza proces pluginu.
on counter.add(a: Int, b: Int) -> Int {
return a + b
}
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
module MainDeklaracja modułu KretS; porównaj nazwę z nazwą pliku.Pusta linia oddziela fragmenty źródła.fn Start() -> String {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.log.info("start: uprawnienie logs.own.write przyznane przez hosta")Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.return "gotowy"Zwrócenie wartości z funkcji; nie jest zapisem do dziennika.}Zamknięcie struktury otwartej we wcześniejszych liniach.Pusta linia oddziela fragmenty źródła.fn Shutdown() {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.}Zamknięcie struktury otwartej we wcześniejszych liniach.Pusta linia oddziela fragmenty źródła.// Komenda hosta zadeklarowana w bloku handlers manifestu. Host przekazuje argumenty, typy sprawdza proces pluginu.Komentarz autora; nie jest wykonywany.on counter.add(a: Int, b: Int) -> Int {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.return a + bZwrócenie wartości z funkcji; nie jest zapisem do dziennika.}Zamknięcie struktury otwartej we wcześniejszych liniach.Pusta linia oddziela fragmenty źródła.
Wynik i typowy błąd
Wynik `start` = „gotowy”, wynik komendy = 42, w dzienniku wpis z `log.info`. Uprawnienie opcjonalne `kretdb.read` nie zostało przyznane i nie jest używane.
Wywołanie komendy, której nie ma w bloku `handlers` — broker ją odrzuci, nawet gdy handler `on …` istnieje w kodzie.
Wymagania wersji i procedura lokalna
- sdk
- 1.0.0-rc.3+kret.local.3
- sdkInfoReports
- 1.0.0-rc.3
- core
- 1.0.0-test.6.11-draft.1
- os
- Windows 11 x64
- dotnet
- .NET 10 runtime
Polecenia poniżej są instrukcją do samodzielnego wykonania z właściwym lokalnym SDK. DATA/OUT muszą wskazywać nowe katalogi testowe. Nie ma przycisku uruchamiania na serwerze.
- check
kret check . --jsonKatalog: project · Oczekiwany kod wyjścia: 0 - run-invoke
kret run . --policy host-policy.json --data {DATA} --invoke counter.add=[2,40]Katalog: project · Oczekiwany kod wyjścia: 0
Wyniki zapisane w pakiecie źródłowym
To dowód z eksportu, nie wynik bieżącego wykonania w przeglądarce.
# EXPECTED_OUTPUT — KRETL-I01-PermissionsHandlersLimits
# Rzeczywisty wynik uruchomienia (SDK 1.0.0-rc.3+kret.local.3, 2026-11-01T12:46:32Z). Ścieżki zastąpione znacznikami <project>, <data>, <out>, <sdk>.
# Actual output of the run. Paths replaced by placeholders.
### 1. check (exit 0, PASS)
> kret check . --json
{
"format": "kret-diagnostics/1",
"project": "<project>",
"succeeded": true,
"plugin": {
"id": "LOCAL-KPL-KLM2PERM",
"name": "PermissionsHandlersLimits",
"version": "1.0.0",
"profile": "light",
"isolation": "sandbox",
"database": false
},
"permissions": {
"required": [
"logs.own.write"
],
"optional": [
"kretdb.read"
]
},
"handlers": {
"lifecycle": [
"start",
"shutdown"
],
"events": [],
"commands": [
"counter.add"
]
},
"diagnostics": []
}
### 2. run-invoke (exit 0, PASS)
> kret run . --policy host-policy.json --data {DATA} --invoke counter.add=[2,40]
{
"broker": {
"pid": 49520,
"startupMs": 41.0986,
"pluginHostSha256": "93405d128c95234d913efcd6e28fe54073caa0375135a2184290f958e7f7cfe5",
"allowProvisionalRisk": true,
"memoryIdle": {
"managedBytes": 1193408,
"allocatedBytes": 1190768,
"workingSetBytes": 32587776,
"privateBytes": 10113024,
"peakWorkingSetBytes": 32587776,
"cpuMs": 93.75
}
},
"brokerWithPlugins": {
"memory": {
"managedBytes": 1549520,
"allocatedBytes": 1546400,
"workingSetBytes": 41263104,
"privateBytes": 14135296,
"peakWorkingSetBytes": 41308160,
"cpuMs": 187.5
}
},
"plugins": [
{
"package": "<project>\\Build",
"admitted": true,
"startMs": 169.3413,
"subject": "LOCAL-KPL-KLM2PERM",
"instance": "01a19725-b136-73ba-a28c-c5b2b92cc8a0",
"pid": 30224,
"jobObject": true,
"isolation": {
"level": "AppContainer",
"restrictedToken": false,
"lowIntegrity": false,
"appContainer": true
},
"limits": {
"profile": "light",
"scriptMemoryBytes": 64000000,
"processMemoryBytes": 201326592,
"cpuPercent": 5,
"maxInstructions": 5000000,
"clamped": []
},
"calls": [
{
"operation": "start",
"ok": true,
"status": "Completed",
"type": "String",
"value": "gotowy",
"brokerMs": 13.068,
"vmMs": 10.2455,
"instructions": 4,
"hostCalls": 1,
"pluginReportedMemory": {
"managedBytes": 740264,
"allocatedBytes": 738200,
"workingSetBytes": 31944704,
"privateBytes": 10977280,
"peakWorkingSetBytes": 32256000,
"cpuMs": 93.75
}
},
{
"operation": "on counter.add",
"ok": true,
"status": "Completed",
"type": "Int64",
"value": 42,
"brokerMs": 2.0793,
"vmMs": 0.0014,
"instructions": 4,
"hostCalls": 0,
"pluginReportedMemory": {
"managedBytes": 748488,
"allocatedBytes": 746400,
"workingSetBytes": 31977472,
"privateBytes": 10985472,
"peakWorkingSetBytes": 32256000,
"cpuMs": 93.75
}
},
{
"operation": "shutdown",
"ok": true,
"status": "Completed",
"type": "Unit",
"value": null,
"brokerMs": 0.3877,
"vmMs": 0.0016,
"instructions": 1,
"hostCalls": 0,
"pluginReportedMemory": {
"managedBytes": 756712,
"allocatedBytes": 754600,
"workingSetBytes": 31985664,
"privateBytes": 10985472,
"peakWorkingSetBytes": 32256000,
"cpuMs": 93.75
}
}
],
"processMemoryMeasuredByBroker": {
"workingSetBytes": 31985664,
"privateBytes": 10985472,
"peakWorkingSetBytes": 32256000,
"cpuMs": 93.75
},
"summary": {
"exitCode": 0,
"killed": false,
"hostCalls": 1,
"denials": 0,
"peakCommitBytes": 11870208,
"log": [
"[info] start: uprawnienie logs.own.write przyznane przez hosta"
]
}
}
],
"brokerAfterClose": {
"memory": {
"managedBytes": 603552,
"allocatedBytes": 1546400,
"workingSetBytes": 42528768,
"privateBytes": 14979072,
"peakWorkingSetBytes": 42528768,
"cpuMs": 203.125
}
},
"audit": {
"entries": 15,
"denials": 0,
"grantsIssued": 1,
"denied": []
},
"exitCode": 0
}
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
# EXPECTED_OUTPUT — KRETL-I01-PermissionsHandlersLimitsOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.# Rzeczywisty wynik uruchomienia (SDK 1.0.0-rc.3+kret.local.3, 2026-11-01T12:46:32Z). Ścieżki zastąpione znacznikami <project>, <data>, <out>, <sdk>.Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.# Actual output of the run. Paths replaced by placeholders.Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.Pusta linia oddziela fragmenty źródła.### 1. check (exit 0, PASS)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.> kret check . --jsonOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."format": "kret-diagnostics/1",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."project": "<project>",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."succeeded": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."plugin": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."id": "LOCAL-KPL-KLM2PERM",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."name": "PermissionsHandlersLimits",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."version": "1.0.0",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."profile": "light",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."isolation": "sandbox",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."database": falsePole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach."permissions": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."required": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."logs.own.write"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.],Zamknięcie struktury otwartej we wcześniejszych liniach."optional": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."kretdb.read"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.]Zamknięcie struktury otwartej we wcześniejszych liniach.},Zamknięcie struktury otwartej we wcześniejszych liniach."handlers": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."lifecycle": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."start",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."shutdown"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.],Zamknięcie struktury otwartej we wcześniejszych liniach."events": [],Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."commands": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."counter.add"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.]Zamknięcie struktury otwartej we wcześniejszych liniach.},Zamknięcie struktury otwartej we wcześniejszych liniach."diagnostics": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.Pusta linia oddziela fragmenty źródła.### 2. run-invoke (exit 0, PASS)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.> kret run . --policy host-policy.json --data {DATA} --invoke counter.add=[2,40]Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."broker": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."pid": 49520,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."startupMs": 41.0986,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."pluginHostSha256": "93405d128c95234d913efcd6e28fe54073caa0375135a2184290f958e7f7cfe5",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."allowProvisionalRisk": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."memoryIdle": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."managedBytes": 1193408,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."allocatedBytes": 1190768,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."workingSetBytes": 32587776,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."privateBytes": 10113024,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."peakWorkingSetBytes": 32587776,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."cpuMs": 93.75Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.},Zamknięcie struktury otwartej we wcześniejszych liniach."brokerWithPlugins": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."memory": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."managedBytes": 1549520,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."allocatedBytes": 1546400,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."workingSetBytes": 41263104,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."privateBytes": 14135296,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."peakWorkingSetBytes": 41308160,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."cpuMs": 187.5Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.},Zamknięcie struktury otwartej we wcześniejszych liniach."plugins": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."package": "<project>\\Build",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."admitted": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."startMs": 169.3413,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."subject": "LOCAL-KPL-KLM2PERM",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."instance": "01a19725-b136-73ba-a28c-c5b2b92cc8a0",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."pid": 30224,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."jobObject": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."isolation": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."level": "AppContainer",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."restrictedToken": false,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."lowIntegrity": false,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."appContainer": truePole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach."limits": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."profile": "light",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."scriptMemoryBytes": 64000000,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."processMemoryBytes": 201326592,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."cpuPercent": 5,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."maxInstructions": 5000000,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."clamped": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach."calls": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."operation": "start",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."ok": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."status": "Completed",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."type": "String",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."value": "gotowy",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."brokerMs": 13.068,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."vmMs": 10.2455,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."instructions": 4,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."hostCalls": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."pluginReportedMemory": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."managedBytes": 740264,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."allocatedBytes": 738200,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."workingSetBytes": 31944704,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."privateBytes": 10977280,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."peakWorkingSetBytes": 32256000,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."cpuMs": 93.75Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.},Zamknięcie struktury otwartej we wcześniejszych liniach.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."operation": "on counter.add",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."ok": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."status": "Completed",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."type": "Int64",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."value": 42,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."brokerMs": 2.0793,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."vmMs": 0.0014,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."instructions": 4,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."hostCalls": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."pluginReportedMemory": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."managedBytes": 748488,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."allocatedBytes": 746400,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."workingSetBytes": 31977472,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."privateBytes": 10985472,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."peakWorkingSetBytes": 32256000,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."cpuMs": 93.75Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.},Zamknięcie struktury otwartej we wcześniejszych liniach.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."operation": "shutdown",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."ok": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."status": "Completed",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."type": "Unit",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."value": null,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."brokerMs": 0.3877,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."vmMs": 0.0016,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."instructions": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."hostCalls": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."pluginReportedMemory": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."managedBytes": 756712,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."allocatedBytes": 754600,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."workingSetBytes": 31985664,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."privateBytes": 10985472,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."peakWorkingSetBytes": 32256000,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."cpuMs": 93.75Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.}Zamknięcie struktury otwartej we wcześniejszych liniach.],Zamknięcie struktury otwartej we wcześniejszych liniach."processMemoryMeasuredByBroker": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."workingSetBytes": 31985664,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."privateBytes": 10985472,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."peakWorkingSetBytes": 32256000,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."cpuMs": 93.75Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach."summary": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."exitCode": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."killed": false,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."hostCalls": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."denials": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."peakCommitBytes": 11870208,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."log": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."[info] start: uprawnienie logs.own.write przyznane przez hosta"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.]Zamknięcie struktury otwartej we wcześniejszych liniach.}Zamknięcie struktury otwartej we wcześniejszych liniach.}Zamknięcie struktury otwartej we wcześniejszych liniach.],Zamknięcie struktury otwartej we wcześniejszych liniach."brokerAfterClose": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."memory": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."managedBytes": 603552,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."allocatedBytes": 1546400,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."workingSetBytes": 42528768,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."privateBytes": 14979072,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."peakWorkingSetBytes": 42528768,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."cpuMs": 203.125Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.},Zamknięcie struktury otwartej we wcześniejszych liniach."audit": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."entries": 15,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."denials": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."grantsIssued": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."denied": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach."exitCode": 0Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.Pusta linia oddziela fragmenty źródła.Pusta linia oddziela fragmenty źródła.
Diagnostyka i raporty testów
null
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
nullOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
Pochodzenie i integralność
KRET_LANGUAGE_KRETL.zip:KretL/Examples/INTERMEDIATE_PermissionsHandlersLimits/example.json
02_PLAYGROUND/EXAMPLES/KRETL-I01-PermissionsHandlersLimits.json
SHA-256 86CD5E15E8700F61774201493BD7708A952CB761D866EBF8794190EB4EA17ED2Materiały źródłowe do tego tematu
Przeczytaj powiązane rozdziały. Kod i kontrakty zachowano z importu; historia źródeł jest dostępna przy każdym rozdziale.
KRETL-I01-PermissionsHandlersLimits — Uprawnienia, komendy hosta, limity i izolacja
KRETL-I01-PermissionsHandlersLimits — Uprawnienia, komendy hosta, limity i izolacja
🇬🇧 English version below.
| Pole | Wartość |
|---|---|
| Technologia | KretL |
| Poziom | INTERMEDIATE |
| Klasyfikacja | RUNNABLE_LOCAL — Uruchamialny lokalnie (SDK, izolowany proces pluginu) |
| Playground | LOCAL_EXECUTE — lokalnie: wykonanie w KretStudio / SDK (publicznie: tylko statycznie) |
| SDK | 1.0.0-rc.3+kret.local.3 (kandydat lokalny, niepodpisany) |
| Wynik testu | TEST_RESULTS.json, rzeczywisty wynik: EXPECTED_OUTPUT.txt |
Co pokazuje
Manifest deklaruje uprawnienie wymagane (logs.own.write) i opcjonalne (kretdb.read), komendę hosta counter.add, limity pamięci i CPU, profil light, preferowaną izolację sandbox oraz deklarację obszaru danych runtimeData. Polityka hosta testowego przyznaje tylko logs.own.write — deklaracja nie jest przyznaniem.
Pliki
| Plik |
|---|
Script/Main.krs |
host-policy.json |
plugin.kretl |
Jak uruchomić
Katalog roboczy: katalog tego przykładu. kret oznacza <SDK>\Compiler\kret.exe, kretui-host — <SDK>\UiHost\kretui-host.exe. {DATA} / {OUT} to nowe, puste katalogi poza projektem. Wymagania: REQUIREMENTS.md.
kret check . --json— walidacjakret run . --policy host-policy.json --data {DATA} --invoke counter.add=[2,40]— start + wywołanie komendycounter.addz argumentami 2 i 40
Oczekiwany wynik
Wynik start = „gotowy”, wynik komendy = 42, w dzienniku wpis z log.info. Uprawnienie opcjonalne kretdb.read nie zostało przyznane i nie jest używane.
Najczęstszy błąd
Wywołanie komendy, której nie ma w bloku handlers — broker ją odrzuci, nawet gdy handler on … istnieje w kodzie.
Zaloguj się na konto użytkownika, aby zapisywać postęp i zakładki. Konta obsługi mogą czytać bez zapisu postępu. Logowanie →