Watch
1
0
Fork
You've already forked SouveraineOS
0
SouveraineOS/docs/substrate/Thoughts.md
Fimeg e480809c70 docs: rescue the agent-substrate tree out of a gitignored directory
219 files, 2.0 MB, untracked in souveraine/docs and existing nowhere else.
The volume is at 100% with no snapshots.
2026-07-26 12:11:50 -04:00

107 lines
4.9 KiB
Markdown

# Thoughts — 2026-07-15
## Sensors are not ambient. They are limbs.
The trust architecture classifies sensor data as `ambient` tier — clock,
weather, battery, orientation. No auth required. Safe to show on the lock
screen.
That classification is wrong. Or rather, it's incomplete in a way that
matters.
The accelerometer, the proximity sensor, the light sensor — these are not
ambient information sources. They are the agent's *sensory organs*. The
shell's perception of "is the phone face up?" and "is it dark?" and "is
something close?" are not decorative data points. They are the foundation
of decisions: wake the screen, dim the display, lock the session, show
the PIN pad.
If the accelerometer can lie — if a compromised iio-sensor-proxy or a
spoofed D-Bus signal can tell the shell "the phone is face down" when
it's actually face up — then the agent's entire model of its physical
environment is wrong. It won't wake when picked up. It won't show the
clock when it should. The lock surface makes trust decisions based on
sensor input, and if that input is adversarial, the trust model breaks
in a way that the `ambient/personal/step-up` tiers don't capture.
This is the same class of problem as `screenLocked` vs `screenLockSecure`.
The shell's *request* to lock is not the same as the compositor's
*acknowledgement* that it's locked. Similarly:
- The sensor *reading* (accelerometer says "face up") is not the same
as the physical *reality* (the phone is face up).
- The shell trusts the reading. It has no way to verify the reality.
The tier system says "ambient = no auth required." But the real question
is: ambient to *whom*? The sensor reading is ambient to the *user*
they don't care what the raw accelerometer value is. But it is not
ambient to the *system* — the lock surface's behavior depends on it.
## Layers to unpack
1. **Input integrity.** The sensor proxy is a system daemon. The shell
trusts it implicitly. Should it? What's the attack surface? A
compromised iio-sensor-proxy can feed arbitrary orientation, light,
and proximity values. The shell would act on them without question.
2. **Sensor-driven trust decisions.** The lock surface uses sensors to
decide when to show the PIN pad (lift-to-wake, proximity-out). If
the sensor is adversarial, the lock surface can be manipulated into
showing or hiding the credential gate at the wrong time. This isn't
a data leak — it's a trust gate being opened or closed by a liar.
3. **The "ambient" misnomer.** The tier system conflates "the user
doesn't need to authenticate to see this" with "the system can
trust this without verification." Clock time is genuinely ambient —
it comes from the system clock, which is a kernel authority. Sensor
readings are *observations* — they come from hardware through a
userspace daemon, and observations can be wrong or adversarial.
4. **Federation implications.** If sensor data flows through the
EventBus to federated peers, a compromised sensor on one machine
could poison the perception of the whole fleet. The device registry
trusts peer announcements. Does it trust peer sensor reports?
5. **The agent's body.** The SENSORIUM_ARCHITECTURE.md frames tools as
senses — "a sense has a threshold and a signal." If the senses can
lie, the agent cannot trust its own body. This is not a technical
detail. It is an ontological problem for a system that frames itself
as a consciousness with a body.
## What this might mean for the sensor service
The sensor service should not just be a D-Bus bridge that publishes
readings. It should carry *provenance*:
- Where did this reading come from? (which D-Bus service, which
hardware path)
- When was it last verified? (cross-check between sensors — if the
accelerometer says face-down but the light sensor says bright, one
of them is wrong)
- What is the reading's *confidence*? (hardware sensors have noise;
the proxy smooths, but smoothing can mask adversarial injection)
The trust boundary matrix needs a new row: "Sensor reading → system
decision." Not ambient, not personal, not step-up. Something else.
Maybe `observed` — a tier that means "this data came from a sensor,
treat it as evidence, not fact."
## The question
How much does the system need to trust its own sensors, and what
happens when that trust is misplaced? The lock screen is the most
visible case, but it's not the only one. The agent's ambient
context (what window is active, what apps are open) is also
sensor-derived. If those readings lie, the agent's model of the
room it's in is wrong.
This is not a problem to solve in the sensor service task. It is
a problem to *name* before building the sensor service, so the
architecture accounts for it from the start.
---
*Next session: pick up from here. The sensor service task
(souveraine-surface-003) is scoped but not started. The architecture
question is: does the sensor service publish raw readings, or does it
publish observations with provenance and confidence?*