alter-runtime 0.3.1__tar.gz → 0.3.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/PKG-INFO +4 -4
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/README.md +3 -3
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/atlas/ledger.py +1 -1
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/daemon.py +2 -2
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/sdk/__init__.py +3 -3
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/sdk/client.py +3 -4
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/services/launchd/com.alter.runtime.plist.in +4 -8
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/subscribers/ceremony_echo.py +1 -1
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/subscribers/ebpf.py +1 -2
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/docs/schemas/README.md +4 -4
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/pyproject.toml +2 -2
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/.gitignore +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/LICENSE +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/__init__.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/adapters/__init__.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/adapters/claude_jsonl_watcher.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/adapters/git_watcher.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/adapters/household/__init__.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/adapters/household/_base.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/adapters/household/compost/__init__.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/adapters/household/compost/adapter.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/adapters/household/compost/storage.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/adapters/household/compost/tests/__init__.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/adapters/household/compost/tests/test_adapter.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/adapters/household/compost/tests/test_storage.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/adapters/household/compost/tests/test_traits.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/adapters/household/compost/traits.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/adapters/household/self_hoster/__init__.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/adapters/household/self_hoster/adapter.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/adapters/household/self_hoster/storage.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/adapters/household/self_hoster/tests/__init__.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/adapters/household/self_hoster/tests/test_adapter.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/adapters/household/self_hoster/tests/test_storage.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/adapters/household/self_hoster/tests/test_traits.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/adapters/household/self_hoster/traits.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/adapters/household/tapo_ecosystem/__init__.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/adapters/household/tapo_ecosystem/adapter.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/adapters/household/tapo_ecosystem/storage.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/adapters/household/tapo_ecosystem/tests/__init__.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/adapters/household/tapo_ecosystem/tests/test_adapter.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/adapters/household/tapo_ecosystem/tests/test_storage.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/adapters/household/tapo_ecosystem/tests/test_traits.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/adapters/household/tapo_ecosystem/traits.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/adapters/household/workshop_tools/__init__.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/adapters/household/workshop_tools/adapter.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/adapters/household/workshop_tools/storage.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/adapters/household/workshop_tools/tests/__init__.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/adapters/household/workshop_tools/tests/test_adapter.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/adapters/household/workshop_tools/tests/test_storage.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/adapters/household/workshop_tools/tests/test_traits.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/adapters/household/workshop_tools/traits.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/adapters/worktree_watcher.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/atlas/__init__.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/atlas/base.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/atlas/observations.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/atlas/schema.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/cap_cache.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/cli.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/clients/__init__.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/clients/token_usage_client.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/config.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/consent.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/floor_loop.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/floor_preflight.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/http_auth.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/notifiers/__init__.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/notifiers/desktop.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/service_install.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/services/__init__.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/services/systemd/alter-runtime.service.in +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/services/systemd/cf-access-env.conf.in +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/sockets/__init__.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/sockets/dbus.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/sockets/unix.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/subscribers/__init__.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/subscribers/active_sessions_cron_emitter.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/subscribers/active_sessions_do_publisher.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/subscribers/active_sessions_gc.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/subscribers/active_sessions_writer.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/subscribers/adapters_writer.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/subscribers/agent_frames.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/subscribers/bus.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/subscribers/cache_writer.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/subscribers/do_sse.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/subscribers/inbox_writer.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/subscribers/mcp_fallback.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/subscribers/presence_writer.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/subscribers/session_presence.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/subscribers/sse.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/subscribers/weave_intent_writer.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/update_loop.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/weave/__init__.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/weave/resolver.py +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/examples/awesomewm/README.md +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/examples/waybar/README.md +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/pypi-truealter/README.md +0 -0
- {alter_runtime-0.3.1 → alter_runtime-0.3.2}/pypi-truealter/pyproject.toml +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: alter-runtime
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.2
|
|
4
4
|
Summary: ~Alter Identity Runtime - local sovereign daemon for the continuous identity field. Subscribes to per-~handle Cloudflare Durable Objects, exposes Unix socket + D-Bus + CLI surfaces, falls back gracefully to direct MCP polling.
|
|
5
5
|
Project-URL: Homepage, https://truealter.com
|
|
6
6
|
Project-URL: Documentation, https://truealter.com/docs/alter-runtime
|
|
@@ -116,7 +116,7 @@ filing a public issue. Non-security bugs and feature requests: email
|
|
|
116
116
|
| 2 | 2b - Subscribers, Unix socket, D-Bus, git watcher | Shipped |
|
|
117
117
|
| 2 | 2c - systemd + launchd service units | Shipped |
|
|
118
118
|
| 2 | 2d - First pixel: CC hook + scripts upgrade | Shipped |
|
|
119
|
-
| 2 | 2e - eBPF subscriber (
|
|
119
|
+
| 2 | 2e - eBPF subscriber (reference impl in `alter-ebpf`) | Shipped |
|
|
120
120
|
| 3 | 3a - Cross-platform tray surfaces | Planned |
|
|
121
121
|
| 3 | 3b - Windows Service + `pam_alter` stub | Planned |
|
|
122
122
|
| 3 | 3c - PyPI release CI + signed binaries | Planned |
|
|
@@ -183,7 +183,7 @@ alter-runtime stop
|
|
|
183
183
|
- Git commits, branch switches, pushes (via `watchdog` on `.git/refs/heads/`)
|
|
184
184
|
- CC hook events (forwarded from `.claude/hooks/*.sh`)
|
|
185
185
|
- Shell command invocations (opt-in)
|
|
186
|
-
- eBPF kernel attestations (shipped; reference impl in `alter-ebpf
|
|
186
|
+
- eBPF kernel attestations (shipped; reference impl in `alter-ebpf`)
|
|
187
187
|
|
|
188
188
|
5. **Maintains a local cache** of your last-known-good field state so the first-paint
|
|
189
189
|
tilde warmth renders in <1 second, even offline. Per IFA's Five OS-Native Properties,
|
|
@@ -203,7 +203,7 @@ alter-runtime/
|
|
|
203
203
|
│ ├── cli.py # argparse entrypoint: init|start|stop|status|query|ingest|daemon
|
|
204
204
|
│ ├── sdk/
|
|
205
205
|
│ │ ├── __init__.py
|
|
206
|
-
│ │ └── client.py # AlterClient (
|
|
206
|
+
│ │ └── client.py # AlterClient (async identity MCP client)
|
|
207
207
|
│ ├── subscribers/ # (Wave 2)
|
|
208
208
|
│ │ ├── do_sse.py # primary - subscribes to handle-alter DO SSE
|
|
209
209
|
│ │ └── mcp_fallback.py # fallback - polls api.truealter.com/api/v1/mcp
|
|
@@ -48,7 +48,7 @@ filing a public issue. Non-security bugs and feature requests: email
|
|
|
48
48
|
| 2 | 2b - Subscribers, Unix socket, D-Bus, git watcher | Shipped |
|
|
49
49
|
| 2 | 2c - systemd + launchd service units | Shipped |
|
|
50
50
|
| 2 | 2d - First pixel: CC hook + scripts upgrade | Shipped |
|
|
51
|
-
| 2 | 2e - eBPF subscriber (
|
|
51
|
+
| 2 | 2e - eBPF subscriber (reference impl in `alter-ebpf`) | Shipped |
|
|
52
52
|
| 3 | 3a - Cross-platform tray surfaces | Planned |
|
|
53
53
|
| 3 | 3b - Windows Service + `pam_alter` stub | Planned |
|
|
54
54
|
| 3 | 3c - PyPI release CI + signed binaries | Planned |
|
|
@@ -115,7 +115,7 @@ alter-runtime stop
|
|
|
115
115
|
- Git commits, branch switches, pushes (via `watchdog` on `.git/refs/heads/`)
|
|
116
116
|
- CC hook events (forwarded from `.claude/hooks/*.sh`)
|
|
117
117
|
- Shell command invocations (opt-in)
|
|
118
|
-
- eBPF kernel attestations (shipped; reference impl in `alter-ebpf
|
|
118
|
+
- eBPF kernel attestations (shipped; reference impl in `alter-ebpf`)
|
|
119
119
|
|
|
120
120
|
5. **Maintains a local cache** of your last-known-good field state so the first-paint
|
|
121
121
|
tilde warmth renders in <1 second, even offline. Per IFA's Five OS-Native Properties,
|
|
@@ -135,7 +135,7 @@ alter-runtime/
|
|
|
135
135
|
│ ├── cli.py # argparse entrypoint: init|start|stop|status|query|ingest|daemon
|
|
136
136
|
│ ├── sdk/
|
|
137
137
|
│ │ ├── __init__.py
|
|
138
|
-
│ │ └── client.py # AlterClient (
|
|
138
|
+
│ │ └── client.py # AlterClient (async identity MCP client)
|
|
139
139
|
│ ├── subscribers/ # (Wave 2)
|
|
140
140
|
│ │ ├── do_sse.py # primary - subscribes to handle-alter DO SSE
|
|
141
141
|
│ │ └── mcp_fallback.py # fallback - polls api.truealter.com/api/v1/mcp
|
|
@@ -11,7 +11,7 @@ Honesty clause - this ledger is a SOFT SIGNAL, not a cryptographic audit.
|
|
|
11
11
|
Per substrate spec §4.3: the egress-capable parent daemon writes this ledger.
|
|
12
12
|
When the parent daemon is the attacker, the ledger is an honest-witness weakness
|
|
13
13
|
- the daemon can simply omit or rewrite entries. Meaningful external auditing
|
|
14
|
-
arrives when ``alter-ebpf``
|
|
14
|
+
arrives when ``alter-ebpf`` ships on-user-device and can witness
|
|
15
15
|
``bprm_check_security`` + network syscalls sourced from the daemon UID from
|
|
16
16
|
outside the daemon's control boundary.
|
|
17
17
|
|
|
@@ -373,7 +373,7 @@ async def run_daemon(config: DaemonConfig | None = None) -> None:
|
|
|
373
373
|
# state" file with a 72 h expiry. Shell-greeting consumers
|
|
374
374
|
# (alter-cli `alter room`, future menu greeting) read that
|
|
375
375
|
# file and render the echo iff still within the window.
|
|
376
|
-
# Per proposed-D-CUST-1 surface 21
|
|
376
|
+
# Per proposed-D-CUST-1 surface 21.
|
|
377
377
|
ceremony = CeremonyEchoWriter(config, session)
|
|
378
378
|
supervisor.register(ceremony)
|
|
379
379
|
event_bus.subscribe("identity.frame", ceremony.handle_raw_frame)
|
|
@@ -484,7 +484,7 @@ async def run_daemon(config: DaemonConfig | None = None) -> None:
|
|
|
484
484
|
|
|
485
485
|
supervisor.register(ClaudeJsonlWatcher(config, event_bus))
|
|
486
486
|
|
|
487
|
-
# --- Kernel attestation (Wave 5b
|
|
487
|
+
# --- Kernel attestation (Wave 5b) ---------------------------------
|
|
488
488
|
# The eBPF subscriber spawns the Rust ``alter-ebpf`` loader and
|
|
489
489
|
# republishes its exec stream onto ``kernel.attest.exec`` and
|
|
490
490
|
# ``local.signal``. It silently disables itself on hosts where the
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"""alter_runtime.sdk - Python SDK for ALTER's identity MCP server.
|
|
2
2
|
|
|
3
|
-
Exports ``AlterClient``, the async HTTP client
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
Exports ``AlterClient``, the async HTTP client for ALTER's identity MCP
|
|
4
|
+
server, packaged for the distribution layer (D-RT5 - the PyPI package is
|
|
5
|
+
``alter-runtime``, not
|
|
6
6
|
``alter-identity``, because the TypeScript npm package ``@alter/identity``
|
|
7
7
|
already claims that name).
|
|
8
8
|
"""
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
"""AlterClient - async JSON-RPC 2.0 client for ALTER's identity MCP server.
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Adapted from ALTER's internal MCP client with two changes:
|
|
4
4
|
|
|
5
|
-
1. **Class renamed**
|
|
6
|
-
|
|
7
|
-
remains in the backend for internal tooling.
|
|
5
|
+
1. **Class renamed** to ``AlterClient`` to match the public SDK surface
|
|
6
|
+
described in the plan and D-RT5.
|
|
8
7
|
|
|
9
8
|
2. **Dual-source discovery** - ``AlterClient.auto_discover()`` first tries
|
|
10
9
|
to reach the local daemon's Unix socket (once Wave 2 ships it) and falls
|
|
@@ -65,14 +65,10 @@
|
|
|
65
65
|
and LowPriorityIO further drops disk-IO priority so the daemon never
|
|
66
66
|
starves a foreground IDE / build that the operator is actively using.
|
|
67
67
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
except the Unix socket under Application Support, and uses
|
|
73
|
-
``allow-with-prompt`` for outbound HTTPS to api.truealter.com only.
|
|
74
|
-
Tracked at alter-runtime#sandbox-profile (TODO; out of scope for
|
|
75
|
-
this PR — the plist itself is the security floor pre-sandbox). -->
|
|
68
|
+
TODO(sandbox-profile): ship a sandbox-exec profile alongside this
|
|
69
|
+
template to further constrain the daemon's runtime surface. Tracked
|
|
70
|
+
at alter-runtime#sandbox-profile — out of scope here; the plist is
|
|
71
|
+
the pre-sandbox security floor. -->
|
|
76
72
|
<key>ProcessType</key>
|
|
77
73
|
<string>Background</string>
|
|
78
74
|
<key>LowPriorityIO</key>
|
|
@@ -28,7 +28,7 @@ daemon supervisor. Like InboxWriter, the supervisor will restart on
|
|
|
28
28
|
:meth:`run` exceptions but :meth:`handle_event` only ever logs and returns.
|
|
29
29
|
|
|
30
30
|
Refs:
|
|
31
|
-
* proposed-D-CUST-1
|
|
31
|
+
* proposed-D-CUST-1 - surface 21 (ceremony echo)
|
|
32
32
|
* embedded-messenger/05-design-synthesis.md - content_type taxonomy
|
|
33
33
|
"""
|
|
34
34
|
|
|
@@ -3,8 +3,7 @@
|
|
|
3
3
|
The Rust ``alter-ebpf`` binary (subcrate ``packages/alter-ebpf``) is the
|
|
4
4
|
userspace half of a BPF LSM program that observes ``bprm_check_security``
|
|
5
5
|
and emits one ``alter1``-shaped JSON envelope per line to stdout for every
|
|
6
|
-
exec on a uid the operator opted in to.
|
|
7
|
-
kernel-adjacent attestation surface.
|
|
6
|
+
exec on a uid the operator opted in to.
|
|
8
7
|
|
|
9
8
|
This subscriber is the bridge between that binary and the in-process
|
|
10
9
|
:class:`EventBus`. It:
|
|
@@ -19,7 +19,7 @@ Canonical schemas for files the daemon writes under `~/.local/share/alter-runtim
|
|
|
19
19
|
- **Field naming** - `snake_case` throughout.
|
|
20
20
|
- **Timestamps** - ISO 8601 UTC with `Z` suffix (e.g. `2026-05-12T14:23:00Z`).
|
|
21
21
|
- **Identity** - `handle` matches `^~[a-z0-9_-]+$`.
|
|
22
|
-
- **Provenance** - every record carries `provenance_class` from the canonical 6-value enum
|
|
22
|
+
- **Provenance** - every record carries `provenance_class` from the canonical 6-value provenance enum. D-OBS-1 / D-ATLAS-1 stream classes (e.g. `passive_local_document`) are valid where the StreamProvenanceClass enum at `the consent gateway` permits.
|
|
23
23
|
- **Consent** - every record carries `consent_tier` ∈ {1, 2, 3, 4} per D109 (`L1_MANUAL` / `L2_CATEGORY` / `L3_MANAGED` / `L4_AUTONOMOUS`).
|
|
24
24
|
- **Append-only** - never edit or delete records. Amend forward via `supersedes_id` chain when supported.
|
|
25
25
|
- **Versioning** - `version` is the producer-assigned monotonic dedup key; readers ignore older `version` values for the same `id`.
|
|
@@ -29,15 +29,15 @@ Canonical schemas for files the daemon writes under `~/.local/share/alter-runtim
|
|
|
29
29
|
|
|
30
30
|
## Wire envelope alignment
|
|
31
31
|
|
|
32
|
-
JSONL records mirror what arrives on the per-handle Durable Object SSE stream (`mcp.truealter.com/events/{handle}/stream`). The DO event envelope is defined at `
|
|
32
|
+
JSONL records mirror what arrives on the per-handle Durable Object SSE stream (`mcp.truealter.com/events/{handle}/stream`). The DO event envelope is defined at `the DO worker shared types`; the backend ingest envelope is defined by the identity-events producer. When local clients (alter-cli, widget, Android) originate a state change, they emit an `IngestEnvelope` to `/api/v1/org-alter/ingest`; the DO fans it back out on the SSE stream; the daemon writes it to the appropriate JSONL.
|
|
33
33
|
|
|
34
34
|
## SignalKind extensions
|
|
35
35
|
|
|
36
|
-
`
|
|
36
|
+
`the DO worker shared types` `SignalKind` union must include `presence_set`, `session_started`, `session_heartbeat`, `session_ended`, `adapter_status` for the DO to route these events.
|
|
37
37
|
|
|
38
38
|
## Identity-as-Inference compliance
|
|
39
39
|
|
|
40
|
-
Every record passes the consent gateway at `
|
|
40
|
+
Every record passes the consent gateway at `the consent gateway` against its `(QueryCategory × StreamProvenanceClass)` tuple. The five AGAINST-clauses (Session 51, 2026-04-13) apply:
|
|
41
41
|
|
|
42
42
|
1. Active state changes (`presence.jsonl`, `session_started`) → `provenance_class=active_declaration` or `active_composition`; server-side projection OK.
|
|
43
43
|
2. Per-record `provenance_class` declared. No record lands without it.
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "alter-runtime"
|
|
7
|
-
version = "0.3.
|
|
7
|
+
version = "0.3.2"
|
|
8
8
|
description = "~Alter Identity Runtime - local sovereign daemon for the continuous identity field. Subscribes to per-~handle Cloudflare Durable Objects, exposes Unix socket + D-Bus + CLI surfaces, falls back gracefully to direct MCP polling."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = { text = "Apache-2.0" }
|
|
@@ -85,7 +85,7 @@ slack = [
|
|
|
85
85
|
"slack-bolt>=1.18.0",
|
|
86
86
|
]
|
|
87
87
|
ebpf = [
|
|
88
|
-
# Wave 5+ - kernel-adjacent attestation
|
|
88
|
+
# Wave 5+ - kernel-adjacent attestation. The Rust subcrate
|
|
89
89
|
# will be called out to from the Python core when this extra is installed.
|
|
90
90
|
"bcc>=0.29.0; sys_platform == 'linux'",
|
|
91
91
|
]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/adapters/household/compost/__init__.py
RENAMED
|
File without changes
|
{alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/adapters/household/compost/adapter.py
RENAMED
|
File without changes
|
{alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/adapters/household/compost/storage.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/adapters/household/compost/traits.py
RENAMED
|
File without changes
|
{alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/adapters/household/self_hoster/__init__.py
RENAMED
|
File without changes
|
{alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/adapters/household/self_hoster/adapter.py
RENAMED
|
File without changes
|
{alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/adapters/household/self_hoster/storage.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/adapters/household/self_hoster/traits.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/services/systemd/alter-runtime.service.in
RENAMED
|
File without changes
|
{alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/services/systemd/cf-access-env.conf.in
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/subscribers/active_sessions_writer.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{alter_runtime-0.3.1 → alter_runtime-0.3.2}/alter_runtime/subscribers/weave_intent_writer.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|