Skip to content

[bug] RC: aether rc start needs operator-only device enrollment, so ordinary accounts cannot use remote viewing #300

Closed

Description

@AetherAI3

What happened

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_dev and 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.

Activity

  1. AetherAI3 commented on Oct 6, 2026

    @AetherAI3
    OwnerAuthor

    Implemented and closed by Cloud PR #1944 (merge 323c56d) and Agent PR #313 (merge 3b0dc18).

    What changed

    • 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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions