blob: 9b2027e0457baaf26afaffd8812f4bf8ca0bd964 [file] [view]
# Computer Use Host Events Contract
This layer connects only events with a typed, attributable source.
## Connected producers
- Typed dispatch outcomes:
- `user_intervened` -> re-observe
- `screen_locked` -> locked
- `blocked_url` -> terminal URL block
- `outcome_unknown`, service unavailable, or service mismatch -> re-observe
- Executor service release:
- clears executor-local observations and keyboard ownership
- advances the corresponding Runtime session to re-observe
- Turn/session terminal events:
- synchronously clear Runtime, executor, and overlay ownership
## Deliberate gaps
- Maka does not infer physical user input from AX or DOM content changes.
- Maka does not claim a global physical-input producer until it has a reliable,
attributable macOS event source.
- Maka does not invoke Codex's signed `turn-ended` helper. That helper uses an
Apple Event lifecycle specific to the Codex native service, and helper process
exit is not proof that service cleanup completed.
- Runtime URL, lock, and intervention states require typed driver outcomes; raw
error-message matching is not an accepted producer.
- The current driver exposes no trustworthy intervention debounce deadline, so
a typed intervention advances directly to re-observe. The two-stage debounce
state remains reserved for a future attributable deadline producer.
- Maka currently binds targets by PID/window/content/page identity. The V10
reverse-engineered boundary is stronger: canonical app path plus the current
live process instance. Maka does not claim that boundary until the executor or
a native host API can provide an atomic, high-precision process identity.
## Verification
The cross-layer deterministic harness covers:
- bound target propagation;
- observation-bound presentation and dispatch;
- fresh post-action observation;
- duplicate and stale rejection;
- typed target-change cancellation;
- unknown outcome requiring re-observation;
- explicit session cleanup;
- private UI content omission from persisted tool text while current-turn model
projection retains the UI evidence needed for action.
Target/decoy execution, real process restart, persistence-level privacy,
Desktop terminal lifecycle, real macOS event production, and real-window
cumulative Electron verification remain separate release gates.