evals
scenario-1
scenario-2
scenario-3
scenario-4
scenario-5
scenario-6
scenario-7
{
"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
}
]
}