KRET LANGUAGE ACADEMY · DOKUMENTACJA ZE ŹRÓDEŁ
Pakowanie i analiza ograniczeń
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 / Step | Polecenie / Command |
|---|---|---|
| 1 | Utworzenie projektu / create | Kopia 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 |
| 2 | Kod / code | src/plugin.kretl, src/Script/**.krs, src/Disk/Schema.kdb, src/Ui/* |
| 3 | Sprawdzenie / check | kret check src --json |
| 4 | Build | kret build src → src/Build/plugin.kbc, manifest.json |
| 5 | Testy / tests | kret test src --json --policy examples/host-policy.json |
| 5a | Uruchomienie lokalne / local run | kret run src --policy examples/host-policy.json --data <nowy katalog> --invoke 'notes.save=["","0","Pierwsza notatka","Treść","test"]' --invoke 'notes.list=["","",""]' |
| 6 | Paczka / pack | kret publish pack src --channel dev --include-sources -o package → package/LOCAL-KPL-NQTESAAA-1.0.0-dev.kpkg |
| 7 | Weryfikacja / verify | kret publish verify package/LOCAL-KPL-NQTESAAA-1.0.0-dev.kpkg --report package/verify-report.json |
Uwagi / notes:
--include-sourcesjest 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.jsonnigdy nie trafia do.kpkg(lista dozwolonych KretPublish). / Never packed.
COMPATIBILITY — KretNotes
COMPATIBILITY — KretNotes
| Składnik / Component | Wersja / Version | Stan / State |
|---|---|---|
| KretL | kretl-1.0, manifestVersion "1.0" | FROZEN_1_0 |
| Języki / languages | KretL, KretS, KretDB, KretUI, KretStyle, KTheme | zob. rejestr / see registry (KRET_AI_KNOWLEDGE_BASE → LANGUAGE_REGISTRY.json) |
| Kret SDK | 1.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-test610 | zgodny (to samo źródło + SFI-B01/T01) |
| KretStudio | 0.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 / KretCore | 1.0.0-test.6.11-draft.1 | BLOCKED_KCS_D_KCS_01 (kretdb.* w Core) |
compatibility w manifeście | core min 0.5.0 (1.0.0), api min 1.6 | ABI pluginów SDK 1.6 |
| Bytecode | KBC format 2 | — |
| System | Windows 11 x64 | Linux/macOS: NOT_RUN |
03 — KretNotes
03 — KretNotes
| Pole | Wartość |
|---|---|
| Identyfikator | LOCAL-KPL-NQTESAAA (lokalny, rodzina KPL) |
| Wersja | 1.0.0 |
| Technologie | KretL, KretS, KretDB, KretUI, KretStyle, KTheme |
| Stan przykładu | RUNNABLE_LOCAL (SDK, izolowana baza testowa) |
| Stan w Kret Engine (Core) | **BLOCKED_KCS_D_KCS_01 (kretdb.* w Core)** |
| Paczka | package/LOCAL-KPL-NQTESAAA-1.0.0-dev.kpkg (dev, niepodpisana, ze źródłami) |
| Pochodzenie | Kopia 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żka | Zawartość |
|---|---|
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.md | pełny cykl: projekt → kod → check → build → test → pack → verify → KPM → instalacja Developer → start → aktualizacja → usunięcie |
SECURITY_PERMISSIONS.md, COMPATIBILITY.md | uprawnienia i zgodność wersji |
TEST_RESULTS.json | wyniki 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.
kret check src --jsonOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.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.
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.
permissions { required { kretdb.openPoczątek nazwanego bloku; jego pola odczytaj w powiązanej referencji.kretdb.readOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.kretdb.write }Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.optional { } }Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.lifecycle { start "Main.Start" timeout 5sPoczątek nazwanego bloku; jego pola odczytaj w powiązanej referencji.shutdown "Main.Shutdown" timeout 3s }Odwołanie lifecycle do funkcji KretS; sprawdź nazwę i timeout.execution { primary "onDemand" }Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.handlers { command "notes.list"Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.command "notes.open"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.command "notes.new"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.command "notes.save"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.command "notes.autosave"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.command "notes.delete" }Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}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.jsonto polityka hosta testowego SDK (allowProvisionalRisktylko 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.
KretNotes — architektura / architecture
KretNotes — architektura / architecture
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.
Architecture diagram
Architecture diagram
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
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.
KretNotes — karta przykładowego pluginu
KretNotes — karta przykładowego pluginu
StatusRUNNABLE_LOCALoznacza uruchomienie lokalne przez SDK — to nie jestPRODUCTION_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.
| Pole | Wartość |
|---|---|
| Nazwa | KretNotes (KretNotes) |
| ID | LOCAL-KPL-NQTESAAA |
| Wersja | 1.0.0 |
| Zastosowanie / uwagi | Ograniczony przez KretDB i D-KCS-01: instalacja w Core przechodzi, start kończy się odmową kretdb.open (zachowanie poprawne). |
| Technologie Kret | KretL, KretS, KretDB, KretUI, KretStyle, KTheme |
| Wymagania | SDK 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 wymagane | kretdb.open, kretdb.read, kretdb.write |
| Uprawnienia opcjonalne | brak |
| Status w SDK | RUNNABLE_LOCAL |
| Status w Core | BLOCKED_KCS_D_KCS_01 (kretdb.* w Core) |
| Kod źródłowy | src/ |
| Budowanie | BUILD_INSTRUCTIONS.md |
| Instalacja | tylko profil Developer (instrukcja wewnętrzna) |
| Zrzuty | screenshots/ui-dark.png, screenshots/ui-default.png |
| Testy | eksport 8/8 PASS; ponownie 2026-11-01: PASS |
| Publiczne pobieranie | .kpkg: NIEDOSTĘPNE; źródła: kandydat po zgodzie właściciela |
Ć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.
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 →