You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[bug] RC: aether rc start needs operator-only device enrollment, so ordinary accounts cannot use remote viewing #300
During the #229 live journey, aether rc start refused with RC_NOT_ENROLLED until aether device enroll ran, and Cloud's POST /device/v1/enroll only admits accounts with users.is_devand the Supercluster objectives + invocation + continuity flags (get_invocation_principal → get_objectives_owner_id). A normal account gets 403 Supercluster Objective Runtime is not enabled for this account.
Expected
RC (an observer-only feature behind its own flags) should not depend on the operator-only SC-DEVICE-01 enrollment. Either RC gets its own owner-scoped device identity, or enrollment for RC is admitted by the RC flags.
Evidence
Live run 2026-10-06 14:02Z (403 for a non-operator account), 14:10Z (enrolled as an operator account). Refs #229.
RC now obtains a stable, owner-scoped, observer-only device label through the account-authenticated POST /remote/device-identity route. It requires the RC flags but does not require is_dev or Supercluster objectives/invocation/continuity enrollment.
aether rc start persists a local installation ID, resolves the RC label, then registers and attaches the host. A refused or unavailable identity stops before session registration.
The label is not a bearer credential. Host routes still bind the session to the authenticated account; command/control routes still require SC-DEVICE enrollment. Documentation now distinguishes the two identities.
Verification
Cloud: python -m pytest --confcutdir=tests/remote_session tests/remote_session/test_device_identity_route.py tests/remote_session/test_status_route.py tests/remote_session/test_control_routes.py -q --no-cov — 29 passed. Covers a normal-account host flow, stable and owner-separated labels, RC flag refusals, bad input, missing session, and unchanged control authorization.
Agent: npm run build — passed. node --test --test-isolation=none dist/test/rc_device_identity.test.js dist/test/rc_command.test.js dist/test/rc_lifecycle.test.js dist/test/rc_viewer_host.test.js — 114 passed, 0 failed, 0 skipped. Covers RC start without any SC enrollment API call, 403 stopping before registration, and stable/corrupt local identity handling.
Both worktrees were clean after merge; diff checks passed before commit.
Qualification limits
This is source and fixture verification. A deployed ordinary-account CLI-to-phone run has not been repeated after merge.
Cloud's two Vercel preview checks were still pending at merge. Agent GitHub Actions reported failures with zero executed steps (run 37527778675); those jobs supplied no test result. The PRs were merged with admin override on the strength of the focused local checks above.
Activity
docs(rc): record the #229 live CLI-to-phone viewer journey
docs(rc): point remote-viewing status at the recorded live journey
AetherAI3 commentedon Oct 6, 2026
Implemented and closed by Cloud PR #1944 (merge
323c56d) and Agent PR #313 (merge3b0dc18).What changed
POST /remote/device-identityroute. It requires the RC flags but does not requireis_devor Supercluster objectives/invocation/continuity enrollment.aether rc startpersists a local installation ID, resolves the RC label, then registers and attaches the host. A refused or unavailable identity stops before session registration.Verification
python -m pytest --confcutdir=tests/remote_session tests/remote_session/test_device_identity_route.py tests/remote_session/test_status_route.py tests/remote_session/test_control_routes.py -q --no-cov— 29 passed. Covers a normal-account host flow, stable and owner-separated labels, RC flag refusals, bad input, missing session, and unchanged control authorization.npm run build— passed.node --test --test-isolation=none dist/test/rc_device_identity.test.js dist/test/rc_command.test.js dist/test/rc_lifecycle.test.js dist/test/rc_viewer_host.test.js— 114 passed, 0 failed, 0 skipped. Covers RC start without any SC enrollment API call, 403 stopping before registration, and stable/corrupt local identity handling.Qualification limits