Feature: Sandbox registration Scenario: Create a sandbox and receive an API key exactly once When an agent registers a sandbox named "peter-demo" with email "peter@openclaw.io" Then the response code is 201 And the response contains a sandbox id And the response contains an API key with prefix "apix_sb_" And the response contains tier "FREE" And the response contains a non-null expiresAt And the response contains _links.self And the response contains _links.services Scenario: Registration fails when name contains uppercase letters When an agent registers a sandbox named "Peter-Demo" with email "peter@openclaw.io" Then the response code is 400 Scenario: Registration fails when name is too short When an agent registers a sandbox named "ab" with email "peter@openclaw.io" Then the response code is 400 Scenario: Registration fails when name starts with a hyphen When an agent registers a sandbox named "-demo" with email "peter@openclaw.io" Then the response code is 400 Scenario: Registration fails when email is invalid When an agent registers a sandbox named "valid-name" with email "not-an-email" Then the response code is 400 Scenario: Duplicate name is allowed since names are display-only labels Given a sandbox named "duplicate-test" exists When an agent registers a sandbox named "duplicate-test" with email "other@example.com" Then the response code is 201