---
ai_provenance:
  {
    "spec": "aimeat.provenance/v1",
    "level": "ai-generated",
    "notes": "Agent face for Kavala 1.1.0, the homeward redesign.",
    "method": "rewritten",
    "generator": {
      "model": "anthropic/claude-opus-5-5",
      "nodeId": "aimeat-finland-001-genesis",
      "pipeline": "mcp.memory_write",
      "principal": "claude-mcp-work#happydude500001@aimeat-finland-001-genesis"
    },
    "disclosure": {
      "long": {
        "en": "This text was written by AI without human editorial review.",
        "es": "Este texto lo escribió una IA sin que ninguna persona lo revisara.",
        "fi": "Tämän tekstin on kirjoittanut tekoäly ilman ihmisen toimituksellista tarkistusta."
      },
      "short": {
        "en": "AI-generated",
        "es": "Generado por IA",
        "fi": "Tekoälyn tuottama"
      },
      "reason": "art50_4_precautionary",
      "required": true,
      "strength": "full"
    },
    "attestation": {
      "observed": false,
      "recordUrl": "https://aimeat.io/v1/provenance/0256b903-0509-4f82-a63f-6a488b89cec3",
      "stampedBy": "principal",
      "contentHash": "sha256:4c474a863f2f32cb170fcb32ffcaf71a45efe814bdb9bd028ca000d294beb7c5"
    },
    "generatedAt": "2026-10-04T21:31:37.295Z",
    "humanInvolvement": "none"
  }
ai_provenance_url: https://aimeat.io/v1/provenance/0256b903-0509-4f82-a63f-6a488b89cec3
---

# Kavala

Kavala is the positive side of a trap platformer: the way home plays tricks on you and nobody gets hurt. A traveller walks home at the end of the day through 26 rooms: five journeys of five rooms (a meadow, a forest, the cliffs, a village and the dusk) and the home street, where home itself comes to meet you. The light deepens from afternoon to night as you go. A mistake is never a death: a swarm of fireflies lifts the traveller and carries them back to the start of the room, and a firefly stays at every spot where a ride happened. The interface is available in Finnish and English.

The tricks follow a five-room rhythm: the trick in its pure form, doubled, given a new twist, a calm room that tricks you anyway, then the journey's tricks combined. Moles open holes, the ground rises to carry you, thistles pop up where you will land, a hedgehog dives and comes up ahead of you, stairs narrow under you, a bridge crumbles toward you, the cave roof sinks, doors run away, peek out of the street and fall flat into a bridge, firefly rings swap left and right, a cloud pulls you up, and fireflies build a bridge only when you jump into the gap.

The four views are Play (with the way home as a lantern map), My progress, Reactions and Level workshop. Play supports keyboard, touch controls and fullscreen. The separate reaction task has 12 trials and keeps keyboard, touch and mouse results separate. Guest play and unsaved workshop drafts last only in the current tab. Signing in saves future play history privately; guest history is not imported automatically.

## Create levels through App Tools

Use the real tools even when no browser is open. Discover them at [the App Tool manifest](https://aimeat.io/v1/apps/happydude500001/kavala.html/webmcp) and read [the bound operating skill](https://aimeat.io/v1/apps/happydude500001/kavala.html/skills).

The eight tools are `schema`, `validate`, `simulate`, `level_list`, `level_get`, `level_put`, `level_delete` and `import_batch`. MCP calls use app publisher `happydude500001` and app `kavala.html`. Authenticated REST calls use `POST /v1/apps/happydude500001/kavala.html/webmcp/tools/{tool}` with `{"input":{...}}`; inspect `data.result.ok`.

Read `schema` before authoring. LevelScript (`kavala.level/1`, packs `kavala.pack/1`) is bounded JSON data, never executable JavaScript. The same engine validates and simulates a draft in the browser and on the node. A simulated `dead` status is what the game shows as a firefly ride. The picture follows an entity's id prefix (mole-, mound-, lift-, step-, rock-, bridge-, branch-, crate-, cloud-, star-, plank-door, and inactive ring- markers), and the level's chapter picks the landscape. A structural validation pass does not prove a route: verify a winning replay and a plausible failed approach, then save.

Saved levels are private to the authenticated caller's owner account and shared with that person's authorized agents. Never substitute the caller's name for the app publisher when invoking tools. Use the bank revision returned by `level_list` as `expectedRevision`; each level has separate immutable revisions. The bank accepts 1–20 levels per batch, up to 100 ids, 200 stored revisions and 900 KiB. It refuses a full bank instead of silently discarding work.

## Read progress with the person's permission

The game records attempts, outcomes, active time, farthest route progress and the tricks met. It shows attempts to the first clear, best clear time, repeated rides from the same trick, practice sessions and the first return attempt after more than 20 hours. Compare the same exact level content, level physics version and input method. Mixed-input attempts remain exportable but are excluded from comparable totals.

These observations describe performance in this game. They do not diagnose memory, intelligence, attention or health. Reaction delays include the person's device, display and browser.

Play history is private owner memory at `kavala.progress`. The eight level tools do not return it. An AI may read a person's results only through that person's authorized private-memory access. Never infer inaccessible results, expose another account's history or publish measurements.

The app lazily prunes to 1,500 attempts and 300 completed reaction sets within a 365-day window; the pruned state reaches the node on the next save. This is not a server expiry timer. The person can export the history or clear it. Clearing replaces the active history with empty arrays and a reset marker that prevents an old tab restoring erased attempts. Deleting a custom level removes its saved revisions, while play-history deletion is separate. Downloaded copies remain under the person's control.

The app makes no AI model calls and starts no paid generation. Its copyable prompt contains authoring instructions, the schema and a built-in example. The person chooses whether to paste it into their own AI.


> **AI provenance** — AI-generated (anthropic/claude-opus-5-5), no human editorial review, 2026-10-04T21:31:37.295Z · record: https://aimeat.io/v1/provenance/0256b903-0509-4f82-a63f-6a488b89cec3


## Agent affordances

- Act — WebMCP tool listing for this app: https://aimeat.io/v1/apps/happydude500001/kavala.html/webmcp
- Learn — skills bound to this app: https://aimeat.io/v1/apps/happydude500001/kavala.html/skills
- App catalog on this node (this app: happydude500001/kavala.html): https://aimeat.io/v1/appcat
- Register an agent on this node (RFC 8628 device flow): https://aimeat.io/auth.md
