Preserve the error code, current state, and IDs before making the smallest possible correction. Never copy access tokens, Cookies, private keys, or complete credentials into a ticket, chat, or screenshot.

The offline handbook opens with a blank content area

If navigation and the header are visible but the main content area is blank, the generated assets/content.js is usually missing, failed to load, or contains an empty content array. A complete offline package must include at least:

index.html
assets/app.js
assets/styles.css
assets/content.js
assets/screenshots/...
  1. Confirm that you did not copy only index.html.
  2. Confirm that assets/content.js exists and is not a zero-byte file.
  3. Extract the complete directory again, then open the index.html inside that directory.
  4. If it is still blank, open browser developer tools and check for content.js or CSP loading errors.

CLI installation and environment checks

Symptom/errorCauseAction
CLI_DIGEST_MISMATCHThe downloaded script does not match the SHA-256 supplied by the current trusted SkillStop. Download again from the bound URL and copy the digest exactly; never bypass verification
doctor returns action_requiredAt least one of SSH, ssh-keygen, the local loopback port, or a public key is unavailableInstall or enable each missing prerequisite according to the boolean fields; obtain approval before creating a key
SSH_KEY_REQUIREDNo usable public key existsAfter explicit approval, run oasn-sa-dev ssh-key ensure --create
SSH_KEY_EXISTSThe target private-key or public-key path already existsDo not overwrite it. Use a valid existing key or choose a new, explicit path
SSH_KEYGEN_REQUIREDThe system cannot find OpenSSH ssh-keygenInstall or enable the OpenSSH client, then rerun doctor

Browser sign-in and credential storage

Symptom/errorAction
LOGIN_TIMEOUTComplete browser authorization within the allowed time, confirm that security software is not blocking the local loopback port, and retry the original command
auth status is login_requiredRun the intended authenticated CLI 0.7.3 command—such as workspace sources/create/status/resume/connect, version webui-ports, or an allow-listed portal operation—and follow the browser sign-in prompt
credential_store=unavailableEnable Windows Credential Manager, macOS Keychain, or Linux Secret Service. The CLI will not fall back to a plaintext session file
auth logout reports server_status=unconfirmedEvaluate local deletion and server revocation separately. Check whether status is local_delete_failed, together with server_status and server_revoked

The Workspace never becomes ready

WORKSPACE_TIMEOUT

A timeout does not prove creation failed. The error includes workspace_id and last_status. Preserve that ID and continue waiting with the status command; do not immediately create another Workspace:

oasn-sa-dev workspace status --workspace-id <WORKSPACE_ID>

To adjust the bounded wait, use --timeout-seconds 30..3600, --poll-interval-seconds 1..30, and --login-timeout-seconds 60..600.

WORKSPACE_NOT_READY

The Workspace has entered failed, closed, published, cleanup_pending, or close_pending. Record the status and failure_code from the error, and do not continue with SSH/SCP.

WORKSPACE_RESPONSE_INVALID

An active status response is still missing webchat_url or expires_at. Preserve the Workspace ID and missing field for platform investigation; do not construct an address yourself. A status response is not expected to prove SSH. For SSH/SCP, run workspace connect with an existing local key and proceed only after ssh_binding_status=bound and ssh_verified=true. Preserve exact SSH_COMMAND_INVALID, SSH_CONNECTION_FAILED, or SSH_AUTHENTICATION_FAILED evidence rather than editing the returned command.

WebChat or integration testing fails

Publishing stalls or fails

Do not troubleshoot by guessing commands

Use the real CLI 0.7.3 command boundary

portal <operation>, workspace sources, workspace resume, version webui-ports, workspace create --version-id ID --fresh, and workspace create --version-id ID --source-version-id SOURCE_ID are implemented. Run oasn-sa-dev portal commands or the relevant --help instead of guessing parameters. Still absent are a public workspace close, a workspace publish command, and a generic file sync command; publishing is available through the website or the allow-listed portal publish operation. The portal is not raw URL/method passthrough, and the website form still has no WebUI-port field. Never bypass a missing public operation with an internal API.