or run

npx @tessl/cli init
Log in

Version

Files

tile.json

rubric.jsonevals/scenario-10/

{
  "context": "Evaluates how well the solution leverages JupyterLab's workspace REST interface to capture, clone, and share layouts using the official client utilities. Emphasizes correct use of built-in connection helpers, workspace endpoints, and routing needed to persist and reopen layouts.",
  "type": "weighted_checklist",
  "checklist": [
    {
      "name": "Workspace fetch",
      "description": "Retrieves layouts through JupyterLab's workspace API (`GET /lab/api/workspaces/:id`) using the provided base URL/token via `@jupyterlab/services` helpers such as `ServerConnection.makeSettings` with `ServerConnection.makeRequest` or `WorkspaceManager.fetch`.",
      "max_score": 25
    },
    {
      "name": "Snapshot payload",
      "description": "Persists the API response shape directly (top-level `id` plus nested layout `data`) rather than inventing a schema, confirming reliance on the workspace payload returned by JupyterLab.",
      "max_score": 20
    },
    {
      "name": "Restore via PUT",
      "description": "Applies snapshots back to the server using the official `PUT /lab/api/workspaces/:id` route with the same auth-aware settings (`ServerConnection.makeRequest` or `WorkspaceManager.save`) instead of ad-hoc file copies.",
      "max_score": 25
    },
    {
      "name": "Clone id handling",
      "description": "When targeting a new workspace id, updates the payload's `id` before issuing the PUT so the cloned layout is saved under the new identifier recognized by JupyterLab.",
      "max_score": 15
    },
    {
      "name": "Shareable link",
      "description": "Builds a workspace URL using JupyterLab's routing (`<baseUrl>/lab/workspaces/<id>`) and package utilities like `PageConfig.getBaseUrl()` or ServerConnection settings rather than hardcoding hosts.",
      "max_score": 15
    }
  ]
}