# OpenKKnD — Local / Heavy Session Instruct **Tree:** `PATH[OpenKKnD]` → `$HOME/git/src/hacktivism/openkknd` **Product:** Pitchwell (original RTS greenfield) — **not** playable Godot `openkknd2` (TODO309) **Audience:** one local-capable agent session (any host tooling; vision OK when needed) **Updated:** 2026-09-14 (harness- and model-agnostic kickoff) This file is the **task SoT** for OpenKKnD work. It does **not** depend on a particular chat product (Grok TUI, Jan, Osaurus UI, …) or on a particular model id. The human picks the runtime/model; the agent follows the rules below. --- ## 0. Stop-line (always) - No Nintendo / C&C brand names; no KKnD assets or rips (**IP-FENCE**) - No live/prod login, no host mutation, no **other** repos without **Freigabe this session** - **Exception — this repo only:** after a successful commit on `hernani/openkknd`, **always `git push`** as `openkknd-agent` (see §4) - Kitchen + Bonfire/Lemmy publish freigabe already (STATUS); Castopod live still blocked (404) - Prefer **local** inference and zero-cloud automation; do not call paid/cloud frontier APIs unless the human explicitly lifts that for this session - **Do not pull, download, or start additional models** this stretch — use whatever is already selected/running; do not overload hosts. Optional orientation only: `$HOME/git/llm/llm-work-logs/grok-work-log-enc/BEST.md` (do not re-seed models from it) --- ## 1. Session boot (do first) 1. Confirm cwd / tree is `$HOME/git/src/hacktivism/openkknd` (or resolve via `python3 $HOME/git/llm/llm-configs/bin/path-lookup.py OpenKKnD`). 2. Read in order: `README.md` → `docs/IP-FENCE.md` → `kitchen/STATUS.md` → `kitchen/PLAYBOOK.md` → this file. 3. Before claiming game/smoke done: `./scripts/smoke/run_all.sh` → expect **RUN_ALL PASS**. Sticky facts to keep across turns/compacts: tree path · `STATUS=FLAMEWAR-PLATFORM-LOOP` · current `round` · smoke PASS/FAIL · `openkknd-agent` · work-log tip. Harness notes (optional, only if that tool exists in the session): local-only / Heavy mode if available; model switch only when the human asks. Ignore slash commands that are not present in your UI. --- ## 2. Runtime roles (no fixed model ids) Do **not** hard-code model names. Pick by **role** from whatever the human/session already has loaded: | Role | When | Constraint | |------|------|------------| | default / coding | most edits, docs, kitchen drafts | already-running local model | | shell / git | commits, patches, path lookups | local coder-capable if available; else same as default | | vision | asset / cinematic QA only | switch only when human asks; amanita / rabbithole Ollama RT if used | | tiny / smoke probe | short checks | any small local already up | **RT / Ollama runtime states** (if used at all): only **amanita** and **rabbithole**. Not firecuda, not deltoid for this work. Kitchen temps (if the stack exposes them): `kitchen/LLM.md` (talk **1.05** / patch **0.3–0.5**). Operator shortlists and catalog ids (bonsai, Jan, …) live outside this repo (`super-sparmodus`, host skills). This instruct stays valid if those change. --- ## 3. Work-log (mandatory, own tree) **SoT:** `$HOME/git/llm/llm-work-logs/openkknd-work-log-enc` (git-crypt `**`; cleartext README/INDEX only). Schema order (from credit-enc RULES §2): title → Menschenaufwand → Aufgabe → Ergebnis → Guthaben → Statistik → Methodik → Offen. Statistik: Git/Dateien, Bytes, Kommandos, Webabrufe, Gesehen, Geschrieben, Git-Geschichte. Unlock/sign with agent FPR `F3EA2FB493FC3F5E627B4AD6EEBD77CC3686B26A` (also Hernâni). Never put secrets in cleartext work-log files. --- ## 4. Git / push / Forgejo agent | Item | Rule | |------|------| | Commit | Prefer `local-llm-git-worker.py` / session commit helper when available; **never push from the commit worker** | | Author | Model commits: `GIT_AUTHOR_NAME=local-model/` · `GIT_AUTHOR_EMAIL=local-model+@openkknd.agent.local` (api-id = runtime model id). **Not** `hernani`, not bare `openkknd-agent`. Author ≠ push-auth | | Dialect | OpenKKnD: `docs:`, `kitchen:`, `sim:`, `flamewar:` (§0.27) | | Remote | `ssh://git@git.hacktivism.ch:9200/hernani/openkknd.git` (private) | | Push | **Always** after successful commit on **this** repo. No mass multi-tree push. Other repos stay Freigabe-gated. | | Agent user | Forgejo **`openkknd-agent`** — collaborator **write** on `hernani/openkknd` only; signed commits via Sequoia/GPG FPR above | | Agent push how | Prefer HTTPS as agent: token in `…/openkknd-agent/access-token.txt` (scopes write:repository). No agent SSH key yet (unlike combo-bot). Laptop SSH `:9200` currently authenticates as **hernani** — OK for owner push; for agent identity use HTTPS+token. | | Agent secrets | `$HOME/git/admin-logs/local/koopa-admin-secrets-enc/koopa/home-hernani/koopa-forgejo/agents/` (`users.env` + `openkknd-agent/`) — **never print PW/token** | Game goal under Freigabe stretches: keep foundation toward a **startable** Pitchwell / KKnD*-style clone (original assets only). --- ## 5. Parent TODO + what is open **Parent TODO:** **TODO=356** (`openkknd-heavy-flamewar-r12`) · **REF:** `REF356-openkknd-heavy-flamewar-r12` · tip **k=319** unchanged. Combo with merchant strings: **TODO=355** + **TODO=356** (spec `…,355,356`). `OPEN-2026-09-05-pitchwell-kitchen.md` = **DONE_CLOSE**. Live kitchen **STATUS:** `FLAMEWAR-PLATFORM-LOOP` · stop at **≥12** (read `round` from disk — do not invent). **Stall locks (2026-09-14):** 1. After a completed triad for round **r**, **yes** bump `STATUS.round` to **r** on disk before claiming progress. 2. **No** new milestones beyond R→≥12 / DONE|GIVE_UP. 3. Triad template: **ACTIVITY** append + outbox `kitchen/outbox/flamewar/*-r{r}-*` + **AGENT_LOG** line + **STATUS** update. 4. **Verify** `kitchen/STATUS.md` on disk before any round claim. Useful clusters: flamewar R3→≥12, Castopod draft-only while 404, outbox drafts, docs/assets hygiene, smoke after game edits, startable sim foundation. --- ## 6. TODO clusters (pick one per stretch) ### A — Kitchen / flamewar / platform loop (default) - Advance `FLAMEWAR-PLATFORM-LOOP` rounds **3 … ≥12** - Voices: F1 `@copyleft-crucible`, F2 `@permissive-prickle` (+ kitchen P* per PLAYBOOK) - Append `kitchen/ACTIVITY.md`; draft → `kitchen/outbox/flamewar/`; publish only freigegebene channels - Update `kitchen/STATUS.md` + `kitchen/AGENT_LOG.md` every turn - Castopod: drafts only while site/API 404 ### B — Game / docs / IP-FENCE / economy - `docs/GAMEPLAY.md`, `FACTIONS.md`, `IP-FENCE.md` - `game/sim/` + `scripts/smoke/economy_smoke.py` - After edits: `./scripts/smoke/run_all.sh` → **RUN_ALL PASS** ### C — Assets / cinematics - Original / CC only; briefings ≥1280×720; vision model for QA when human enables it - No third-party game asset dumps ### D — Outbox publish (Freigabe-gated) - Bonfire / Lemmy: freigabe kitchen fire — use live URLs from STATUS - Forgejo drafts in outbox unless Freigabe commit - Never invent Lemmy/Bonfire URLs ### E — Tooling / smoke / git hygiene - Keep `scripts/smoke/*` green - Path resolve: `python3 $HOME/git/llm/llm-configs/bin/path-lookup.py OpenKKnD` - Work-log entry after meaningful stretches --- ## 7. Suggested work order (one session) 1. Boot (§1); confirm tree + STATUS `round` 2. Read STATUS/PLAYBOOK; note last live post IDs 3. **Cluster A** or **B** (startable foundation) — one stretch 4. Re-run smoke if B/E touched; fence-clean before publish 5. Publish only freigegebene channels; Castopod stays draft 6. Append **openkknd-work-log-enc** entry; STATUS + AGENT_LOG 7. End: Freigabe commit if asked; then **always push** this repo as `openkknd-agent` (§4) --- ## 8. Key paths | Path | Role | |------|------| | `kitchen/STATUS.md` | Loop state, round, freigabe, live URLs | | `kitchen/PLAYBOOK.md` | Channels + play order | | `kitchen/ACTIVITY.md` | Append-only kitchen voices | | `kitchen/AGENT_LOG.md` | Turn log | | `docs/IP-FENCE.md` | Allowed / forbidden | | `scripts/smoke/run_all.sh` | Headless + fence + economy | | `$HOME/git/llm/llm-work-logs/openkknd-work-log-enc` | Own work-log (git-crypt) | | `…/koopa-forgejo/agents/openkknd-agent/` | Agent GPG + token (enc secrets) | --- ## 9. Done when - Next flamewar round(s) drafted + logged (toward ≥12), **or** Cluster B/C/E with **RUN_ALL PASS** / clearer startable foundation - STATUS/AGENT_LOG + work-log match reality (no invented live URLs) - Stop-line held; this-repo push done after commit; no extra models loaded by the agent --- ## 10. Model kickoff (paste as first user line) Harness- and model-agnostic — paste into whatever session is already on a local model: ```text OpenKKnD local session: read HEAVY-SESSION.md then kitchen/STATUS.md + PLAYBOOK.md. Tree $HOME/git/src/hacktivism/openkknd (Pitchwell; not openkknd2). IP-FENCE. No new model pulls; no other-repo/host mutation without Freigabe. After commit on hernani/openkknd always push as openkknd-agent. Work-log openkknd-work-log-enc. Prefer local tools; no cloud frontier APIs unless human lifts that. Smoke ./scripts/smoke/run_all.sh before claiming game done. Parent TODO=356 (REF356). Continue STATUS FLAMEWAR-PLATFORM-LOOP toward round ≥12 or advance startable sim foundation — pick one cluster and execute. Author=local-model/; always push as openkknd-agent. ```