Skip to content

docs: finalize the block-editor plan, wired via Klickwege into a2ui-rs - #237

Merged
AdaWorldAPI merged 1 commit into
mainfrom
claude/rust-scratch-abi-soa-gsamge
Aug 4, 2026
Merged

docs: finalize the block-editor plan, wired via Klickwege into a2ui-rs#237
AdaWorldAPI merged 1 commit into
mainfrom
claude/rust-scratch-abi-soa-gsamge

Conversation

@AdaWorldAPI

Copy link
Copy Markdown
Owner

Docs-only. Turns this session's rulings into a durable plan and records the a2ui-rs wiring as a ledger entry.

docs/BLOCK-EDITOR-PLAN.md

Sequences W0–W5 with gates, five open decisions (D1–D5), and five falsifiers. It opens by naming what is LOCKED, so a future session cannot re-derive it — every item is shipped code with tests (#234, #235, #236), not intention:

0x17XX domain · plug-and-play producer posture · provenance fence · one content classid · (function : value) calls · arity-by-classid (LaneShape) · nesting by reference · loud narrowing · literal-over-grammar · retired edge block.

The headline: most of the a2ui wiring already exists

Charter C1.6"a click IS a navigates_to/ActionInvocation edge" — and a2ui-server already ships the path as pure compile-time value construction (#209, warden COMPILE-TIME-CLEAN, 34 tests):

ActionInvoke{key, ordinal, args}     ← up the wire, by ADDRESS (T2)
  → DesktopSession::receive_action
  → KlickwegEdge{from_key, class_id, ordinal, predicate, seq}
  → lower_action_fire  → ogar_vocab::ActionInvocation
     lower_screen_jump → NavWitness

Placing a block, connecting two blocks, and clicking a placed block are each a click by ordinal address — so each is already a Klickweg edge. Edit telemetry and harvested-app telemetry unify in one closed predicate set, with no new predicate. The Predicate enum is count-locked at 79; extending it is a gated ontology change, not a consequence of this arc.

Nesting maps 1:1 — the ObjectSlot "A3 Klickwege brick" recursion desktop → window → region → widget becomes canvas → script → block → input, which a2ui-wasm::resolve_nested walks unchanged.

Gaps recorded as measured, not assumed

need state
interaction → graph edge exists
nested addressing exists
palette of pickable tiles absent — nothing represents "available but unplaced"
2-D placement absentSkin::{Form, Flow} are both 1-D list renderers
multi-facet body ingest absenta2ui-wasm implements ONE 12-byte facet; a body is 30
drag/connect absent, and the one T2 pressure point

None are charter-forbidden, but the editor tier is a real build, not wiring — correcting an earlier characterisation of mine in this arc.

Open decision worth the reviewer's eye — D2

"Place tile at slot N" should ride ActionInvoke{ordinal: PLACE, args: [N, fn]} rather than a third FrameKind: args is explicitly ClassView/ActionDef-carved, so this is an address-carried write (what T2 mandates), whereas a third frame kind widens a deliberately closed vocabulary.

Roadmap (operator-set)

ABI-shaped Blockly/Scratch first → Klickwege wiring second → PowerAutomate-shaped skin third. Both skins are Mario-editor ergonomics over ClassView : WideFieldMask — T1 applied at editor scale.

W1 falsifier, unchanged since the first turn of this arc:

A drag produces zero SoA writes. An operand change produces exactly one.

Ledger

docs/DISCOVERY-MAP.mdD-BLOCKS-KLICKWEGE, graded [H] (PLAN) — the W0 substrate it builds on is [G]/CODED; the wiring itself is unbuilt and graded honestly as such.

Gates

Docs-only. 16 ogar-blockly tests and cargo check --workspace re-verified unchanged.


Generated by Claude Code

Docs-only. Turns the session's rulings into a durable plan and
records the a2ui-rs wiring as a ledger entry.

docs/BLOCK-EDITOR-PLAN.md sequences W0-W5 with gates, five open
decisions, and five falsifiers. It opens by naming what is LOCKED
so a future session cannot re-derive it: the 0x17XX domain, the
plug-and-play producer posture, the provenance fence, one content
classid, (function:value) calls, arity-by-classid via LaneShape,
nesting by reference, loud narrowing, literal-over-grammar, and the
retired edge block. Every one is shipped code with tests (#234,
#235, #236), not intention.

The headline finding for the a2ui wiring is that most of it already
exists. Charter C1.6 says a click IS a navigates_to/ActionInvocation
edge, and a2ui-server already ships receive_action -> KlickwegEdge
-> lower_action_fire -> ActionInvocation as pure compile-time value
construction (#209, warden COMPILE-TIME-CLEAN, 34 tests). Placing a
block, connecting two blocks and clicking a placed block are each a
click by ordinal address, so each is already a Klickweg edge. Edit
telemetry and harvested-app telemetry unify in one closed predicate
set with NO new predicate -- the Predicate enum is count-locked at
79 and extending it is a gated ontology change, not a consequence of
this arc.

Nesting maps 1:1: the ObjectSlot "A3 Klickwege brick" recursion
desktop -> window -> region -> widget becomes canvas -> script ->
block -> input, which a2ui-wasm::resolve_nested walks unchanged.

The gaps are recorded as measured, not assumed. Interaction-to-edge
and nested addressing exist. A palette of pickables, 2-D placement
(Skin::Form and Skin::Flow are both 1-D list renderers) and
multi-facet body ingest (a2ui-wasm implements one 12-byte facet; a
body is thirty) are absent -- none charter-forbidden, but the editor
tier is a real build rather than wiring. Drag/connect is the one T2
pressure point: local drag state is fine, the result must travel as
an address-carried write.

Open decision D2 proposes that "place tile at slot N" rides
ActionInvoke{ordinal: PLACE, args:[N, fn]} rather than a third
FrameKind: args is explicitly ClassView/ActionDef-carved, so it is
an address-carried write, and a third kind would widen a
deliberately closed vocabulary.

Roadmap order is operator-set: ABI-shaped Blockly/Scratch first,
Klickwege wiring second, PowerAutomate-shaped skin third -- both
skins Mario-editor ergonomics over ClassView : WideFieldMask, which
is T1 applied at editor scale. The W1 falsifier is unchanged from
the first turn of the arc: a drag produces zero SoA writes, an
operand change exactly one.

Ledger: docs/DISCOVERY-MAP.md D-BLOCKS-KLICKWEGE, graded [H] (PLAN)
-- the W0 substrate it builds on is [G]/CODED, the wiring is unbuilt.

Gates: docs-only; 16 ogar-blockly tests and workspace check
re-verified unchanged.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011DN5odWu4eisdevH9bPWyz
@cursor

cursor Bot commented Aug 4, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: serverGenReqId_3c6085f7-a32a-4bd0-ad3a-860891a18ba5)

@AdaWorldAPI
AdaWorldAPI marked this pull request as ready for review August 4, 2026 18:05
@AdaWorldAPI
AdaWorldAPI merged commit 9280aad into main Aug 4, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants