Przejdź do treści

KRET LANGUAGE ACADEMY · DOKUMENTACJA ZE ŹRÓDEŁ

Pakowanie i analiza ograniczeń

ADVANCED30 minAnaliza / koncepcja
Postęp nauki 0 / 5
Zaloguj się na konto użytkownika, aby zachować postęp.

Czego się nauczysz

  • Prześledź źródła i wyjaśnij opisany kontrakt.
  • Przygotuj listę dowodów i blokad przed testem Core lub publikacją.
Wymagania wstępne
  • Kurs KretHello oraz kursy technologii wskazanych w karcie projektu.

Wyjaśnienie krok po kroku

Odczytaj zgodność, wymagane uprawnienia i status produkcyjny z karty, zanim przygotujesz paczkę dev ze źródłami. Nie zmieniaj root of trust ani uprawnień hosta na potrzeby ćwiczenia. Publikacja pozostaje osobnym zatwierdzanym procesem.

Materiał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.

BUILD_INSTRUCTIONS — KretNotes

BUILD_INSTRUCTIONS — KretNotes

Katalog roboczy / working directory: folder tego pluginu (zawiera src/). kret = <SDK>\Compiler\kret.exe z SDK 1.0.0-rc.3+kret.local.3 (lub pinned Vendor Core rc.3+kc-base-test610). Wszystkie polecenia poniżej zostały wykonane w tej rundzie — wyniki: TEST_RESULTS.json.

