# Public API baseline before extension work

Version 1.1.0. The kernel is unchanged at this snapshot. `module-hashes.json` records source identities.

* A component implements `capability()`, `negotiate(Context, parameters)`, and `realize(Context, Contract) -> Plan`. Leaves and composites use this protocol.
* `Capability` advertises tags, executable domains, offers, assumptions, adaptation, guarantees and locked inputs. `Contract` holds an envelope, oriented `Port`s, scoped `Grant`s, `Rule`s, decisions and reads.
* `Context` offers a read-only world-space `View`, local/world transforms, limits and scoped random streams. View provides states, owners, elevation with a height cap, actual support/water, contract/capability/port discovery and protection/clearance.
* `Plan` submits writes, `Child` and `Choice` components and typed relationships. `Binding` grants a named host/port verb within an optional restriction. No component receives the mutable scene store.
* `Scene.place/compose_choice/finalize/remove/regenerate` are atomic public operations. Inspection uses `inspect` and exact `cells`, with optional descendants/shared membership.
* Rules register with `@validator`. Built-in actual-geometry rules include support, clearance, routes, lighting, enclosure and preservation. Extension validators can read the tentative scene.
* Frames support integer translations and horizontal quarter turns. Continuous design geometry must voxelize before submitting effects.
* Paired Litematica/JSON transport preserves identities, rules, explicit block properties, NBT and world/export transforms. Reload requires registered extension validators. Generation itself uses portable Python and no filesystem or native geometry engine.

Probe policy: first implement diagonal circulation, curve-following boundaries and public-port connectors in `hearth_extensions`, without kernel edits. Record a concrete failing contract test before any general protocol change. This is a self-authored extension exercise, not an independent audit. Browser execution reported by the user is prior external evidence; this phase must not claim new browser execution unless actually run.
