Skip to content

Commit 95a8f0f

Browse files
committed
Add controller operator profiles
1 parent 7e03051 commit 95a8f0f

1 file changed

Lines changed: 110 additions & 0 deletions

File tree

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
# Controller Operator Profiles
2+
3+
Operator profiles define what autonomous controllers may do under a given machine posture.
4+
5+
The profile is not a convenience setting. It is a sovereignty boundary: it determines whether background controllers may consume resources, touch local state, use network surfaces, or run while idle.
6+
7+
## Profile matrix
8+
9+
| Capability | Workstation | Investigation | Personal | Maintenance |
10+
|---|---:|---:|---:|---:|
11+
| Metadata indexing | budgeted | restricted | allowed | allowed |
12+
| Media analysis | restricted | blocked by default | allowed | allowed |
13+
| Cloud photo sync | explicit | blocked by default | allowed | allowed |
14+
| Filesystem traversal | budgeted | observed only | budgeted | allowed |
15+
| Peer wireless | explicit | blocked by default | allowed | explicit |
16+
| Network tunnels | explicit | explicit | allowed | explicit |
17+
| Application updaters | maintenance window | blocked by default | allowed | allowed |
18+
| Platform update | explicit | explicit | allowed | allowed |
19+
| Low-power network presence | explicit | blocked by default | allowed | explicit |
20+
| Private cloud compute | explicit | blocked by default | allowed | explicit |
21+
22+
## Workstation profile
23+
24+
Goal: stable development and daily work.
25+
26+
Defaults:
27+
28+
- Indexing is allowed only under budget.
29+
- Generated directories and high-churn build outputs should be excluded from indexing.
30+
- Media analysis is restricted.
31+
- Cloud sync is allowed only for declared paths or services.
32+
- Peer wireless is explicit rather than ambient.
33+
- Update work is scheduled into a maintenance window.
34+
35+
Required events:
36+
37+
- `ControllerBudgetObserved`
38+
- `ControllerBudgetExceeded`
39+
- `ControllerEnteredIdleWork`
40+
- `ControllerExitedIdleWork`
41+
42+
## Investigation profile
43+
44+
Goal: evidence preservation and minimal ambient mutation.
45+
46+
Defaults:
47+
48+
- Cloud/media analysis is blocked by default.
49+
- Metadata indexing is restricted or paused unless explicitly allowed.
50+
- Peer wireless and low-power network presence are blocked by default.
51+
- Network extensions and tunnels must be visible.
52+
- Raw outputs remain local and are summarized before they enter a repository.
53+
54+
Required events:
55+
56+
- `ControllerOpenedNetworkSurface`
57+
- `ControllerTouchedResourceClass`
58+
- `ControllerPolicyChanged`
59+
60+
## Personal profile
61+
62+
Goal: ordinary convenience with budget visibility.
63+
64+
Defaults:
65+
66+
- Cloud sync is allowed.
67+
- Media analysis is allowed.
68+
- Metadata indexing is allowed.
69+
- Background work is still budgeted and visible.
70+
- Budget excess produces user-visible explanation.
71+
72+
Required events:
73+
74+
- `ControllerBudgetObserved`
75+
- `ControllerBudgetExceeded`
76+
77+
## Maintenance profile
78+
79+
Goal: deliberate system maintenance.
80+
81+
Defaults:
82+
83+
- Updates may run.
84+
- Index rebuilds may run.
85+
- Filesystem maintenance may run.
86+
- Cloud repair jobs may run only if explicitly selected.
87+
- Profile has a start and end time.
88+
89+
Required events:
90+
91+
- `ControllerPolicyChanged`
92+
- `ControllerEnteredIdleWork`
93+
- `ControllerExitedIdleWork`
94+
95+
## Profile transition rule
96+
97+
A profile transition must be explicit, durable, and auditable. SourceOS must record:
98+
99+
- previous profile
100+
- new profile
101+
- actor that changed it
102+
- reason
103+
- timestamp
104+
- controllers whose effective capabilities changed
105+
106+
## Product requirement
107+
108+
A user should be able to answer this question at any moment:
109+
110+
> Which profile is active, which controllers gained authority from it, and what budget remains?

0 commit comments

Comments
 (0)