#Krok / StepPolecenie / Command
1Utworzenie projektu / createKopia engine/Plugins/KretNotes/Source + polityka fixture TestFixtures/isolated-sdk-policy.json. / Copy of the Core plugin source and its SDK fixture policy. Nowy projekt od zera / from scratch: kret new basic <katalog> --name KretNotes
2Kod / codesrc/plugin.kretl, src/Script/**.krs, src/Disk/Schema.kdb, src/Ui/*
3Sprawdzenie / checkkret check src --json
4Buildkret build src → src/Build/plugin.kbc, manifest.json
5Testy / testskret test src --json --policy examples/host-policy.json
5aUruchomienie lokalne / local runkret run src --policy examples/host-policy.json --data <nowy katalog> --invoke 'notes.save=["","0","Pierwsza notatka","Treść","test"]' --invoke 'notes.list=["","",""]'
6Paczka / packkret publish pack src --channel dev --include-sources -o package → package/LOCAL-KPL-NQTESAAA-1.0.0-dev.kpkg
7Weryfikacja / verifykret publish verify package/LOCAL-KPL-NQTESAAA-1.0.0-dev.kpkg --report package/verify-report.json

Uwagi / notes:

  • --include-sources jest wymagane dla KPM Core: Core kompiluje plugin ze źródeł i odrzuca paczkę z samym bytecode (source_package_required, STUDIO-R02). / Required for Core KPM.
  • Kanał dev: paczka niepodpisana (signature: SKIPPED, nie PASS). Brak podpisu produkcyjnego — ceremonia C1 nie odbyła się. / Unsigned dev package; no production signature exists.
  • host-policy.json nigdy nie trafia do .kpkg (lista dozwolonych KretPublish). / Never packed.
Otwórz cały rozdział ze źródłem →
COMPATIBILITY — KretNotes

COMPATIBILITY — KretNotes

Składnik / ComponentWersja / VersionStan / State
KretLkretl-1.0, manifestVersion "1.0"FROZEN_1_0
Języki / languagesKretL, KretS, KretDB, KretUI, KretStyle, KThemezob. rejestr / see registry (KRET_AI_KNOWLEDGE_BASE → LANGUAGE_REGISTRY.json)
Kret SDK1.0.0-rc.3+kret.local.3 (kandydat lokalny, niepodpisany)testy tej rundy / tested this round
Kret SDK (Core pinned)1.0.0-rc.3+kc-base-test610zgodny (to samo źródło + SFI-B01/T01)
KretStudio0.3.0-beta.2 + patch SFI (kopia testowa)Pack/test/run przez SDK; oryginał KretStudio (lokalna instalacja / local install) 0.2.0 ma SDK rc.2
Kret Engine / KretCore1.0.0-test.6.11-draft.1BLOCKED_KCS_D_KCS_01 (kretdb.* w Core)
compatibility w manifeściecore min 0.5.0 (1.0.0), api min 1.6ABI pluginów SDK 1.6
BytecodeKBC format 2—
SystemWindows 11 x64Linux/macOS: NOT_RUN
Otwórz cały rozdział ze źródłem →
03 — KretNotes

03 — KretNotes

PoleWartość
IdentyfikatorLOCAL-KPL-NQTESAAA (lokalny, rodzina KPL)
Wersja1.0.0
TechnologieKretL, KretS, KretDB, KretUI, KretStyle, KTheme
Stan przykładuRUNNABLE_LOCAL (SDK, izolowana baza testowa)
Stan w Kret Engine (Core)**BLOCKED_KCS_D_KCS_01 (kretdb.* w Core)**
Paczkapackage/LOCAL-KPL-NQTESAAA-1.0.0-dev.kpkg (dev, niepodpisana, ze źródłami)
PochodzenieKopia engine/Plugins/KretNotes/Source + polityka fixture TestFixtures/isolated-sdk-policy.json. / Copy of the Core plugin source and its SDK fixture policy.

Cel

Notatnik na KretDB: tworzenie, odczyt, edycja z kontrolą rewizji, usuwanie, wyszukiwanie, sortowanie; izolowana baza pluginu (4 MB, limit 1000 rekordów). Interfejs KretUI z KretStyle/KTheme. Dane wyłącznie przez nazwane zapytania i transakcje — plugin nie widzi SQL.

Struktura

ŚcieżkaZawartość
src/projekt SDK w oficjalnym układzie (plugin.kretl w katalogu głównym projektu, Script/, Disk/, Ui/, Tests/) — osobny folder manifest/ nie istnieje, bo SDK wymaga manifestu w katalogu projektu
tests/opis testów i surowe logi kroków (tests/logs/)
docs/architektura (Mermaid), pochodzenie źródeł
examples/polityka hosta testowego SDK (tylko lokalnie)
package/.kpkg + raport weryfikacji + SHA-256
screenshots/prawdziwe klatki renderera KretUI (kretui-host --self-test)
BUILD_INSTRUCTIONS.md, INSTALL_INSTRUCTIONS.mdpełny cykl: projekt → kod → check → build → test → pack → verify → KPM → instalacja Developer → start → aktualizacja → usunięcie
SECURITY_PERMISSIONS.md, COMPATIBILITY.mduprawnienia i zgodność wersji
TEST_RESULTS.jsonwyniki tej rundy (SDK; KPM w Core — jeśli wykonano)

Szybki start

kret check src --json
kret run src --policy examples/host-policy.json --data <nowy katalog> --invoke 'notes.save=["","0","Pierwsza notatka","Treść","test"]' --invoke 'notes.list=["","",""]'
Czytanie kodu linia po linii

Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.

  1. kret check src --jsonOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  2. kret run src --policy examples/host-policy.json --data <nowy katalog> --invoke 'notes.save=["","0","Pierwsza notatka","Treść","test"]' --invoke 'notes.list=["","",""]'Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.

Status języka nie nadaje uprawnień KCS ani prawa do Production.

Otwórz cały rozdział ze źródłem →
SECURITY_PERMISSIONS — KretNotes

SECURITY_PERMISSIONS — KretNotes

Zadeklarowane uprawnienia / declared permissions (src/plugin.kretl)

permissions { required { kretdb.open
 kretdb.read
 kretdb.write }
 optional {  } }
 lifecycle { start "Main.Start" timeout 5s
 shutdown "Main.Shutdown" timeout 3s }
 execution { primary "onDemand" }
 handlers { command "notes.list"
 command "notes.open"
 command "notes.new"
 command "notes.save"
 command "notes.autosave"
 command "notes.delete" }
}
Czytanie kodu linia po linii

Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.

  1. permissions { required { kretdb.openPoczątek nazwanego bloku; jego pola odczytaj w powiązanej referencji.
  2. kretdb.readOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  3. kretdb.write }Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  4. optional { } }Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.
  5. lifecycle { start "Main.Start" timeout 5sPoczątek nazwanego bloku; jego pola odczytaj w powiązanej referencji.
  6. shutdown "Main.Shutdown" timeout 3s }Odwołanie lifecycle do funkcji KretS; sprawdź nazwę i timeout.
  7. execution { primary "onDemand" }Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.
  8. handlers { command "notes.list"Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.
  9. command "notes.open"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  10. command "notes.new"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  11. command "notes.save"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  12. command "notes.autosave"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  13. command "notes.delete" }Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  14. }Zamknięcie struktury otwartej we wcześniejszych liniach.

Zasady / rules

  • Deklaracja ≠ przyznanie (KCS-PERM-3). Dostęp daje polityka hosta i KCS przy każdym wywołaniu (Security Broker). / Declaration is not a grant.
  • examples/host-policy.json to polityka hosta testowego SDK (allowProvisionalRisk tylko dla testów). Nigdy nie importuj jej do Core ani do danych użytkownika. / Test-host policy only; never import into Core.
  • Logika działa w osobnym procesie pluginu (Job Object, token ograniczony / AppContainer). Interfejs KretUI nie nadaje uprawnień i nie przechowuje sekretów. / Logic runs in a separate restricted process.
  • Status w Core / Core status: **BLOCKED_KCS_D_KCS_01 (kretdb.* w Core)**. D-KCS-01 pozostaje OPEN; uprawnienia PROVISIONAL nie są aktywowane w Production. / Not activated in Production.
  • Paczka: kanał dev, niepodpisana, z źródłami; nie zawiera kluczy, haseł ani polityki hosta (kontrola sekretów KretPublish). / Dev channel, unsigned, no keys or secrets.
Otwórz cały rozdział ze źródłem →
KretNotes — architektura / architecture

KretNotes — architektura / architecture

komendyHost: kret run / KretStudio / Kret EngineHost: kret run / KretStudio / Kret EngineSecurity Broker (KCS przy każdym wywołaniu)Security Broker (KCS przy każdym wywołaniu)Proces pluginu (Job Object, AppContainer)Proces pluginu (Job Object, AppContainer)Maszyna KBC 2 + weryfikatorMaszyna KBC 2 + weryfikatorKretLKretLKretSKretSKretDBKretDBKretUIKretUIKretStyleKretStyleKThemeKThemesrc/plugin.kretlsrc/plugin.kretlkretui-host (renderer, osobny proces)kretui-host (renderer, osobny proces)KretDB: baza pluginu należy do brokeraKretDB: baza pluginu należy do brokera
Statyczna architektura ze źródeł. Przerywane połączenia zachowują oryginalne ograniczenia i adnotacje. Kod nie jest wykonywany.
Opis tekstowy i źródło
  • Host: kret run / KretStudio / Kret Engine → Security Broker (KCS przy każdym wywołaniu)
  • Security Broker (KCS przy każdym wywołaniu) → Proces pluginu (Job Object, AppContainer)
  • Proces pluginu (Job Object, AppContainer) → Maszyna KBC 2 + weryfikator
  • src/plugin.kretl → Security Broker (KCS przy każdym wywołaniu)
  • kretui-host (renderer, osobny proces) → Security Broker (KCS przy każdym wywołaniu) · komendy
  • Security Broker (KCS przy każdym wywołaniu) → KretDB: baza pluginu należy do brokera
flowchart LR
  Host["Host: kret run / KretStudio / Kret Engine"] --> Broker["Security Broker (KCS przy każdym wywołaniu)"]
  Broker --> Proc["Proces pluginu (Job Object, AppContainer)"]
  Proc --> VM["Maszyna KBC 2 + weryfikator"]
  L0["KretL"]
  L1["KretS"]
  L2["KretDB"]
  L3["KretUI"]
  L4["KretStyle"]
  L5["KTheme"]
  Manifest["src/plugin.kretl"] --> Broker
  UI["kretui-host (renderer, osobny proces)"] -->|komendy| Broker
  Broker --> DB[("KretDB: baza pluginu należy do brokera")]

Pochodzenie / provenance: Kopia engine/Plugins/KretNotes/Source + polityka fixture TestFixtures/isolated-sdk-policy.json. / Copy of the Core plugin source and its SDK fixture policy.

Otwórz cały rozdział ze źródłem →
Architecture diagram

Architecture diagram

komendyHost: kret run / KretStudio / Kret EngineHost: kret run / KretStudio / Kret EngineSecurity Broker (KCS przy każdym wywołaniu)Security Broker (KCS przy każdym wywołaniu)Proces pluginu (Job Object, AppContainer)Proces pluginu (Job Object, AppContainer)Maszyna KBC 2 + weryfikatorMaszyna KBC 2 + weryfikatorKretLKretLKretSKretSKretDBKretDBKretUIKretUIKretStyleKretStyleKThemeKThemesrc/plugin.kretlsrc/plugin.kretlkretui-host (renderer, osobny proces)kretui-host (renderer, osobny proces)KretDB: baza pluginu należy do brokeraKretDB: baza pluginu należy do brokera
Statyczna architektura ze źródeł. Przerywane połączenia zachowują oryginalne ograniczenia i adnotacje. Kod nie jest wykonywany.
Opis tekstowy i źródło
  • Host: kret run / KretStudio / Kret Engine → Security Broker (KCS przy każdym wywołaniu)
  • Security Broker (KCS przy każdym wywołaniu) → Proces pluginu (Job Object, AppContainer)
  • Proces pluginu (Job Object, AppContainer) → Maszyna KBC 2 + weryfikator
  • src/plugin.kretl → Security Broker (KCS przy każdym wywołaniu)
  • kretui-host (renderer, osobny proces) → Security Broker (KCS przy każdym wywołaniu) · komendy
  • Security Broker (KCS przy każdym wywołaniu) → KretDB: baza pluginu należy do brokera
flowchart LR
  Host["Host: kret run / KretStudio / Kret Engine"] --> Broker["Security Broker (KCS przy każdym wywołaniu)"]
  Broker --> Proc["Proces pluginu (Job Object, AppContainer)"]
  Proc --> VM["Maszyna KBC 2 + weryfikator"]
  L0["KretL"]
  L1["KretS"]
  L2["KretDB"]
  L3["KretUI"]
  L4["KretStyle"]
  L5["KTheme"]
  Manifest["src/plugin.kretl"] --> Broker
  UI["kretui-host (renderer, osobny proces)"] -->|komendy| Broker
  Broker --> DB[("KretDB: baza pluginu należy do brokera")]
Otwórz cały rozdział ze źródłem →
Pochodzenie / provenance

Pochodzenie / provenance

Kopia engine/Plugins/KretNotes/Source + polityka fixture TestFixtures/isolated-sdk-policy.json. / Copy of the Core plugin source and its SDK fixture policy.

Dokumentacja wygenerowana przez eksport KretLanguageDocumentation (2026-11-01). Wszystkie polecenia z BUILD_INSTRUCTIONS.md zostały wykonane; wyniki w TEST_RESULTS.json.

Otwórz cały rozdział ze źródłem →
KretNotes — karta przykładowego pluginu

KretNotes — karta przykładowego pluginu

Status RUNNABLE_LOCAL oznacza uruchomienie lokalne przez SDK — to nie jest PRODUCTION_READY. Paczka .kpkg nie jest dostępna do publicznego pobrania.

Notatnik na KretDB: tworzenie, odczyt, edycja z kontrolą rewizji, usuwanie, wyszukiwanie, sortowanie; izolowana baza pluginu (4 MB, limit 1000 rekordów). Interfejs KretUI z KretStyle/KTheme. Dane wyłącznie przez nazwane zapytania i transakcje — plugin nie widzi SQL.

PoleWartość
NazwaKretNotes (KretNotes)
IDLOCAL-KPL-NQTESAAA
Wersja1.0.0
Zastosowanie / uwagiOgraniczony przez KretDB i D-KCS-01: instalacja w Core przechodzi, start kończy się odmową kretdb.open (zachowanie poprawne).
Technologie KretKretL, KretS, KretDB, KretUI, KretStyle, KTheme
WymaganiaSDK 1.0.0-rc.3+kret.local.3; Kret Engine 1.0.0-test.6.11-draft.1 (profil Developer); Windows 11 x64; .NET 10
Uprawnienia wymaganekretdb.open, kretdb.read, kretdb.write
Uprawnienia opcjonalnebrak
Status w SDKRUNNABLE_LOCAL
Status w CoreBLOCKED_KCS_D_KCS_01 (kretdb.* w Core)
Kod źródłowysrc/
BudowanieBUILD_INSTRUCTIONS.md
Instalacjatylko profil Developer (instrukcja wewnętrzna)
Zrzutyscreenshots/ui-dark.png, screenshots/ui-default.png
Testyeksport 8/8 PASS; ponownie 2026-11-01: PASS
Publiczne pobieranie.kpkg: NIEDOSTĘPNE; źródła: kandydat po zgodzie właściciela
Otwórz cały rozdział ze źródłem →

Ćwiczenie i sprawdzenie wiedzy

Przygotuj listę dowodów i blokad przed testem Core lub publikacją.

Szkic nie jest wysyłany na serwer i znika po opuszczeniu lekcji. Przed wyjściem możesz go skopiować.
Podpowiedzi
  • Najpierw wskaż plik, potem deklarację i jej użycie; porównaj z referencją źródłową poniżej.
Omówienie rozwiązania

Odpowiedź oprzyj na pokazanym kodzie i rozdziale źródłowym. Odczytaj zgodność, wymagane uprawnienia i status produkcyjny z karty, zanim przygotujesz paczkę dev ze źródłami. Nie zmieniaj root of trust ani uprawnień hosta na potrzeby ćwiczenia. Publikacja pozostaje osobnym zatwierdzanym procesem.

Które podsumowanie jest zgodne z lekcją?

To quiz o opisanym kontrakcie. Nie kompiluje kodu, nie potwierdza wykonania programu i nie przyznaje nagród.

Podsumowanie i następny krok

Odczytaj zgodność, wymagane uprawnienia i status produkcyjny z karty, zanim przygotujesz paczkę dev ze źródłami. Nie zmieniaj root of trust ani uprawnień hosta na potrzeby ćwiczenia. Publikacja pozostaje osobnym zatwierdzanym procesem.

Zaloguj się na konto użytkownika, aby zapisywać postęp i zakładki. Konta obsługi mogą czytać bez zapisu postępu. Logowanie →

Wybierz, co możemy zapamiętać w tej przeglądarce. Możesz zmienić decyzję w każdej chwili.

Polityka prywatności