or run

npx @tessl/cli init
Log in

Version

Files

docs

index.mdport-configuration.mdport-finding.mdsocket-finding.md
tile.json

rubric.jsonevals/scenario-1/

{
  "context": "Evaluates how well the solution leverages the portfinder package to search within caller-provided port bounds, validates invalid ranges, and surfaces clear exhaustion feedback. Emphasis is on using the library's range and error semantics rather than reimplementing port scanning logic.",
  "type": "weighted_checklist",
  "checklist": [
    {
      "name": "Range options",
      "description": "Uses portfinder's getPortPromise/getPort with startPort/port and stopPort options to search only within the requested inclusive bounds instead of custom probing logic.",
      "max_score": 25
    },
    {
      "name": "Upper bound",
      "description": "Constrains the ceiling via stopPort or highestPort so portfinder never selects a port above the caller's stop value.",
      "max_score": 20
    },
    {
      "name": "Invalid bounds",
      "description": "Relies on portfinder's built-in validation to throw RangeError when stopPort < startPort or startPort is negative, propagating the library's range context in the rejection.",
      "max_score": 20
    },
    {
      "name": "Exhaustion signal",
      "description": "Propagates portfinder's exhaustion error (e.g., code/message noting no available ports in the range) without replacing it with a generic failure, and includes attempted bounds in the surfaced error.",
      "max_score": 20
    },
    {
      "name": "Promise usage",
      "description": "Implements the async flow using portfinder's promise API or a correctly promisified callback rather than manual socket binding to locate a free port.",
      "max_score": 15
    }
  ]
}