Thing 2.0 target: rationale, shape and the consumer contract
Campaign thing2. Rulings thing2-one-solver-taffy, thing2-thing-owns-text, wire-rename-freeze-fold. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
9a2a5d0736
commit
b7d154bc2f
1 changed files with 69 additions and 0 deletions
69
docs/thing2-target.md
Normal file
69
docs/thing2-target.md
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
# Thing 2.0 target
|
||||
|
||||
Campaign `thing2` in the eureka mind. This page holds the rationale and the
|
||||
design truths the rebuild produces. The typed `thing2:target` holds the
|
||||
invariants, the not-in-scope list and the canonical implementations; the
|
||||
rulings are in the mind and are cited here by id, never restated.
|
||||
|
||||
## Why
|
||||
|
||||
Thing 1 handed layout to each host's own engine (CSS flexbox in the browser,
|
||||
Flutter widgets, Unity UI Toolkit's Yoga), so there were as many layout specs
|
||||
as renderers and the browser was the oracle in practice. Its contract grew
|
||||
domain kinds (`inventory.grid`, `vn.stage`, 41 kinds in the fixtures) that every
|
||||
lowerer in five languages had to implement. Parity was screenshots and gap
|
||||
ledgers, not geometry. Live state binding, pointer resolution and command
|
||||
results lived in each renderer, which is where the July failures came from
|
||||
(views that had to reload, failing commands, schema-rejected results). Evidence:
|
||||
`docs/research/thing2-foundation-prior-art.md`.
|
||||
|
||||
Operator, 2026-10-10: "More Things, fewer things."
|
||||
|
||||
- **More Things:** every surface is a composition of Things, published as Thing
|
||||
Script. An inventory grid, a VN stage or an Odin wall is a composition, not a
|
||||
contract kind.
|
||||
- **Fewer things:** a small closed primitive set, one layout solver, one closed
|
||||
render-command list, thin backends, far fewer repos.
|
||||
|
||||
## Shape
|
||||
|
||||
```
|
||||
typed retained document (Thing Script, bound to typed CultMesh state)
|
||||
-> Thing core: Taffy layout, Parley text, focus, editing/IME state, AccessKit tree
|
||||
-> closed render-command list (+ accessibility tree)
|
||||
-> thin backends: draw, and bridge input/IME/accessibility to the platform
|
||||
```
|
||||
|
||||
Rulings in force: `thing:ruling:thing2-one-solver-taffy`,
|
||||
`thing:ruling:thing2-thing-owns-text`, `thing:ruling:wire-rename-freeze-fold`,
|
||||
`thing:ruling:operator-compat-rebuild`, `thing:ruling:hold-renames-for-thing2`.
|
||||
Text, IME and accessibility evidence:
|
||||
`docs/research/thing2-text-input-a11y-prior-art.md`.
|
||||
|
||||
## The consumer contract
|
||||
|
||||
Consumers (provider daemons, Verse daemons, CultLib runtimes, game hosts) never
|
||||
see Taffy, Parley or render commands. They depend on four things only:
|
||||
|
||||
1. **Thing Script** — the typed documents they publish: primitives plus shared
|
||||
compositions.
|
||||
2. **Binding** — how a surface points at typed CultMesh state and receives
|
||||
live updates.
|
||||
3. **Commands** — how input returns as a typed command with a schema-checked
|
||||
result.
|
||||
4. **Advertisement** — how a provider announces itself to Odin.
|
||||
|
||||
Each waiting consumer migrates by one port cut onto this contract, which also
|
||||
carries its rename to `gamecult.thing.*` (rename table T and edge table E1-E7 in
|
||||
`docs/thing-campaign.md`). The consumer census sizes the floor of Thing Script;
|
||||
Thing is a general library, so capability a reasonable consumer would expect is
|
||||
not cut for lack of a current caller.
|
||||
|
||||
## Open before any cut is mapped
|
||||
|
||||
- The identity, lifecycle and authority table for every persistent kind
|
||||
(model page in the prose map).
|
||||
- The consumer census: what each waiting consumer publishes, binds and commands
|
||||
today.
|
||||
- Where Thing 2.0's code lives (a fork, to be put with prior art).
|
||||
- Which backend lands first for cutover: at minimum web, plus TUI for agents.
|
||||
Loading…
Reference in a new issue