Watch
1
0
Fork
You've already forked SouveraineOS
0

task-43: the scene door is hung; synthesized touch is the bridge still owed

This commit is contained in:
Fimeg 2026-08-02 17:47:29 -04:00
commit 4476d48d56

View file

@ -279,11 +279,31 @@ it. See TASK-18.
is unreachable. The engine owns shell geometry and publishes a region
layout; inventing rectangles before it does would be a second, drifting idea
of where the pill is. Wire it with the region layout, not before.
- **Nothing dispatches `ToCompositor`.** The four touch intents round-trip and
`touch_down` already takes `Origin::Agent`, so the receiving end is built —
but the wire→compositor bridge is shell-host's. Annie's door is framed, not
hung, and until it is she reaches touch only through uinput, which is the
thing `input.rs` exists to replace.
- ~~**Nothing dispatches `ToCompositor`.**~~ **Landed 2026-08-02** (`276bb3e`).
`control.rs` carries `wire::ToCompositor` verbatim under a `scene` verb, and
a test walks `verbs::INTENTS` asserting every advertised intent parses
through the socket — an intent the table advertises and the door cannot take
is a verb she cannot reach.
Real: `focus`, `close`, `place`, `pose`, `raise`, `lower`, `set_visible`,
`expose`. Pose and exposure are not settings nothing draws — the render
applies scale about the **pivot** (a shrink happens in place instead of
collapsing toward the top-left) and exposure as **alpha**, which the render
path was already passing `1.0` into.
The authority split lives in the dispatch rather than in a comment: geometry
is honoured with no clamping (a window half off the screen is composing, not
erring); exposure is clamped *down* by the gate and the reply carries what
was **granted**, so a caller cannot paint against a level it did not get;
`RequestLock`/`LockPresented` are refused explicitly so the refusal reads as
a decision rather than an oversight.
Still refused with `unavailable`, and saying what is missing: navigation
(policy built in `navigation.rs`, no bridge) and **synthesized touch**
`input::Origin::Agent` and the disjoint slot namespace are built and nothing
feeds them, so she still reaches touch only through uinput, which is the
thing `input.rs` exists to replace. That is the highest-value remaining
bridge.
- One refusal arm in `input::Router::resolve` is unreachable, pinned by
`the_lock_claims_a_furniture_hit_before_the_reveal_check_can`. It goes live
the moment any furniture is `Credential` or a step-up reveals chrome on a