or run

npx @tessl/cli init
Log in

Version

Files

tile.json

rubric.jsonevals/scenario-3/

{
  "context": "Evaluates whether the solution leverages JupyterLab's multi-document workspace APIs to open documents via commands, arrange them with split panels, persist layout snapshots, and restore/focus them using the built-in shell and state services.",
  "type": "weighted_checklist",
  "checklist": [
    {
      "name": "Document commands",
      "description": "Primary and secondary files are opened through app.commands.execute('docmanager:open', ...) (or equivalent JupyterFrontEnd command) so they become main area widgets, rather than manual file loading or custom widgets.",
      "max_score": 20
    },
    {
      "name": "Console docking",
      "description": "A kernel-backed console widget is created via commands.execute('console:create', ...) (optionally linked to the primary file) and added to the main area through the shell instead of custom DOM.",
      "max_score": 15
    },
    {
      "name": "Split layout",
      "description": "Main area widgets are placed using app.shell.add/ILabShell.add with mode: 'split-right' for the secondary relative to the primary and mode: 'split-bottom' (or equivalent dock insert) for the console so all three panes show concurrently.",
      "max_score": 25
    },
    {
      "name": "Layout snapshot",
      "description": "app.shell.saveLayout() (ILabShell.saveLayout) is used to capture the workspace arrangement and the resulting layout object is stored via IStateDB.save or similar; restoration uses app.shell.restoreLayout(savedLayout) rather than manual geometry recreation.",
      "max_score": 25
    },
    {
      "name": "Reuse and focus",
      "description": "Existing widgets are reused via shell/widget tracking instead of duplicated, and focus is set with app.shell.activateById(primary.id) (or equivalent) after create/restore.",
      "max_score": 15
    }
  ]
}