or run

npx @tessl/cli init
Log in

Version

Files

tile.json

rubric.jsonevals/scenario-1/

{
  "context": "Evaluates how the solution uses @ice/plugin-icestark (framework mode) and @ice/stark to wrap the host router, discover micro apps asynchronously, and expose lifecycle state through the layout and status views. Scoring focuses entirely on correct use of the package APIs described in the spec.",
  "type": "weighted_checklist",
  "checklist": [
    {
      "name": "Framework config",
      "description": "Exports the host configuration via @ice/plugin-icestark's defineFrameworkConfig (or an equivalent FrameworkConfig object) rather than child mode so the plugin replaces the app router.",
      "max_score": 15
    },
    {
      "name": "Async getApps",
      "description": "Implements getApps as an async function that consumes appData (e.g., appData.token) to request https://example.local/apps?token=... and returns AppRoute-compatible entries for /dashboard and /admin including titles.",
      "max_score": 30
    },
    {
      "name": "AppRouter mapping",
      "description": "Uses @ice/stark's AppRouter with AppRoute components (or passes the getApps output directly into the plugin's AppRouter render path) so each discovered micro app is registered with its activePath and URL bundle.",
      "max_score": 20
    },
    {
      "name": "Base router fallback",
      "description": "Keeps the original Ice router reachable by adding an AppRoute (activePath=\"/\") that renders the base router or otherwise defers unmatched paths to the OriginalRouter that plugin-icestark injects.",
      "max_score": 15
    },
    {
      "name": "Layout telemetry",
      "description": "Provides a layout component via the layout option that reads pathname, appEnter, and appLeave from the framework props/context and renders them, matching the FrameworkContext data plugin-icestark supplies.",
      "max_score": 10
    },
    {
      "name": "Status components",
      "description": "Configures appRouter.ErrorComponent and appRouter.LoadingComponent (or equivalent) so the loading view appears during getApps and an error view is shown when getApps rejects while leaving routing intact.",
      "max_score": 10
    }
  ]
}